284 lines
8.6 KiB
C++
284 lines
8.6 KiB
C++
/*===================================================================
|
|
Microsoft Denali
|
|
|
|
Microsoft Confidential.
|
|
Copyright 1997 Microsoft Corporation. All Rights Reserved.
|
|
|
|
Component: Global Interface Pointer API support
|
|
|
|
File: Gip.h
|
|
|
|
Owner: DmitryR
|
|
|
|
This is the GIP header file.
|
|
===================================================================*/
|
|
|
|
#ifndef _ASP_GIP_H
|
|
#define _ASP_GIP_H
|
|
|
|
// ***********************************************************************
|
|
// =======================================================================
|
|
// -----------------------------------------------------------------------
|
|
// START OF SP3 1.78 SDK Additions
|
|
// -----------------------------------------------------------------------
|
|
// The following are SP3 1.78 Additions from Rick Hill (rickhi)
|
|
// extracted from CGUID.H and OBJIDL.H
|
|
// -----------------------------------------------------------------------
|
|
// UNDONE: Once the new SDK is available the stuff below will be gone
|
|
// -----------------------------------------------------------------------
|
|
// =======================================================================
|
|
// ***********************************************************************
|
|
|
|
EXTERN_C const CLSID CLSID_StdGlobalInterfaceTable;
|
|
|
|
|
|
#ifndef __IGlobalInterfaceTable_FWD_DEFINED__
|
|
#define __IGlobalInterfaceTable_FWD_DEFINED__
|
|
typedef interface IGlobalInterfaceTable IGlobalInterfaceTable;
|
|
#endif /* __IGlobalInterfaceTable_FWD_DEFINED__ */
|
|
|
|
#ifndef __IGlobalInterfaceTable_INTERFACE_DEFINED__
|
|
#define __IGlobalInterfaceTable_INTERFACE_DEFINED__
|
|
|
|
/****************************************
|
|
* Generated header for interface: IGlobalInterfaceTable
|
|
* at Fri Apr 04 10:36:42 1997
|
|
* using MIDL 3.00.44
|
|
****************************************/
|
|
/* [uuid][object][local] */
|
|
|
|
|
|
typedef /* [unique] */ __RPC_FAR *LPGLOBALINTERFACETABLE;
|
|
|
|
|
|
EXTERN_C const IID IID_IGlobalInterfaceTable;
|
|
|
|
#if defined(__cplusplus) && !defined(CINTERFACE)
|
|
|
|
interface IGlobalInterfaceTable : public IUnknown
|
|
{
|
|
public:
|
|
virtual HRESULT STDMETHODCALLTYPE RegisterInterfaceInGlobal(
|
|
/* [in] */ IUnknown __RPC_FAR *pUnk,
|
|
/* [in] */ REFIID riid,
|
|
/* [out] */ DWORD __RPC_FAR *pdwCookie) = 0;
|
|
|
|
virtual HRESULT STDMETHODCALLTYPE RevokeInterfaceFromGlobal(
|
|
/* [in] */ DWORD dwCookie) = 0;
|
|
|
|
virtual HRESULT STDMETHODCALLTYPE GetInterfaceFromGlobal(
|
|
/* [in] */ DWORD dwCookie,
|
|
/* [in] */ REFIID riid,
|
|
/* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppv) = 0;
|
|
|
|
};
|
|
|
|
#else /* C style interface */
|
|
|
|
typedef struct IGlobalInterfaceTableVtbl
|
|
{
|
|
BEGIN_INTERFACE
|
|
|
|
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
|
|
IGlobalInterfaceTable __RPC_FAR * This,
|
|
/* [in] */ REFIID riid,
|
|
/* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
|
|
|
|
ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
|
|
IGlobalInterfaceTable __RPC_FAR * This);
|
|
|
|
ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
|
|
IGlobalInterfaceTable __RPC_FAR * This);
|
|
|
|
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RegisterInterfaceInGlobal )(
|
|
IGlobalInterfaceTable __RPC_FAR * This,
|
|
/* [in] */ IUnknown __RPC_FAR *pUnk,
|
|
/* [in] */ REFIID riid,
|
|
/* [out] */ DWORD __RPC_FAR *pdwCookie);
|
|
|
|
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RevokeInterfaceFromGlobal )(
|
|
IGlobalInterfaceTable __RPC_FAR * This,
|
|
/* [in] */ DWORD dwCookie);
|
|
|
|
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetInterfaceFromGlobal )(
|
|
IGlobalInterfaceTable __RPC_FAR * This,
|
|
/* [in] */ DWORD dwCookie,
|
|
/* [in] */ REFIID riid,
|
|
/* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppv);
|
|
|
|
END_INTERFACE
|
|
} IGlobalInterfaceTableVtbl;
|
|
|
|
interface IGlobalInterfaceTable
|
|
{
|
|
CONST_VTBL struct IGlobalInterfaceTableVtbl __RPC_FAR *lpVtbl;
|
|
};
|
|
|
|
#ifdef COBJMACROS
|
|
|
|
#define IGlobalInterfaceTable_QueryInterface(This,riid,ppvObject) \
|
|
(This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
|
|
|
|
#define IGlobalInterfaceTable_AddRef(This) \
|
|
(This)->lpVtbl -> AddRef(This)
|
|
|
|
#define IGlobalInterfaceTable_Release(This) \
|
|
(This)->lpVtbl -> Release(This)
|
|
|
|
|
|
#define IGlobalInterfaceTable_RegisterInterfaceInGlobal(This,pUnk,riid,
|
|
pdwCookie) \
|
|
(This)->lpVtbl -> RegisterInterfaceInGlobal(This,pUnk,riid,pdwCookie)
|
|
|
|
#define IGlobalInterfaceTable_RevokeInterfaceFromGlobal(This,dwCookie) \
|
|
(This)->lpVtbl -> RevokeInterfaceFromGlobal(This,dwCookie)
|
|
|
|
#define IGlobalInterfaceTable_GetInterfaceFromGlobal(This,dwCookie,riid,ppv) \
|
|
(This)->lpVtbl -> GetInterfaceFromGlobal(This,dwCookie,riid,ppv)
|
|
|
|
#endif /* COBJMACROS */
|
|
|
|
#endif /* C style interface */
|
|
|
|
HRESULT STDMETHODCALLTYPE
|
|
IGlobalInterfaceTable_RegisterInterfaceInGlobal_Proxy(
|
|
IGlobalInterfaceTable __RPC_FAR * This,
|
|
/* [in] */ IUnknown __RPC_FAR *pUnk,
|
|
/* [in] */ REFIID riid,
|
|
/* [out] */ DWORD __RPC_FAR *pdwCookie);
|
|
|
|
|
|
void __RPC_STUB IGlobalInterfaceTable_RegisterInterfaceInGlobal_Stub(
|
|
IRpcStubBuffer *This,
|
|
IRpcChannelBuffer *_pRpcChannelBuffer,
|
|
PRPC_MESSAGE _pRpcMessage,
|
|
DWORD *_pdwStubPhase);
|
|
|
|
|
|
HRESULT STDMETHODCALLTYPE
|
|
IGlobalInterfaceTable_RevokeInterfaceFromGlobal_Proxy(
|
|
IGlobalInterfaceTable __RPC_FAR * This,
|
|
/* [in] */ DWORD dwCookie);
|
|
|
|
|
|
void __RPC_STUB IGlobalInterfaceTable_RevokeInterfaceFromGlobal_Stub(
|
|
IRpcStubBuffer *This,
|
|
IRpcChannelBuffer *_pRpcChannelBuffer,
|
|
PRPC_MESSAGE _pRpcMessage,
|
|
DWORD *_pdwStubPhase);
|
|
|
|
|
|
HRESULT STDMETHODCALLTYPE IGlobalInterfaceTable_GetInterfaceFromGlobal_Proxy(
|
|
IGlobalInterfaceTable __RPC_FAR * This,
|
|
/* [in] */ DWORD dwCookie,
|
|
/* [in] */ REFIID riid,
|
|
/* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppv);
|
|
|
|
|
|
void __RPC_STUB IGlobalInterfaceTable_GetInterfaceFromGlobal_Stub(
|
|
IRpcStubBuffer *This,
|
|
IRpcChannelBuffer *_pRpcChannelBuffer,
|
|
PRPC_MESSAGE _pRpcMessage,
|
|
DWORD *_pdwStubPhase);
|
|
|
|
#endif /* __IGlobalInterfaceTable_INTERFACE_DEFINED__ */
|
|
|
|
// ***********************************************************************
|
|
// =======================================================================
|
|
// -----------------------------------------------------------------------
|
|
// END OF SP3 1.78 SDK Additions
|
|
// -----------------------------------------------------------------------
|
|
// =======================================================================
|
|
// ***********************************************************************
|
|
|
|
/*===================================================================
|
|
Includes
|
|
===================================================================*/
|
|
|
|
|
|
/*===================================================================
|
|
Defines
|
|
===================================================================*/
|
|
|
|
#define NULL_GIP_COOKIE 0xFFFFFFFF
|
|
|
|
/*===================================================================
|
|
C G l o b a l I n t e r f a c e A P I
|
|
===================================================================*/
|
|
|
|
class CGlobalInterfaceAPI
|
|
{
|
|
private:
|
|
// Is inited?
|
|
DWORD m_fInited : 1;
|
|
|
|
// Pointer to the COM object
|
|
IGlobalInterfaceTable *m_pGIT;
|
|
|
|
public:
|
|
CGlobalInterfaceAPI();
|
|
~CGlobalInterfaceAPI();
|
|
|
|
HRESULT Init();
|
|
HRESULT UnInit();
|
|
|
|
// inlines for the real API calls:
|
|
HRESULT Register(IUnknown *pUnk, REFIID riid, DWORD *pdwCookie);
|
|
HRESULT Get(DWORD dwCookie, REFIID riid, void **ppv);
|
|
HRESULT Revoke(DWORD dwCookie);
|
|
|
|
public:
|
|
#if DBG
|
|
inline void AssertValid() const
|
|
{
|
|
DBG_ASSERT(m_fInited);
|
|
DBG_ASSERT(m_pGIT);
|
|
}
|
|
#else
|
|
inline void AssertValid() const {}
|
|
#endif
|
|
};
|
|
|
|
/*===================================================================
|
|
CGlobalInterfaceAPI inlines
|
|
===================================================================*/
|
|
|
|
inline HRESULT CGlobalInterfaceAPI::Register
|
|
(
|
|
IUnknown *pUnk,
|
|
REFIID riid,
|
|
DWORD *pdwCookie
|
|
)
|
|
{
|
|
AssertValid();
|
|
return m_pGIT->RegisterInterfaceInGlobal(pUnk, riid, pdwCookie);
|
|
}
|
|
|
|
inline HRESULT CGlobalInterfaceAPI::Get
|
|
(
|
|
DWORD dwCookie,
|
|
REFIID riid,
|
|
void **ppv
|
|
)
|
|
{
|
|
AssertValid();
|
|
return m_pGIT->GetInterfaceFromGlobal(dwCookie, riid, ppv);
|
|
}
|
|
|
|
inline HRESULT CGlobalInterfaceAPI::Revoke
|
|
(
|
|
DWORD dwCookie
|
|
)
|
|
{
|
|
AssertValid();
|
|
return m_pGIT->RevokeInterfaceFromGlobal(dwCookie);
|
|
}
|
|
|
|
/*===================================================================
|
|
Globals
|
|
===================================================================*/
|
|
|
|
extern CGlobalInterfaceAPI g_GIPAPI;
|
|
|
|
#endif // _ASP_GIP_H
|