105 lines
3.5 KiB
C
105 lines
3.5 KiB
C
/*==========================================================================
|
|
*
|
|
* Copyright (C) 2000 Microsoft Corporation. All Rights Reserved.
|
|
*
|
|
* File: ClassFac.h
|
|
* Content: DirectNet class factory header file
|
|
*@@BEGIN_MSINTERNAL
|
|
* History:
|
|
* Date By Reason
|
|
* ==== == ======
|
|
* 10/08/99 jtk Created
|
|
* 05/04/00 mjn Cleaned up functions
|
|
* 06/09/00 rmt Updates to split CLSID and allow whistler compat and support external create funcs
|
|
*@@END_MSINTERNAL
|
|
*
|
|
***************************************************************************/
|
|
|
|
#ifndef __CLASSFAC_H__
|
|
#define __CLASSFAC_H__
|
|
|
|
//**********************************************************************
|
|
// Constant definitions
|
|
//**********************************************************************
|
|
|
|
//**********************************************************************
|
|
// Macro definitions
|
|
//**********************************************************************
|
|
|
|
//**********************************************************************
|
|
// Structure definitions
|
|
//**********************************************************************
|
|
|
|
typedef struct _INTERFACE_LIST INTERFACE_LIST;
|
|
typedef struct _OBJECT_DATA OBJECT_DATA;
|
|
|
|
//
|
|
// COM interface for class factory
|
|
//
|
|
#undef INTERFACE // External COM Implementation
|
|
#define INTERFACE IDirectNetClassFact
|
|
DECLARE_INTERFACE_(IDirectNetClassFact,IUnknown)
|
|
{
|
|
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID *ppvObj) PURE;
|
|
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
|
|
STDMETHOD_(ULONG,Release) (THIS) PURE;
|
|
STDMETHOD(CreateInstance) (THIS_ LPUNKNOWN lpUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
|
|
STDMETHOD(LockServer) (THIS_ BOOL bLock) PURE;
|
|
};
|
|
|
|
|
|
typedef struct _IDirectNetClassFact { // Internal Implementation (overlay's external imp.)
|
|
IDirectNetClassFactVtbl *lpVtbl; // lpVtbl Must be first element (to match external imp.)
|
|
DWORD dwRefCount;
|
|
DWORD dwLocks;
|
|
GUID clsid;
|
|
} _IDirectNetClassFact, *_LPIDirectNetClassFact;
|
|
|
|
//**********************************************************************
|
|
// Variable definitions
|
|
//**********************************************************************
|
|
|
|
//
|
|
// VTable for class factory
|
|
//
|
|
extern IDirectNetClassFactVtbl DNCF_Vtbl;
|
|
|
|
//**********************************************************************
|
|
// Function prototypes
|
|
//**********************************************************************
|
|
|
|
//
|
|
// DirectNet - IUnknown
|
|
//
|
|
STDMETHODIMP DN_QueryInterface(void *pInterface,
|
|
REFIID riid,
|
|
void **ppv);
|
|
|
|
STDMETHODIMP_(ULONG) DN_AddRef(void *pInterface);
|
|
|
|
STDMETHODIMP_(ULONG) DN_Release(void *pInterface);
|
|
|
|
//
|
|
// Class Factory
|
|
//
|
|
STDMETHODIMP DNCF_QueryInterface(IDirectNetClassFact *pInterface,REFIID riid,LPVOID *ppvObj);
|
|
STDMETHODIMP_(ULONG) DNCF_AddRef(IDirectNetClassFact *pInterface);
|
|
STDMETHODIMP_(ULONG) DNCF_Release(IDirectNetClassFact *pInterface);
|
|
STDMETHODIMP DNCF_CreateInstance(IDirectNetClassFact *pInterface,LPUNKNOWN lpUnkOuter,REFIID riid,LPVOID *ppv);
|
|
STDMETHODIMP DNCF_LockServer(IDirectNetClassFact *pInterface,BOOL bLock);
|
|
|
|
// Class Factory - supporting
|
|
|
|
HRESULT DNCF_CreateObject(LPVOID *lplpv,REFIID riid);
|
|
HRESULT DNCF_FreeObject(LPVOID lpv);
|
|
|
|
static HRESULT DN_CreateInterface(OBJECT_DATA *pObject,
|
|
REFIID riid,
|
|
INTERFACE_LIST **const ppv);
|
|
|
|
INTERFACE_LIST *DN_FindInterface(void *pInterface,
|
|
REFIID riid);
|
|
|
|
|
|
#endif // __CLASSFAC_H__
|