📄 rpcndr.h
字号:
* Interpreter argument queue. Used on server side only.
*/
void __RPC_FAR * pArgQueue;
unsigned long dwStubPhase;
/*
* Pipe descriptor, defined for the 4.0 release.
*/
PNDR_PIPE_DESC pPipeDesc;
/*
* Async message pointer, correlation data - NT 5.0 features.
*/
PNDR_ASYNC_MESSAGE pAsyncMsg;
PNDR_CORRELATION_INFO pCorrInfo;
unsigned char * pCorrMemory;
void * pMemoryList;
/*
* Fields up to this point present since the 3.50 release.
*/
/*
* New reserved fields introduced for Windows 2000 Beta 3
*/
ULONG_PTR w2kReserved[5];
} MIDL_STUB_MESSAGE, __RPC_FAR *PMIDL_STUB_MESSAGE;
#if !defined(__RPC_DOS__) && !defined(__RPC_WIN16__) && !defined(__RPC_MAC__) && !defined(__RPC_WIN64__)
#include <poppack.h>
#endif
/*
* Generic handle bind/unbind routine pair.
*/
typedef void __RPC_FAR *
(__RPC_FAR __RPC_API * GENERIC_BINDING_ROUTINE)
(void __RPC_FAR *);
typedef void
(__RPC_FAR __RPC_API * GENERIC_UNBIND_ROUTINE)
(void __RPC_FAR *, unsigned char __RPC_FAR *);
typedef struct _GENERIC_BINDING_ROUTINE_PAIR
{
GENERIC_BINDING_ROUTINE pfnBind;
GENERIC_UNBIND_ROUTINE pfnUnbind;
} GENERIC_BINDING_ROUTINE_PAIR, __RPC_FAR *PGENERIC_BINDING_ROUTINE_PAIR;
typedef struct __GENERIC_BINDING_INFO
{
void __RPC_FAR * pObj;
unsigned int Size;
GENERIC_BINDING_ROUTINE pfnBind;
GENERIC_UNBIND_ROUTINE pfnUnbind;
} GENERIC_BINDING_INFO, __RPC_FAR *PGENERIC_BINDING_INFO;
// typedef EXPR_EVAL - see above
// typedefs for xmit_as
#if (defined(_MSC_VER)) && !defined(MIDL_PASS)
// a Microsoft C++ compiler
#define NDR_SHAREABLE __inline
#else
#define NDR_SHAREABLE static
#endif
typedef void (__RPC_FAR __RPC_USER * XMIT_HELPER_ROUTINE)
( PMIDL_STUB_MESSAGE );
typedef struct _XMIT_ROUTINE_QUINTUPLE
{
XMIT_HELPER_ROUTINE pfnTranslateToXmit;
XMIT_HELPER_ROUTINE pfnTranslateFromXmit;
XMIT_HELPER_ROUTINE pfnFreeXmit;
XMIT_HELPER_ROUTINE pfnFreeInst;
} XMIT_ROUTINE_QUINTUPLE, __RPC_FAR *PXMIT_ROUTINE_QUINTUPLE;
typedef unsigned long
(__RPC_FAR __RPC_USER * USER_MARSHAL_SIZING_ROUTINE)
(unsigned long __RPC_FAR *,
unsigned long,
void __RPC_FAR * );
typedef unsigned char __RPC_FAR *
(__RPC_FAR __RPC_USER * USER_MARSHAL_MARSHALLING_ROUTINE)
(unsigned long __RPC_FAR *,
unsigned char __RPC_FAR * ,
void __RPC_FAR * );
typedef unsigned char __RPC_FAR *
(__RPC_FAR __RPC_USER * USER_MARSHAL_UNMARSHALLING_ROUTINE)
(unsigned long __RPC_FAR *,
unsigned char __RPC_FAR * ,
void __RPC_FAR * );
typedef void (__RPC_FAR __RPC_USER * USER_MARSHAL_FREEING_ROUTINE)
(unsigned long __RPC_FAR *,
void __RPC_FAR * );
typedef struct _USER_MARSHAL_ROUTINE_QUADRUPLE
{
USER_MARSHAL_SIZING_ROUTINE pfnBufferSize;
USER_MARSHAL_MARSHALLING_ROUTINE pfnMarshall;
USER_MARSHAL_UNMARSHALLING_ROUTINE pfnUnmarshall;
USER_MARSHAL_FREEING_ROUTINE pfnFree;
} USER_MARSHAL_ROUTINE_QUADRUPLE;
#define USER_MARSHAL_CB_SIGNATURE 'USRC'
typedef enum _USER_MARSHAL_CB_TYPE
{
USER_MARSHAL_CB_BUFFER_SIZE,
USER_MARSHAL_CB_MARSHALL,
USER_MARSHAL_CB_UNMARSHALL,
USER_MARSHAL_CB_FREE
} USER_MARSHAL_CB_TYPE;
typedef struct _USER_MARSHAL_CB
{
unsigned long Flags;
PMIDL_STUB_MESSAGE pStubMsg;
PFORMAT_STRING pReserve;
unsigned long Signature;
USER_MARSHAL_CB_TYPE CBType;
PFORMAT_STRING pFormat;
PFORMAT_STRING pTypeFormat;
} USER_MARSHAL_CB;
#define USER_CALL_CTXT_MASK(f) ((f) & 0x00ff)
#define USER_CALL_AUX_MASK(f) ((f) & 0xff00)
#define GET_USER_DATA_REP(f) ((f) >> 16)
#define USER_CALL_IS_ASYNC 0x0100 /* aux flag: in an [async] call */
#define USER_CALL_NEW_CORRELATION_DESC 0x0200
typedef struct _MALLOC_FREE_STRUCT
{
void __RPC_FAR * (__RPC_FAR __RPC_USER * pfnAllocate)(size_t);
void (__RPC_FAR __RPC_USER * pfnFree)(void __RPC_FAR *);
} MALLOC_FREE_STRUCT;
typedef struct _COMM_FAULT_OFFSETS
{
short CommOffset;
short FaultOffset;
} COMM_FAULT_OFFSETS;
/*
* MIDL Stub Descriptor
*/
typedef struct _MIDL_STUB_DESC
{
void __RPC_FAR * RpcInterfaceInformation;
void __RPC_FAR * (__RPC_FAR __RPC_API * pfnAllocate)(size_t);
void (__RPC_FAR __RPC_API * pfnFree)(void __RPC_FAR *);
union
{
handle_t __RPC_FAR * pAutoHandle;
handle_t __RPC_FAR * pPrimitiveHandle;
PGENERIC_BINDING_INFO pGenericBindingInfo;
} IMPLICIT_HANDLE_INFO;
const NDR_RUNDOWN __RPC_FAR * apfnNdrRundownRoutines;
const GENERIC_BINDING_ROUTINE_PAIR __RPC_FAR * aGenericBindingRoutinePairs;
const EXPR_EVAL __RPC_FAR * apfnExprEval;
const XMIT_ROUTINE_QUINTUPLE __RPC_FAR * aXmitQuintuple;
const unsigned char __RPC_FAR * pFormatTypes;
int fCheckBounds;
/* Ndr library version. */
unsigned long Version;
MALLOC_FREE_STRUCT __RPC_FAR * pMallocFreeStruct;
long MIDLVersion;
const COMM_FAULT_OFFSETS __RPC_FAR * CommFaultOffsets;
// New fields for version 3.0+
const USER_MARSHAL_ROUTINE_QUADRUPLE __RPC_FAR * aUserMarshalQuadruple;
// Notify routines - added for NT5, MIDL 5.0
const NDR_NOTIFY_ROUTINE __RPC_FAR * NotifyRoutineTable;
/*
* Reserved for future use.
*/
ULONG_PTR mFlags;
ULONG_PTR Reserved3;
ULONG_PTR Reserved4;
ULONG_PTR Reserved5;
} MIDL_STUB_DESC;
typedef const MIDL_STUB_DESC __RPC_FAR * PMIDL_STUB_DESC;
typedef void __RPC_FAR * PMIDL_XMIT_TYPE;
/*
* MIDL Stub Format String. This is a const in the stub.
*/
#if !defined( RC_INVOKED )
#if _MSC_VER >= 1200
#pragma warning(push)
#endif
#pragma warning( disable:4200 )
#endif
typedef struct _MIDL_FORMAT_STRING
{
short Pad;
unsigned char Format[];
} MIDL_FORMAT_STRING;
#if !defined( RC_INVOKED )
#if _MSC_VER >= 1200
#pragma warning(pop)
#else
#pragma warning( default:4200 )
#endif
#endif
/*
* Stub thunk used for some interpreted server stubs.
*/
typedef void (__RPC_FAR __RPC_API * STUB_THUNK)( PMIDL_STUB_MESSAGE );
typedef long (__RPC_FAR __RPC_API * SERVER_ROUTINE)();
/*
* Server Interpreter's information strucuture.
*/
typedef struct _MIDL_SERVER_INFO_
{
PMIDL_STUB_DESC pStubDesc;
const SERVER_ROUTINE * DispatchTable;
PFORMAT_STRING ProcString;
const unsigned short * FmtStringOffset;
const STUB_THUNK * ThunkTable;
PFORMAT_STRING LocalFormatTypes;
PFORMAT_STRING LocalProcString;
const unsigned short * LocalFmtStringOffset;
} MIDL_SERVER_INFO, *PMIDL_SERVER_INFO;
/*
* Stubless object proxy information structure.
*/
typedef struct _MIDL_STUBLESS_PROXY_INFO
{
PMIDL_STUB_DESC pStubDesc;
PFORMAT_STRING ProcFormatString;
const unsigned short __RPC_FAR * FormatStringOffset;
PFORMAT_STRING LocalFormatTypes;
PFORMAT_STRING LocalProcString;
const unsigned short __RPC_FAR * LocalFmtStringOffset;
} MIDL_STUBLESS_PROXY_INFO;
typedef MIDL_STUBLESS_PROXY_INFO __RPC_FAR * PMIDL_STUBLESS_PROXY_INFO;
/*
* This is the return value from NdrClientCall.
*/
typedef union _CLIENT_CALL_RETURN
{
void __RPC_FAR * Pointer;
LONG_PTR Simple;
} CLIENT_CALL_RETURN;
/*
* Full pointer data structures.
*/
typedef enum
{
XLAT_SERVER = 1,
XLAT_CLIENT
} XLAT_SIDE;
/*
* Stores the translation for the conversion from a full pointer into it's
* corresponding ref id.
*/
typedef struct _FULL_PTR_TO_REFID_ELEMENT
{
struct _FULL_PTR_TO_REFID_ELEMENT __RPC_FAR * Next;
void __RPC_FAR * Pointer;
unsigned long RefId;
unsigned char State;
} FULL_PTR_TO_REFID_ELEMENT, __RPC_FAR *PFULL_PTR_TO_REFID_ELEMENT;
/*
* Full pointer translation tables.
*/
typedef struct _FULL_PTR_XLAT_TABLES
{
/*
* Ref id to pointer translation information.
*/
struct
{
void __RPC_FAR *__RPC_FAR * XlatTable;
unsigned char __RPC_FAR * StateTable;
unsigned long NumberOfEntries;
} RefIdToPointer;
/*
* Pointer to ref id translation information.
*/
struct
{
PFULL_PTR_TO_REFID_ELEMENT __RPC_FAR * XlatTable;
unsigned long NumberOfBuckets;
unsigned long HashMask;
} PointerToRefId;
/*
* Next ref id to use.
*/
unsigned long NextRefId;
/*
* Keep track of the translation size we're handling : server or client.
* This tells us when we have to do reverse translations when we insert
* new translations. On the server we must insert a pointer-to-refid
* translation whenever we insert a refid-to-pointer translation, and
* vica versa for the client.
*/
XLAT_SIDE XlatSide;
} FULL_PTR_XLAT_TABLES, __RPC_FAR *PFULL_PTR_XLAT_TABLES;
/***************************************************************************
** New MIDL 2.0 Ndr routine templates
***************************************************************************/
/*
* Marshall routines
*/
RPCRTAPI
void
RPC_ENTRY
NdrSimpleTypeMarshall(
PMIDL_STUB_MESSAGE pStubMsg,
unsigned char __RPC_FAR * pMemory,
unsigned char FormatChar
);
RPCRTAPI
unsigned char __RPC_FAR *
RPC_ENTRY
NdrPointerMarshall(
PMIDL_STUB_MESSAGE pStubMsg,
unsigned char __RPC_FAR * pMemory,
PFORMAT_STRING pFormat
);
/* Structures */
RPCRTAPI
unsigned char __RPC_FAR *
RPC_ENTRY
NdrSimpleStructMarshall(
PMIDL_STUB_MESSAGE pStubMsg,
unsigned char __RPC_FAR * pMemory,
PFORMAT_STRING pFormat
);
RPCRTAPI
unsigned char __RPC_FAR *
RPC_ENTRY
NdrConformantStructMarshall(
PMIDL_STUB_MESSAGE pStubMsg,
unsigned char __RPC_FAR * pMemory,
PFORMAT_STRING pFormat
);
RPCRTAPI
unsigned char __RPC_FAR *
RPC_ENTRY
NdrConformantVaryingStructMarshall(
PMIDL_STUB_MESSAGE pStubMsg,
unsigned char __RPC_FAR * pMemory,
PFORMAT_STRING pFormat
);
RPCRTAPI
unsigned char __RPC_FAR *
RPC_ENTRY
NdrComplexStructMarshall(
PMIDL_STUB_MESSAGE pStubMsg,
unsigned char __RPC_FAR * pMemory,
PFORMAT_STRING pFormat
);
/* Arrays */
RPCRTAPI
unsigned char __RPC_FAR *
RPC_ENTRY
NdrFixedArrayMarshall(
PMIDL_STUB_MESSAGE pStubMsg,
unsigned char __RPC_FAR * pMemory,
PFORMAT_STRING pFormat
);
RPCRTAPI
unsigned char __RPC_FAR *
RPC_ENTRY
NdrConformantArrayMarshall(
PMIDL_STUB_MESSAGE pStubMsg,
unsigned char __RPC_FAR * pMemory,
PFORMAT_STRING pFormat
);
RPCRTAPI
unsigned char __RPC_FAR *
RPC_ENTRY
NdrConformantVaryingArrayMarshall(
PMIDL_STUB_MESSAGE pStubMsg,
unsigned char __RPC_FAR * pMemory,
PFORMAT_STRING pFormat
);
RPCRTAPI
unsigned char __RPC_FAR *
RPC_ENTRY
NdrVaryingArrayMarshall(
PMIDL_STUB_MESSAGE pStubMsg,
unsigned char __RPC_FAR * pMemory,
PFORMAT_STRING pFormat
);
RPCRTAPI
unsigned char __RPC_FAR *
RPC_ENTRY
NdrComplexArrayMarshall(
PMIDL_STUB_MESSAGE pStubMsg,
unsigned char __RPC_FAR * pMemory,
PFORMAT_STRING pFormat
);
/* Strings */
RPCRTAPI
unsigned char __RPC_FAR *
RPC_ENTRY
NdrNonConformantStringMarshall(
PMIDL_STUB_MESSAGE pStubMsg,
unsigned char __RPC_FAR * pMemory,
PFORMAT_STRING pFormat
);
RPCRTAPI
unsigned char __RPC_FAR *
RPC_ENTRY
NdrConformantStringMarshall(
PMIDL_STUB_MESSAGE pStubMsg,
unsigned char __RPC_FAR * pMemory,
PFORMAT_STRING pFormat
);
/* Unions */
RPCRTAPI
unsigned char __RPC_FAR *
RPC_ENTRY
NdrEncapsulatedUnionMarshall(
PMIDL_STUB_MESSAGE pStubMsg,
unsigned char __RPC_FAR * pMemory,
PFORMAT_STRING pFormat
);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -