rpcndr.h
来自「本源码是vc环境下的usb程序」· C头文件 代码 · 共 2,691 行 · 第 1/5 页
H
2,691 行
unsigned char * Buffer;
/*
* These are used internally by the Ndr routines to mark the beginning
* and end of an incoming RPC buffer.
*/
unsigned char * BufferStart;
unsigned char * BufferEnd;
/*
* Used internally by the Ndr routines as a place holder in the buffer.
* On the marshalling side it's used to mark the location where conformance
* size should be marshalled.
* On the unmarshalling side it's used to mark the location in the buffer
* used during pointer unmarshalling to base pointer offsets off of.
*/
unsigned char * BufferMark;
/* Set by the buffer sizing routines. */
unsigned long BufferLength;
/* Set by the memory sizing routines. */
unsigned long MemorySize;
/* Pointer to user memory. */
unsigned char * Memory;
/* Is the Ndr routine begin called from a client side stub. */
int IsClient;
/* Can the buffer be re-used for memory on unmarshalling. */
int ReuseBuffer;
/* Hold the context for allocate all nodes */
struct NDR_ALLOC_ALL_NODES_CONTEXT *pAllocAllNodesContext;
struct NDR_POINTER_QUEUE_STATE *pPointerQueueState;
/*
* Stuff needed while handling complex structures
*/
/* Ignore imbeded pointers while computing buffer or memory sizes. */
int IgnoreEmbeddedPointers;
/*
* This marks the location in the buffer where pointees of a complex
* struct reside.
*/
unsigned char * PointerBufferMark;
/*
* Used to catch errors in SendReceive.
*/
unsigned char fBufferValid;
unsigned char uFlags;
unsigned short Unused2;
/*
* Used internally by the Ndr routines. Holds the max counts for
* a conformant array.
*/
ULONG_PTR MaxCount;
/*
* Used internally by the Ndr routines. Holds the offsets for a varying
* array.
*/
unsigned long Offset;
/*
* Used internally by the Ndr routines. Holds the actual counts for
* a varying array.
*/
unsigned long ActualCount;
/* Allocation and Free routine to be used by the Ndr routines. */
void * ( __RPC_API * pfnAllocate)(size_t);
void ( __RPC_API * pfnFree)(void *);
/*
* Top of parameter stack. Used for "single call" stubs during marshalling
* to hold the beginning of the parameter list on the stack. Needed to
* extract parameters which hold attribute values for top level arrays and
* pointers.
*/
unsigned char * StackTop;
/*
* Fields used for the transmit_as and represent_as objects.
* For represent_as the mapping is: presented=local, transmit=named.
*/
unsigned char * pPresentedType;
unsigned char * pTransmitType;
/*
* When we first construct a binding on the client side, stick it
* in the rpcmessage and later call RpcGetBuffer, the handle field
* in the rpcmessage is changed. That's fine except that we need to
* have that original handle for use in unmarshalling context handles
* (the second argument in NDRCContextUnmarshall to be exact). So
* stash the contructed handle here and extract it when needed.
*/
handle_t SavedHandle;
/*
* Pointer back to the stub descriptor. Use this to get all handle info.
*/
const struct _MIDL_STUB_DESC * StubDesc;
/*
* Full pointer stuff.
*/
struct _FULL_PTR_XLAT_TABLES * FullPtrXlatTables;
unsigned long FullPtrRefId;
unsigned long PointerLength;
int fInDontFree :1;
int fDontCallFreeInst :1;
int fInOnlyParam :1;
int fHasReturn :1;
int fHasExtensions :1;
int fHasNewCorrDesc :1;
int fIsOicfServer :1;
int fUnused :9;
int fUnused2 :16;
unsigned long dwDestContext;
void * pvDestContext;
NDR_SCONTEXT * SavedContextHandles;
long ParamNumber;
struct IRpcChannelBuffer * pRpcChannelBuffer;
PARRAY_INFO pArrayInfo;
unsigned long * SizePtrCountArray;
unsigned long * SizePtrOffsetArray;
unsigned long * SizePtrLengthArray;
/*
* Interpreter argument queue. Used on server side only.
*/
void * pArgQueue;
unsigned long dwStubPhase;
void * LowStackMark;
/*
* Async message pointer, correlation data - NT 5.0 features.
*/
PNDR_ASYNC_MESSAGE pAsyncMsg;
PNDR_CORRELATION_INFO pCorrInfo;
unsigned char * pCorrMemory;
void * pMemoryList;
/*
* Reserved fields up to this point present since the 3.50 release.
* Reserved fields below were introduced for Windows 2000 release.
* (but not used).
*/
/*
* International character support information - NT 5.1 feature.
*/
CS_STUB_INFO * pCSInfo;
unsigned char * ConformanceMark;
unsigned char * VarianceMark;
#if defined(IA64)
void * BackingStoreLowMark;
#else
INT_PTR Unused;
#endif
struct _NDR_PROC_CONTEXT * pContext;
/*
* Reserved fields up to this point present since Windows 2000 release.
* Fields added for NT5.1
*/
void * pUserMarshalList;
INT_PTR Reserved51_2;
INT_PTR Reserved51_3;
INT_PTR Reserved51_4;
INT_PTR Reserved51_5;
/*
* Reserved fields up to this point present since NT5.1 release.
*/
} MIDL_STUB_MESSAGE, *PMIDL_STUB_MESSAGE;
typedef struct _MIDL_STUB_MESSAGE MIDL_STUB_MESSAGE, *PMIDL_STUB_MESSAGE;
/*
* Generic handle bind/unbind routine pair.
*/
typedef void *
( __RPC_API * GENERIC_BINDING_ROUTINE)
(void *);
typedef void
( __RPC_API * GENERIC_UNBIND_ROUTINE)
(void *, unsigned char *);
typedef struct _GENERIC_BINDING_ROUTINE_PAIR
{
GENERIC_BINDING_ROUTINE pfnBind;
GENERIC_UNBIND_ROUTINE pfnUnbind;
} GENERIC_BINDING_ROUTINE_PAIR, *PGENERIC_BINDING_ROUTINE_PAIR;
typedef struct __GENERIC_BINDING_INFO
{
void * pObj;
unsigned int Size;
GENERIC_BINDING_ROUTINE pfnBind;
GENERIC_UNBIND_ROUTINE pfnUnbind;
} GENERIC_BINDING_INFO, *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_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, *PXMIT_ROUTINE_QUINTUPLE;
typedef unsigned long
( __RPC_USER * USER_MARSHAL_SIZING_ROUTINE)
(unsigned long *,
unsigned long,
void * );
typedef unsigned char *
( __RPC_USER * USER_MARSHAL_MARSHALLING_ROUTINE)
(unsigned long *,
unsigned char * ,
void * );
typedef unsigned char *
( __RPC_USER * USER_MARSHAL_UNMARSHALLING_ROUTINE)
(unsigned long *,
unsigned char *,
void * );
typedef void ( __RPC_USER * USER_MARSHAL_FREEING_ROUTINE)
(unsigned long *,
void * );
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_USER * pfnAllocate)(size_t);
void ( __RPC_USER * pfnFree)(void *);
} MALLOC_FREE_STRUCT;
typedef struct _COMM_FAULT_OFFSETS
{
short CommOffset;
short FaultOffset;
} COMM_FAULT_OFFSETS;
/*
* International character support definitions
*/
typedef enum _IDL_CS_CONVERT
{
IDL_CS_NO_CONVERT,
IDL_CS_IN_PLACE_CONVERT,
IDL_CS_NEW_BUFFER_CONVERT
} IDL_CS_CONVERT;
typedef void
( __RPC_USER * CS_TYPE_NET_SIZE_ROUTINE)
(RPC_BINDING_HANDLE hBinding,
unsigned long ulNetworkCodeSet,
unsigned long ulLocalBufferSize,
IDL_CS_CONVERT * conversionType,
unsigned long * pulNetworkBufferSize,
error_status_t * pStatus);
typedef void
( __RPC_USER * CS_TYPE_LOCAL_SIZE_ROUTINE)
(RPC_BINDING_HANDLE hBinding,
unsigned long ulNetworkCodeSet,
unsigned long ulNetworkBufferSize,
IDL_CS_CONVERT * conversionType,
unsigned long * pulLocalBufferSize,
error_status_t * pStatus);
typedef void
( __RPC_USER * CS_TYPE_TO_NETCS_ROUTINE)
(RPC_BINDING_HANDLE hBinding,
unsigned long ulNetworkCodeSet,
void * pLocalData,
unsigned long ulLocalDataLength,
byte * pNetworkData,
unsigned long * pulNetworkDataLength,
error_status_t * pStatus);
typedef void
( __RPC_USER * CS_TYPE_FROM_NETCS_ROUTINE)
(RPC_BINDING_HANDLE hBinding,
unsigned long ulNetworkCodeSet,
byte * pNetworkData,
unsigned long ulNetworkDataLength,
unsigned long ulLocalBufferSize,
void * pLocalData,
unsigned long * pulLocalDataLength,
error_status_t * pStatus);
typedef void
( __RPC_USER * CS_TAG_GETTING_ROUTINE)
(RPC_BINDING_HANDLE hBinding,
int fServerSide,
unsigned long * pulSendingTag,
unsigned long * pulDesiredReceivingTag,
unsigned long * pulReceivingTag,
error_status_t * pStatus);
void __RPC_USER
RpcCsGetTags(
RPC_BINDING_HANDLE hBinding,
int fServerSide,
unsigned long * pulSendingTag,
unsigned long * pulDesiredReceivingTag,
unsigned long * pulReceivingTag,
error_status_t * pStatus);
typedef struct _NDR_CS_SIZE_CONVERT_ROUTINES
{
CS_TYPE_NET_SIZE_ROUTINE pfnNetSize;
CS_TYPE_TO_NETCS_ROUTINE pfnToNetCs;
CS_TYPE_LOCAL_SIZE_ROUTINE pfnLocalSize;
CS_TYPE_FROM_NETCS_ROUTINE pfnFromNetCs;
} NDR_CS_SIZE_CONVERT_ROUTINES;
typedef struct _NDR_CS_ROUTINES
{
NDR_CS_SIZE_CONVERT_ROUTINES *pSizeConvertRoutines;
CS_TAG_GETTING_ROUTINE *pTagGettingRoutines;
} NDR_CS_ROUTINES;
/*
* MIDL Stub Descriptor
*/
typedef struct _MIDL_STUB_DESC
{
void * RpcInterfaceInformation;
void * ( __RPC_API * pfnAllocate)(size_t);
void ( __RPC_API * pfnFree)(void *);
union
{
handle_t * pAutoHandle;
handle_t * pPrimitiveHandle;
PGENERIC_BINDING_INFO pGenericBindingInfo;
} IMPLICIT_HANDLE_INFO;
const NDR_RUNDOWN * apfnNdrRundownRoutines;
const GENERIC_BINDING_ROUTINE_PAIR * aGenericBindingRoutinePairs;
const EXPR_EVAL * apfnExprEval;
const XMIT_ROUTINE_QUINTUPLE * aXmitQuintuple;
const unsigned char * pFormatTypes;
int fCheckBounds;
/* Ndr library version. */
unsigned long Version;
MALLOC_FREE_STRUCT * pMallocFreeStruct;
long MIDLVersion;
const COMM_FAULT_OFFSETS * CommFaultOffsets;
// New fields for version 3.0+
const USER_MARSHAL_ROUTINE_QUADRUPLE * aUserMarshalQuadruple;
// Notify routines - added for NT5, MIDL 5.0
const NDR_NOTIFY_ROUTINE * NotifyRoutineTable;
/*
* Reserved for future use.
*/
ULONG_PTR mFlags;
// International support routines - added for 64bit post NT5
const NDR_CS_ROUTINES * CsRoutineTables;
void * Reserved4;
ULONG_PTR Reserved5;
// Fields up to now present in win2000 release.
} MIDL_STUB_DESC;
typedef const MIDL_STUB_DESC * PMIDL_STUB_DESC;
typedef void * 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_API * STUB_THUNK)( PMIDL_STUB_MESSAGE );
typedef long ( __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;
PRPC_SYNTAX_IDENTIFIER pTransferSyntax;
ULONG_PTR nCount;
PMIDL_SYNTAX_INFO pSyntaxInfo;
} MIDL_SERVER_INFO, *PMIDL_SERVER_INFO;
#undef _MIDL_STUBLESS_PROXY_INFO
/*
* Stubless object proxy information structure.
*/
typedef struct _MIDL_STUBLESS_PROXY_INFO
{
PMIDL_STUB_DESC pStubDesc;
PFORMAT_STRING ProcFormatString;
const unsigned short * FormatStringOffset;
PRPC_SYNTAX_IDENTIFIER pTransferSyntax;
ULONG_PTR nCount;
PMIDL_SYNTAX_INFO pSyntaxInfo;
} MIDL_STUBLESS_PROXY_INFO;
typedef MIDL_STUBLESS_PROXY_INFO * PMIDL_STUBLESS_PROXY_INFO;
/*
* Multiple transfer syntax information.
*/
typedef struct _MIDL_SYNTAX_INFO
{
RPC_SYNTAX_IDENTIFIER TransferSyntax;
RPC_DISPATCH_TABLE * DispatchTable;
PFORMAT_STRING ProcString;
const unsigned short * FmtStringOffset;
PFORMAT_STRING TypeString;
const void * aUserMarshalQuadruple;
ULONG_PTR pReserved1;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?