71 lines
1.6 KiB
C++
71 lines
1.6 KiB
C++
//+-------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1992 - 1996.
|
|
//
|
|
// File: csrgt.hxx
|
|
//
|
|
// Contents: classes which implement ISurrogate:
|
|
// CSurrgate
|
|
// CSurrogateFactory
|
|
//
|
|
//
|
|
// History: 03-Jun-96 t-AdamE Created
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
#if !defined(__CSRGT_HXX__)
|
|
#define __CSRGT_HXX__
|
|
|
|
#include <windows.h>
|
|
#include <ole2.h>
|
|
#include "debnot.h"
|
|
#include "libtable.hxx"
|
|
#include "cmonitor.hxx"
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CSurrogate
|
|
//
|
|
// Purpose: Implement the ISurrogate interface required by COM
|
|
// for processes that act as surrogates for dll servers
|
|
//
|
|
// History: 21-May-96 t-Adame Created
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
// forward declaration
|
|
class CSurrogate;
|
|
|
|
class CSurrogate : public ISurrogate
|
|
{
|
|
public:
|
|
|
|
CSurrogate();
|
|
|
|
// IUnknown methods
|
|
STDMETHOD (QueryInterface)(REFIID iid, LPVOID FAR * ppv);
|
|
STDMETHOD_(ULONG,AddRef)();
|
|
STDMETHOD_(ULONG,Release)();
|
|
|
|
// ISurrogate methods
|
|
STDMETHOD (LoadDllServer)(/* [in] */ REFCLSID rclsid);
|
|
STDMETHOD (FreeSurrogate)();
|
|
|
|
// non-COM methods
|
|
void WaitForSafeLibraryFree();
|
|
|
|
// signaled by a call to FreeSurrogate from OLE when its time
|
|
// to terminate the surrogate process
|
|
static HANDLE _hEventAllLibsFree;
|
|
static CSurrogate* _pSurrogate;
|
|
|
|
private:
|
|
|
|
ULONG _cref;
|
|
CLibTable m_tblibs;
|
|
|
|
};
|
|
|
|
#endif // __CSRGT_HXX__
|