📄 rpcproxy.h
字号:
#pragma option push -b -a8 -pc -A- /*P_O_Push*/
/*++
Copyright (c) 1992-1998 Microsoft Corporation
Module Name:
rpcproxy.h
Abstract:
Definitions for rpc proxy stubs.
Compiler switches:
-DREGISTER_PROXY_DLL
Generates DllMain, DllRegisterServer, and DllUnregisterServer functions
for automatically registering a proxy DLL.
-DPROXY_CLSID=clsid
Specifies a class ID to be used by the proxy DLL.
-DPROXY_CLSID_IS={0x6f11fe5c,0x2fc5,0x101b,{0x9e,0x45,0x00,0x00,0x0b,0x65,0xc7,0xef}}
Specifies the value of the class ID to be used by the proxy DLL.
-DENTRY_PREFIX=<prefix>
String to be prepended on all the DllGetClassObject etc routines
in dlldata.c. This includes: DllGetClassObject, DllCanUnloadNow
and DllMain, DllRegisterServer, and DllUnregisterServer.
-DNT35_STRICT
Specifies that the target platform is Windows NT 3.5. This switch disables
the new functions added after the Windows NT 3.5 release.
--*/
// This version of the rpcndr.h file corresponds to MIDL version 5.0.+
// used with NT5 beta1+ env from build #1700 on.
#ifndef __RPCPROXY_H_VERSION__
#define __RPCPROXY_H_VERSION__ ( 475 )
#endif // __RPCPROXY_H_VERSION__
#ifndef __RPCPROXY_H__
#define __RPCPROXY_H__
#define __midl_proxy
#ifdef __REQUIRED_RPCPROXY_H_VERSION__
#if ( __RPCPROXY_H_VERSION__ < __REQUIRED_RPCPROXY_H_VERSION__ )
#error incorrect <rpcproxy.h> version. Use the header that matches with the MIDL compiler.
#endif
#endif
// If this is the first file included __RPC_WIN64__ is not defined yet.
#if defined(_M_IA64) || defined(_M_AXP64)
#include <pshpack8.h>
#endif
#include <basetsd.h>
#ifndef INC_OLE2
#define INC_OLE2
#endif
#if defined(WIN32) || defined(__RPC_WIN64__) || defined(_MPPC_)
//We need to define REFIID, REFCLSID, REFGUID, & REFFMTID here so that the
//proxy code won't get the const GUID *const definition.
#ifndef GUID_DEFINED
#define GUID_DEFINED
typedef struct _GUID
{
unsigned long Data1;
unsigned short Data2;
unsigned short Data3;
unsigned char Data4[8];
} GUID;
#endif /* GUID_DEFINED */
#if !defined( __IID_DEFINED__ )
#define __IID_DEFINED__
typedef GUID IID;
typedef IID *LPIID;
#define IID_NULL GUID_NULL
#define IsEqualIID(riid1, riid2) IsEqualGUID(riid1, riid2)
typedef GUID CLSID;
typedef CLSID *LPCLSID;
#define CLSID_NULL GUID_NULL
#define IsEqualCLSID(rclsid1, rclsid2) IsEqualGUID(rclsid1, rclsid2)
typedef GUID FMTID;
typedef FMTID *LPFMTID;
#define FMTID_NULL GUID_NULL
#define IsEqualFMTID(rfmtid1, rfmtid2) IsEqualGUID(rfmtid1, rfmtid2)
#ifndef _REFGUID_DEFINED
#define _REFGUID_DEFINED
typedef const GUID *REFGUID;
#endif // !_REFGUID_DEFINED
#ifndef _REFIID_DEFINED
#define _REFIID_DEFINED
typedef const IID *REFIID;
#endif // !_REFIID_DEFINED
#ifndef _REFCLSID_DEFINED
#define _REFCLSID_DEFINED
typedef const CLSID *REFCLSID;
#endif // !_REFCLSID_DEFINED
#ifndef _REFFMTID_DEFINED
#define _REFFMTID_DEFINED
typedef const FMTID *REFFMTID;
#endif // !_REFFMTID_DEFINED
#endif // !__IID_DEFINED__
// forward declarations
struct tagCInterfaceStubVtbl;
struct tagCInterfaceProxyVtbl;
typedef struct tagCInterfaceStubVtbl * PCInterfaceStubVtblList;
typedef struct tagCInterfaceProxyVtbl * PCInterfaceProxyVtblList;
typedef const char * PCInterfaceName;
typedef int __stdcall IIDLookupRtn( const IID * pIID, int * pIndex );
typedef IIDLookupRtn * PIIDLookup;
// pointers to arrays of CInterfaceProxyVtbl's and CInterfaceStubVtbls
typedef struct tagProxyFileInfo
{
const PCInterfaceProxyVtblList *pProxyVtblList;
const PCInterfaceStubVtblList *pStubVtblList;
const PCInterfaceName * pNamesArray;
const IID ** pDelegatedIIDs;
const PIIDLookup pIIDLookupRtn;
unsigned short TableSize;
unsigned short TableVersion;
const IID ** pAsyncIIDLookup;
LONG_PTR Filler2;
LONG_PTR Filler3;
LONG_PTR Filler4;
}ProxyFileInfo;
// extended info with list of interface names
typedef ProxyFileInfo ExtendedProxyFileInfo;
#include <rpc.h>
#include <rpcndr.h>
#include <string.h>
#include <memory.h>
typedef struct tagCInterfaceProxyHeader
{
//
// New fields should be added here, at the beginning of the structure.
//
#ifdef USE_STUBLESS_PROXY
const void * pStublessProxyInfo;
#endif
const IID * piid;
} CInterfaceProxyHeader;
// Macro used for ANSI compatible stubs.
#if defined(_MPPC_)
#define CINTERFACE_PROXY_VTABLE( n ) \
struct \
{ \
CInterfaceProxyHeader header; \
void * pDummyEntryForPowerMac; \
void *Vtbl[ n ]; \
}
#else
#define CINTERFACE_PROXY_VTABLE( n ) \
struct \
{ \
CInterfaceProxyHeader header; \
void *Vtbl[ n ]; \
}
#endif
#pragma warning( disable:4200 )
typedef struct tagCInterfaceProxyVtbl
{
CInterfaceProxyHeader header;
#if defined(_MPPC_)
void * pDummyEntryForPowerMac;
#endif
#if defined( _MSC_VER )
void *Vtbl[];
#else
void *Vtbl[1];
#endif
} CInterfaceProxyVtbl;
#pragma warning( default:4200 )
typedef
void
(__RPC_STUB __RPC_FAR * PRPC_STUB_FUNCTION) (
IRpcStubBuffer *This,
IRpcChannelBuffer * _pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD __RPC_FAR *pdwStubPhase);
typedef struct tagCInterfaceStubHeader
{
//New fields should be added here, at the beginning of the structure.
const IID *piid;
const MIDL_SERVER_INFO *pServerInfo;
unsigned long DispatchTableCount;
const PRPC_STUB_FUNCTION *pDispatchTable;
} CInterfaceStubHeader;
typedef struct tagCInterfaceStubVtbl
{
CInterfaceStubHeader header;
IRpcStubBufferVtbl Vtbl;
} CInterfaceStubVtbl;
typedef struct tagCStdStubBuffer
{
const struct IRpcStubBufferVtbl * lpVtbl; //Points to Vtbl field in CInterfaceStubVtbl.
long RefCount;
struct IUnknown * pvServerObject;
const struct ICallFactoryVtbl * pCallFactoryVtbl;
const IID * pAsyncIID;
struct IPSFactoryBuffer * pPSFactory;
} CStdStubBuffer;
typedef struct tagCStdPSFactoryBuffer
{
const IPSFactoryBufferVtbl *lpVtbl;
long RefCount;
const ProxyFileInfo ** pProxyFileList;
long Filler1; //Reserved for future use.
} CStdPSFactoryBuffer;
RPCRTAPI
void
RPC_ENTRY
NdrProxyInitialize(
void * This,
PRPC_MESSAGE pRpcMsg,
PMIDL_STUB_MESSAGE pStubMsg,
PMIDL_STUB_DESC pStubDescriptor,
unsigned int ProcNum );
RPCRTAPI
void
RPC_ENTRY
NdrProxyGetBuffer(
void * This,
PMIDL_STUB_MESSAGE pStubMsg);
RPCRTAPI
void
RPC_ENTRY
NdrProxySendReceive(
void *This,
MIDL_STUB_MESSAGE *pStubMsg);
RPCRTAPI
void
RPC_ENTRY
NdrProxyFreeBuffer(
void *This,
MIDL_STUB_MESSAGE *pStubMsg);
RPCRTAPI
HRESULT
RPC_ENTRY
NdrProxyErrorHandler(
DWORD dwExceptionCode);
RPCRTAPI
void
RPC_ENTRY
NdrStubInitialize(
PRPC_MESSAGE pRpcMsg,
PMIDL_STUB_MESSAGE pStubMsg,
PMIDL_STUB_DESC pStubDescriptor,
IRpcChannelBuffer * pRpcChannelBuffer);
RPCRTAPI
void
RPC_ENTRY
NdrStubInitializePartial(
PRPC_MESSAGE pRpcMsg,
PMIDL_STUB_MESSAGE pStubMsg,
PMIDL_STUB_DESC pStubDescriptor,
IRpcChannelBuffer * pRpcChannelBuffer,
unsigned long RequestedBufferSize);
void __RPC_STUB NdrStubForwardingFunction(
IN IRpcStubBuffer * This,
IN IRpcChannelBuffer * pChannel,
IN PRPC_MESSAGE pmsg,
OUT DWORD __RPC_FAR * pdwStubPhase);
RPCRTAPI
void
RPC_ENTRY
NdrStubGetBuffer(
IRpcStubBuffer * This,
IRpcChannelBuffer * pRpcChannelBuffer,
PMIDL_STUB_MESSAGE pStubMsg);
RPCRTAPI
HRESULT
RPC_ENTRY
NdrStubErrorHandler(
DWORD dwExceptionCode);
HRESULT STDMETHODCALLTYPE
CStdStubBuffer_QueryInterface(
IRpcStubBuffer *This,
REFIID riid,
void **ppvObject);
ULONG STDMETHODCALLTYPE
CStdStubBuffer_AddRef(
IRpcStubBuffer *This);
ULONG STDMETHODCALLTYPE
CStdStubBuffer_Release(
IRpcStubBuffer *This);
ULONG STDMETHODCALLTYPE
NdrCStdStubBuffer_Release(
IRpcStubBuffer *This,
IPSFactoryBuffer * pPSF);
HRESULT STDMETHODCALLTYPE
CStdStubBuffer_Connect(
IRpcStubBuffer *This,
IUnknown *pUnkServer);
void STDMETHODCALLTYPE
CStdStubBuffer_Disconnect(
IRpcStubBuffer *This);
HRESULT STDMETHODCALLTYPE
CStdStubBuffer_Invoke(
IRpcStubBuffer *This,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -