2025-04-27 07:49:33 -04:00

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__