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

Windows编程

开发平台:

Visual C++

  1. /*
  2.  * KOALA.H
  3.  * Koala Object for EXE Servers, Chapter 6
  4.  *
  5.  * Classes that implement an object with IExternalConnection.
  6.  *
  7.  * Copyright (c)1993-1995 Microsoft Corporation, All Right Reserved
  8.  *
  9.  * Kraig Brockschmidt, Microsoft
  10.  * Internet  :  kraigb@microsoft.com
  11.  * Compuserve:  >INTERNET:kraigb@microsoft.com
  12.  */
  13. #ifndef _KOALA_H_
  14. #define _KOALA_H_
  15. #define CHAPTER6
  16. #include <inole.h>
  17. //KOALA.CPP
  18. //CHAPTER6MOD
  19. class CImpIPersist;
  20. typedef CImpIPersist *PCImpIPersist;
  21. class CKoala : public IExternalConnection
  22. //End CHAPTER6MOD
  23.     {
  24.     protected:
  25.         ULONG           m_cRef;         //Object reference count
  26.         LPUNKNOWN       m_pUnkOuter;    //Controlling unknown
  27.         PFNDESTROYED    m_pfnDestroy;   //To call on closure
  28.         //CHAPTER6MOD
  29.         DWORD           m_cStrong;      //Strong lock count
  30.         DWORD           m_cWeak;        //Weak lock count
  31.         PCImpIPersist   m_pImpIPersist; //Another interface
  32.         //End CHAPTER6MOD
  33.     public:
  34.         CKoala(LPUNKNOWN, PFNDESTROYED);
  35.         ~CKoala(void);
  36.         BOOL Init(void);
  37.         //Non-delegating object IUnknown
  38.         STDMETHODIMP         QueryInterface(REFIID, PPVOID);
  39.         STDMETHODIMP_(ULONG) AddRef(void);
  40.         STDMETHODIMP_(ULONG) Release(void);
  41.         //CHAPTER6MOD
  42.         STDMETHODIMP_(DWORD) AddConnection(DWORD, DWORD);
  43.         STDMETHODIMP_(DWORD) ReleaseConnection(DWORD, DWORD, BOOL);
  44.         //End CHAPTER6MOD
  45.     };
  46. typedef CKoala *PCKoala;
  47. //CHAPTER6MOD
  48. class CImpIPersist : public IPersist
  49.     {
  50.     protected:
  51.         ULONG           m_cRef;      //Interface reference count
  52.         PCKoala         m_pObj;      //Back pointer to the object
  53.         LPUNKNOWN       m_pUnkOuter; //For delegation
  54.     public:
  55.         CImpIPersist(PCKoala, LPUNKNOWN);
  56.         ~CImpIPersist(void);
  57.         STDMETHODIMP QueryInterface(REFIID, LPVOID *);
  58.         STDMETHODIMP_(ULONG) AddRef(void);
  59.         STDMETHODIMP_(ULONG) Release(void);
  60.         STDMETHODIMP GetClassID(LPCLSID);
  61.     };
  62. //End CHAPTER6MOD
  63. #endif //_KOALA_H_