39 lines
1.0 KiB
C++
39 lines
1.0 KiB
C++
#include <common/windows.hpp>
|
|
#include <com/factory.hpp>
|
|
#include <test/inproc.hpp>
|
|
#include <common/console.hpp>
|
|
|
|
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("<DllGetClassObject>");
|
|
*ppv=0;
|
|
return sClassFactory.QueryInterface(riid,ppv);
|
|
}
|
|
|
|
STDAPI DllCanUnloadNow(void)
|
|
{
|
|
sWinConsole.writeLine("<DllCanUnloadNow>");
|
|
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("<Process attach.>");
|
|
break;
|
|
case DLL_PROCESS_DETACH :
|
|
sWinConsole.writeLine("<Process detach.>");
|
|
sWinConsole.read();
|
|
break;
|
|
}
|
|
return TRUE;
|
|
}
|