SERVER.H
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:3k
源码类别:

Windows编程

开发平台:

Visual C++

  1. /*+==========================================================================
  2.   File:      SERVER.H
  3.   Summary:   Internal include file for the DCDSERVE.EXE out-of-process
  4.              server. Declares the CServer server control object class.
  5.              For a comprehensive tutorial code tour of this module's
  6.              contents and offerings see the tutorial DCDSERVE.HTM
  7.              file. For more specific technical details on the internal
  8.              workings see the comments dispersed throughout the module's
  9.              source code.
  10.   Classes:   CServer.
  11.   Functions: none.
  12.   Origin:    8-23-97: atrent - Editor-inheritance from SERVER.H in
  13.                the LOCSERVE Tutorial Code Sample. [Revised]
  14. ----------------------------------------------------------------------------
  15.   This file is part of the Microsoft COM Tutorial Code Samples.
  16.   Copyright (C) Microsoft Corporation, 1997.  All rights reserved.
  17.   This source code is intended only as a supplement to Microsoft
  18.   Development Tools and/or on-line documentation.  See these other
  19.   materials for detailed information regarding Microsoft code samples.
  20.   THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
  21.   KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
  22.   IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
  23.   PARTICULAR PURPOSE.
  24. ==========================================================================+*/
  25. #if !defined(SERVER_H)
  26. #define SERVER_H
  27. #ifdef __cplusplus
  28. /*C+C+++C+++C+++C+++C+++C+++C+++C+++C+++C+++C+++C+++C+++C+++C+++C+++C+++C+++C
  29.   Class:    CServer
  30.   Summary:  Class to encapsulate control of this COM server (eg, handle
  31.             Lock and Object counting, encapsulate otherwise global data).
  32.             There is an instance of CServer for every attached process.
  33.   Methods:  none
  34. C---C---C---C---C---C---C---C---C---C---C---C---C---C---C---C---C---C---C-C*/
  35. class CServer : public CThreaded
  36. {
  37.   public:
  38.     CServer(void);
  39.     ~CServer(void);
  40.     // Methods for server lifetime control: object counts and lock counts.
  41.     void Lock(void);
  42.     void Unlock(void);
  43.     void ObjectsUp(void);
  44.     void ObjectsDown(void);
  45.     BOOL ObjectFirst(void);
  46.     HRESULT ObjectSet(IUnknown* pCob);
  47.     HRESULT ObjectQI(REFIID riid, PPVOID ppv);
  48.     BOOL OpenFactories(void);
  49.     BOOL CloseFactories(void);
  50.     // A place to store the server's instance handle.
  51.     HINSTANCE m_hInstServer;
  52.     // A place to store the server's main window.
  53.     HWND m_hWndServer;
  54.     // Global Server living Object count.
  55.     LONG m_cObjects;
  56.     // Global Server Client Lock count.
  57.     LONG m_cLocks;
  58.     // Some member variables to store pointers to Class Factories.
  59.     IUnknown* m_pCFPaper;
  60.     // Some member variables to store Class Factory registration keys.
  61.     DWORD m_dwCFPaper;
  62.     // Global IUnknown interface pointer to the single COPaper object.
  63.     IUnknown* m_pCOPaper;
  64. };
  65. #endif // __cplusplus
  66. // Allow other internal DCDSERVE modules to get at the globals.
  67. extern CServer* g_pServer;
  68. #endif // SERVER_H