Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
RpcProxy.h
Package: SwordOnline.rar [view]
Upload User: dzyhzl
Upload Date: 2019-04-29
Package Size: 56270k
Code Size: 18k
Category:
Game Server Simulator
Development Platform:
C/C++
- /*++
- Copyright (c) Microsoft Corporation. All rights reserved.
- 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__
- #if _MSC_VER > 1000
- #pragma once
- #endif
- #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_AMD64)
- #include <pshpack8.h>
- #endif
- #include <basetsd.h>
- #ifndef INC_OLE2
- #define INC_OLE2
- #endif
- #if defined(WIN32) || defined(__RPC_WIN64__)
- //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
- #include <guiddef.h>
- #endif /* GUID_DEFINED */
- #if defined(__cplusplus)
- extern "C"
- {
- #endif
- // 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.
- #define CINTERFACE_PROXY_VTABLE( n )
- struct
- {
- CInterfaceProxyHeader header;
- void *Vtbl[ n ];
- }
- #if _MSC_VER >= 1200
- #pragma warning(push)
- #endif
- #pragma warning( disable:4200 )
- typedef struct tagCInterfaceProxyVtbl
- {
- CInterfaceProxyHeader header;
- #if defined( _MSC_VER )
- void *Vtbl[];
- #else
- void *Vtbl[1];
- #endif
- } CInterfaceProxyVtbl;
- #if _MSC_VER >= 1200
- #pragma warning(pop)
- #else
- #pragma warning( default:4200 )
- #endif
- typedef
- void
- (__RPC_STUB * PRPC_STUB_FUNCTION) (
- IRpcStubBuffer * This,
- IRpcChannelBuffer * _pRpcChannelBuffer,
- PRPC_MESSAGE _pRpcMessage,
- DWORD *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;
- const struct IReleaseMarshalBuffersVtbl * pRMBVtbl;
- } 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 * 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,
- RPCOLEMESSAGE * pRpcMsg,
- IRpcChannelBuffer * pRpcChannelBuffer);
- IRpcStubBuffer * STDMETHODCALLTYPE
- CStdStubBuffer_IsIIDSupported(
- IRpcStubBuffer * This,
- REFIID riid);
- ULONG STDMETHODCALLTYPE
- CStdStubBuffer_CountRefs(
- IRpcStubBuffer * This);
- HRESULT STDMETHODCALLTYPE
- CStdStubBuffer_DebugServerQueryInterface(
- IRpcStubBuffer * This,
- void **ppv);
- void STDMETHODCALLTYPE
- CStdStubBuffer_DebugServerRelease(
- IRpcStubBuffer * This,
- void *pv);
- #define CStdStubBuffer_METHODS
- CStdStubBuffer_QueryInterface,
- CStdStubBuffer_AddRef,
- CStdStubBuffer_Release,
- CStdStubBuffer_Connect,
- CStdStubBuffer_Disconnect,
- CStdStubBuffer_Invoke,
- CStdStubBuffer_IsIIDSupported,
- CStdStubBuffer_CountRefs,
- CStdStubBuffer_DebugServerQueryInterface,
- CStdStubBuffer_DebugServerRelease
- #define CStdAsyncStubBuffer_METHODS 0,0,0,0,0,0,0,0,0,0
- #define CStdAsyncStubBuffer_DELEGATING_METHODS 0,0,0,0,0,0,0,0,0,0
- //+-------------------------------------------------------------------------
- //
- // Macro definitions for the proxy file
- //
- //--------------------------------------------------------------------------
- #define IID_GENERIC_CHECK_IID(name,pIID,index) memcmp( pIID, name##_ProxyVtblList[ index ]->header.piid, 16 )
- #define IID_BS_LOOKUP_SETUP int result, low=-1;
- #define IID_BS_LOOKUP_INITIAL_TEST(name, sz, split)
- result = name##_CHECK_IID( split );
- if ( result > 0 )
- { low = sz - split; }
- else if ( !result )
- { low = split; goto found_label; }
- #define IID_BS_LOOKUP_NEXT_TEST(name, split )
- result = name##_CHECK_IID( low + split );
- if ( result >= 0 )
- { low = low + split; if ( !result ) goto found_label; }
- #define IID_BS_LOOKUP_RETURN_RESULT(name, sz, index )
- low = low + 1;
- if (low >= sz)
- goto not_found_label;
- result = name##_CHECK_IID( low );
- if (result)
- goto not_found_label;
- found_label: (index) = low; return 1;
- not_found_label: return 0;
- //+-------------------------------------------------------------------------
- //
- // Macro and routine definitions for the dlldata file
- //
- //--------------------------------------------------------------------------
- /****************************************************************************
- * Proxy Dll APIs
- ****************************************************************************/
- RPCRTAPI
- HRESULT
- RPC_ENTRY
- NdrDllGetClassObject (
- IN REFCLSID rclsid,
- IN REFIID riid,
- OUT void ** ppv,
- IN const ProxyFileInfo ** pProxyFileList,
- IN const CLSID * pclsid,
- IN CStdPSFactoryBuffer * pPSFactoryBuffer);
- RPCRTAPI
- HRESULT
- RPC_ENTRY
- NdrDllCanUnloadNow(
- IN CStdPSFactoryBuffer * pPSFactoryBuffer);
- // if the user specified a routine prefix, pick it up...
- // if not, add nothing
- #ifndef ENTRY_PREFIX
- #ifndef DllMain
- #define DISABLE_THREAD_LIBRARY_CALLS(x) DisableThreadLibraryCalls(x)
- #endif
- #define ENTRY_PREFIX
- #define DLLREGISTERSERVER_ENTRY DllRegisterServer
- #define DLLUNREGISTERSERVER_ENTRY DllUnregisterServer
- #define DLLMAIN_ENTRY DllMain
- #define DLLGETCLASSOBJECT_ENTRY DllGetClassObject
- #define DLLCANUNLOADNOW_ENTRY DllCanUnloadNow
- #else // ENTRY_PREFIX
- #define __rpc_macro_expand2(a, b) a##b
- #define __rpc_macro_expand(a, b) __rpc_macro_expand2(a,b)
- #define DLLREGISTERSERVER_ENTRY __rpc_macro_expand(ENTRY_PREFIX, DllRegisterServer)
- #define DLLUNREGISTERSERVER_ENTRY __rpc_macro_expand(ENTRY_PREFIX, DllUnregisterServer)
- #define DLLMAIN_ENTRY __rpc_macro_expand(ENTRY_PREFIX, DllMain)
- #define DLLGETCLASSOBJECT_ENTRY __rpc_macro_expand(ENTRY_PREFIX, DllGetClassObject)
- #define DLLCANUNLOADNOW_ENTRY __rpc_macro_expand(ENTRY_PREFIX, DllCanUnloadNow)
- #endif // ENTRY_PREFIX
- #ifndef DISABLE_THREAD_LIBRARY_CALLS
- #define DISABLE_THREAD_LIBRARY_CALLS(x)
- #endif
- /*************************************************************************
- The following new functions were added after the Windows NT 3.5 release.
- *************************************************************************/
- RPCRTAPI
- HRESULT
- RPC_ENTRY
- NdrDllRegisterProxy(
- IN HMODULE hDll,
- IN const ProxyFileInfo ** pProxyFileList,
- IN const CLSID * pclsid);
- RPCRTAPI
- HRESULT
- RPC_ENTRY
- NdrDllUnregisterProxy(
- IN HMODULE hDll,
- IN const ProxyFileInfo ** pProxyFileList,
- IN const CLSID * pclsid);
- #define REGISTER_PROXY_DLL_ROUTINES(pProxyFileList, pClsID)
- HINSTANCE hProxyDll = 0;
- /*DllMain saves the DLL module handle for later use by DllRegisterServer */
- BOOL WINAPI DLLMAIN_ENTRY(
- HINSTANCE hinstDLL,
- DWORD fdwReason,
- LPVOID lpvReserved)
- {
- if(fdwReason == DLL_PROCESS_ATTACH)
- {
- hProxyDll = hinstDLL;
- DISABLE_THREAD_LIBRARY_CALLS(hinstDLL);
- }
- return TRUE;
- }
- /* DllRegisterServer registers the interfaces contained in the proxy DLL. */
- HRESULT STDAPICALLTYPE DLLREGISTERSERVER_ENTRY()
- {
- return NdrDllRegisterProxy(hProxyDll, pProxyFileList, pClsID);
- }
- /* DllUnregisterServer unregisters the interfaces contained in the proxy DLL. */
- HRESULT STDAPICALLTYPE DLLUNREGISTERSERVER_ENTRY()
- {
- return NdrDllUnregisterProxy(hProxyDll, pProxyFileList, pClsID);
- }
- //Delegation support.
- #define STUB_FORWARDING_FUNCTION NdrStubForwardingFunction
- ULONG STDMETHODCALLTYPE
- CStdStubBuffer2_Release(IRpcStubBuffer *This);
- ULONG STDMETHODCALLTYPE
- NdrCStdStubBuffer2_Release(IRpcStubBuffer *This,IPSFactoryBuffer * pPSF);
- #define CStdStubBuffer_DELEGATING_METHODS 0, 0, CStdStubBuffer2_Release, 0, 0, 0, 0, 0, 0, 0
- /*************************************************************************
- End of new functions.
- *************************************************************************/
- // PROXY_CLSID has precedence over PROXY_CLSID_IS
- #ifdef PROXY_CLSID
- #define CLSID_PSFACTORYBUFFER extern CLSID PROXY_CLSID;
- #else // PROXY_CLSID
- #ifdef PROXY_CLSID_IS
- #define CLSID_PSFACTORYBUFFER const CLSID CLSID_PSFactoryBuffer = PROXY_CLSID_IS;
- #define PROXY_CLSID CLSID_PSFactoryBuffer
- #else // PROXY_CLSID_IS
- #define CLSID_PSFACTORYBUFFER
- #endif //PROXY_CLSID_IS
- #endif //PROXY_CLSID
- // if the user specified an override for the class id, it is
- // PROXY_CLSID at this point
- #ifndef PROXY_CLSID
- #define GET_DLL_CLSID
- ( aProxyFileList[0]->pStubVtblList[0] != 0 ?
- aProxyFileList[0]->pStubVtblList[0]->header.piid : 0)
- #else //PROXY_CLSID
- #define GET_DLL_CLSID &PROXY_CLSID
- #endif //PROXY_CLSID
- #define EXTERN_PROXY_FILE(name)
- EXTERN_C const ProxyFileInfo name##_ProxyFileInfo;
- #define PROXYFILE_LIST_START
- const ProxyFileInfo * aProxyFileList[] = {
- #define REFERENCE_PROXY_FILE(name)
- & name##_ProxyFileInfo
- #define PROXYFILE_LIST_END
- 0 };
- // return pointers to the class information
- #define DLLDATA_GETPROXYDLLINFO(pPFList,pClsid)
- void RPC_ENTRY GetProxyDllInfo( const ProxyFileInfo*** pInfo, const CLSID ** pId )
- {
- *pInfo = pPFList;
- *pId = pClsid;
- };
- // ole entry points:
- #define DLLGETCLASSOBJECTROUTINE(pPFlist, pClsid,pFactory)
- HRESULT STDAPICALLTYPE DLLGETCLASSOBJECT_ENTRY (
- REFCLSID rclsid,
- REFIID riid,
- void ** ppv )
- {
- return
- NdrDllGetClassObject(rclsid,riid,ppv,pPFlist,pClsid,pFactory );
- }
- #define DLLCANUNLOADNOW(pFactory)
- HRESULT STDAPICALLTYPE DLLCANUNLOADNOW_ENTRY()
- {
- return NdrDllCanUnloadNow( pFactory );
- }
- #define DLLDUMMYPURECALL
- void __cdecl _purecall(void)
- {
- }
- #define CSTDSTUBBUFFERRELEASE(pFactory)
- ULONG STDMETHODCALLTYPE CStdStubBuffer_Release(IRpcStubBuffer *This)
- {
- return NdrCStdStubBuffer_Release(This,(IPSFactoryBuffer *)pFactory);
- }
- #ifdef PROXY_DELEGATION
- #define CSTDSTUBBUFFER2RELEASE(pFactory)
- ULONG STDMETHODCALLTYPE CStdStubBuffer2_Release(IRpcStubBuffer *This)
- {
- return NdrCStdStubBuffer2_Release(This,(IPSFactoryBuffer *)pFactory);
- }
- #else
- #define CSTDSTUBBUFFER2RELEASE(pFactory)
- #endif //PROXY_DELEGATION
- #ifdef REGISTER_PROXY_DLL
- #define DLLREGISTRY_ROUTINES(pProxyFileList,pClsID ) REGISTER_PROXY_DLL_ROUTINES(pProxyFileList,pClsID )
- #else
- #define DLLREGISTRY_ROUTINES(pProxyFileList,pClsID )
- #endif //REGISTER_PROXY_DLL
- // the dll entry points that must be defined
- #define DLLDATA_ROUTINES(pProxyFileList,pClsID )
- CLSID_PSFACTORYBUFFER
- CStdPSFactoryBuffer gPFactory = {0,0,0,0};
- DLLDATA_GETPROXYDLLINFO(pProxyFileList,pClsID)
- DLLGETCLASSOBJECTROUTINE(pProxyFileList,pClsID,&gPFactory)
- DLLCANUNLOADNOW(&gPFactory)
- CSTDSTUBBUFFERRELEASE(&gPFactory)
- CSTDSTUBBUFFER2RELEASE(&gPFactory)
- DLLDUMMYPURECALL
- DLLREGISTRY_ROUTINES(pProxyFileList, pClsID)
- // more code goes here...
- #define DLLDATA_STANDARD_ROUTINES
- DLLDATA_ROUTINES( (const ProxyFileInfo**) pProxyFileList, &CLSID_PSFactoryBuffer )
- #if defined(__cplusplus)
- } // extern "C"
- #endif
- #endif // WIN32 or _WIN64_
- #if defined(_M_IA64) || defined(_M_AMD64)
- #include <poppack.h>
- #endif
- #endif // __RPCPROXY_H__