#include #include #include #include DLLServer sDLLServer; Console sWinConsole(Console::ConsoleType(Console::Write|Console::Read),true); InProcServerDemoInstantiator inProcServerDemoInstantiator; ClassFactory sClassFactory(sDLLServer,sWinConsole); STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid,void **ppv) { sWinConsole.writeLine(""); *ppv=0; return sClassFactory.QueryInterface(riid,ppv); } STDAPI DllCanUnloadNow(void) { sWinConsole.writeLine(""); return (0==sDLLServer.getRefCount()&&0==sDLLServer.getLockCount()?S_OK:S_FALSE); } BOOL _stdcall DllMain(HINSTANCE /*hInstance*/,DWORD reasonCode,LPVOID /*lpvReserved*/) { switch(reasonCode) { case DLL_PROCESS_ATTACH : sClassFactory.setInstantiator(&inProcServerDemoInstantiator); sWinConsole.writeLine(""); break; case DLL_PROCESS_DETACH : sWinConsole.writeLine(""); sWinConsole.read(); break; } return TRUE; }