windows-nt/Source/XPSP1/NT/multimedia/directx/dplay/dnet/dnaddress/classfac.h
2020-09-26 16:20:57 +08:00

87 lines
3.1 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
*@@END_MSINTERNAL
*
***************************************************************************/
#ifndef __CLASSFAC_H__
#define __CLASSFAC_H__
//**********************************************************************
// Constant definitions
//**********************************************************************
//**********************************************************************
// Macro definitions
//**********************************************************************
//**********************************************************************
// Structure definitions
//**********************************************************************
//
// COM interface for class factory
//
#undef INTERFACE // External COM Implementation
#define INTERFACE IDirectPlay8AddressClassFact
DECLARE_INTERFACE_(IDirectPlay8AddressClassFact,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 _IDirectPlay8AddressClassFact { // Internal Implementation (overlay's external imp.)
IDirectPlay8AddressClassFactVtbl *lpVtbl; // lpVtbl Must be first element (to match external imp.)
LONG lRefCount;
DWORD dwLocks;
} _IDirectPlay8AddressClassFact, *_LPIDirectPlay8AddressClassFact;
//**********************************************************************
// Variable definitions
//**********************************************************************
//
// VTable for class factory
//
extern IDirectPlay8AddressClassFactVtbl DP8ACF_Vtbl;
//
// VTable for IUnknown
extern IUnknownVtbl DP8A_UnknownVtbl;
//**********************************************************************
// Function prototypes
//**********************************************************************
// DirectNet - IUnknown
STDMETHODIMP DP8A_QueryInterface(LPVOID lpv, REFIID riid,LPVOID *ppvObj);
STDMETHODIMP_(ULONG) DP8A_AddRef(LPVOID lphObj);
STDMETHODIMP_(ULONG) DP8A_Release(LPVOID lphObj);
// Class Factory
STDMETHODIMP DP8ACF_QueryInterface(IDirectPlay8AddressClassFact *pInterface,REFIID riid,LPVOID *ppvObj);
STDMETHODIMP_(ULONG) DP8ACF_AddRef(IDirectPlay8AddressClassFact *pInterface);
STDMETHODIMP_(ULONG) DP8ACF_Release(IDirectPlay8AddressClassFact *pInterface);
STDMETHODIMP DP8ACF_CreateInstance(IDirectPlay8AddressClassFact *pInterface,LPUNKNOWN lpUnkOuter,REFIID riid,LPVOID *ppv);
STDMETHODIMP DP8ACF_LockServer(IDirectPlay8AddressClassFact *pInterface,BOOL bLock);
// Class Factory - supporting
HRESULT DP8ACF_CreateObject(LPVOID *lplpv,REFIID riid);
HRESULT DP8ACF_FreeObject(LPVOID lpv);
#endif // __CLASSFAC_H__