home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / com / connect / server / connect.cpp < prev    next >
C/C++ Source or Header  |  1998-04-02  |  2KB  |  74 lines

  1. // Connect.cpp : Implementation of DLL Exports.
  2.  
  3. // You will need the NT SUR Beta 2 SDK or VC 4.2 in order to build this 
  4. // project.  This is because you will need MIDL 3.00.15 or higher and new
  5. // headers and libs.  If you have VC 4.2 installed, then everything should
  6. // already be configured correctly.
  7.  
  8. #include "preconn.h"
  9. #include "connres.h"
  10. #include "initguid.h"
  11. #include "Connect.h"
  12. #include "Random.h"
  13.  
  14. #define IID_DEFINED
  15. #include "Connect_i.c"
  16.  
  17.  
  18. CComModule _Module;
  19.  
  20. BEGIN_OBJECT_MAP(ObjectMap)
  21.     OBJECT_ENTRY(CLSID_CoRandom, CRandom)
  22. END_OBJECT_MAP()
  23.  
  24. /////////////////////////////////////////////////////////////////////////////
  25. // DLL Entry Point
  26.  
  27. extern "C"
  28. BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID /*lpReserved*/)
  29. {
  30.     if (dwReason == DLL_PROCESS_ATTACH)
  31.     {
  32.         _Module.Init(ObjectMap, hInstance);
  33.         DisableThreadLibraryCalls(hInstance);
  34.     }
  35.     else if (dwReason == DLL_PROCESS_DETACH)
  36.         _Module.Term();
  37.     return TRUE;    // ok
  38. }
  39.  
  40. /////////////////////////////////////////////////////////////////////////////
  41. // Used to determine whether the DLL can be unloaded by OLE
  42.  
  43. STDAPI DllCanUnloadNow(void)
  44. {
  45.     return (_Module.GetLockCount()==0) ? S_OK : S_FALSE;
  46. }
  47.  
  48. /////////////////////////////////////////////////////////////////////////////
  49. // Returns a class factory to create an object of the requested type
  50.  
  51. STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)
  52. {
  53.     return _Module.GetClassObject(rclsid, riid, ppv);
  54. }
  55.  
  56. /////////////////////////////////////////////////////////////////////////////
  57. // DllRegisterServer - Adds entries to the system registry
  58.  
  59. STDAPI DllRegisterServer(void)
  60. {
  61.     // registers object, typelib and all interfaces in typelib
  62.     return _Module.RegisterServer(TRUE);
  63. }
  64.  
  65. /////////////////////////////////////////////////////////////////////////////
  66. // DllUnregisterServer - Removes entries from the system registry
  67.  
  68. STDAPI DllUnregisterServer(void)
  69. {
  70.     _Module.UnregisterServer();
  71.     return S_OK;
  72. }
  73.  
  74.