📄 rpcndr.h
字号:
RPCRTAPI
void
RPC_ENTRY
short_from_ndr_temp (
IN OUT unsigned char __RPC_FAR * __RPC_FAR * source,
OUT unsigned short __RPC_FAR * target,
IN unsigned long format
);
RPCRTAPI
void
RPC_ENTRY
long_from_ndr (
IN OUT PRPC_MESSAGE source,
OUT unsigned long __RPC_FAR * target
);
RPCRTAPI
void
RPC_ENTRY
long_array_from_ndr(
IN OUT PRPC_MESSAGE SourceMessage,
IN unsigned long LowerIndex,
IN unsigned long UpperIndex,
OUT unsigned long __RPC_FAR * Target
);
RPCRTAPI
void
RPC_ENTRY
long_from_ndr_temp (
IN OUT unsigned char __RPC_FAR * __RPC_FAR * source,
OUT unsigned long __RPC_FAR * target,
IN unsigned long format
);
RPCRTAPI
void
RPC_ENTRY
enum_from_ndr(
IN OUT PRPC_MESSAGE SourceMessage,
OUT unsigned int __RPC_FAR * Target
);
RPCRTAPI
void
RPC_ENTRY
float_from_ndr (
IN OUT PRPC_MESSAGE SourceMessage,
OUT void __RPC_FAR * Target
);
RPCRTAPI
void
RPC_ENTRY
float_array_from_ndr (
IN OUT PRPC_MESSAGE SourceMessage,
IN unsigned long LowerIndex,
IN unsigned long UpperIndex,
OUT void __RPC_FAR * Target
);
RPCRTAPI
void
RPC_ENTRY
double_from_ndr (
IN OUT PRPC_MESSAGE SourceMessage,
OUT void __RPC_FAR * Target
);
RPCRTAPI
void
RPC_ENTRY
double_array_from_ndr (
IN OUT PRPC_MESSAGE SourceMessage,
IN unsigned long LowerIndex,
IN unsigned long UpperIndex,
OUT void __RPC_FAR * Target
);
RPCRTAPI
void
RPC_ENTRY
hyper_from_ndr (
IN OUT PRPC_MESSAGE source,
OUT hyper __RPC_FAR * target
);
RPCRTAPI
void
RPC_ENTRY
hyper_array_from_ndr(
IN OUT PRPC_MESSAGE SourceMessage,
IN unsigned long LowerIndex,
IN unsigned long UpperIndex,
OUT hyper __RPC_FAR * Target
);
RPCRTAPI
void
RPC_ENTRY
hyper_from_ndr_temp (
IN OUT unsigned char __RPC_FAR * __RPC_FAR * source,
OUT hyper __RPC_FAR * target,
IN unsigned long format
);
RPCRTAPI
void
RPC_ENTRY
data_from_ndr (
PRPC_MESSAGE source,
void __RPC_FAR * target,
char __RPC_FAR * format,
unsigned char MscPak
);
RPCRTAPI
void
RPC_ENTRY
data_into_ndr (
void __RPC_FAR * source,
PRPC_MESSAGE target,
char __RPC_FAR * format,
unsigned char MscPak
);
RPCRTAPI
void
RPC_ENTRY
tree_into_ndr (
void __RPC_FAR * source,
PRPC_MESSAGE target,
char __RPC_FAR * format,
unsigned char MscPak
);
RPCRTAPI
void
RPC_ENTRY
data_size_ndr (
void __RPC_FAR * source,
PRPC_MESSAGE target,
char __RPC_FAR * format,
unsigned char MscPak
);
RPCRTAPI
void
RPC_ENTRY
tree_size_ndr (
void __RPC_FAR * source,
PRPC_MESSAGE target,
char __RPC_FAR * format,
unsigned char MscPak
);
RPCRTAPI
void
RPC_ENTRY
tree_peek_ndr (
PRPC_MESSAGE source,
unsigned char __RPC_FAR * __RPC_FAR * buffer,
char __RPC_FAR * format,
unsigned char MscPak
);
RPCRTAPI
void __RPC_FAR *
RPC_ENTRY
midl_allocate (
size_t size
);
/****************************************************************************
MIDL 2.0 ndr definitions.
****************************************************************************/
typedef unsigned long error_status_t;
#define _midl_ma1( p, cast ) *(*( cast **)&p)++
#define _midl_ma2( p, cast ) *(*( cast **)&p)++
#define _midl_ma4( p, cast ) *(*( cast **)&p)++
#define _midl_ma8( p, cast ) *(*( cast **)&p)++
#define _midl_unma1( p, cast ) *(( cast *)p)++
#define _midl_unma2( p, cast ) *(( cast *)p)++
#define _midl_unma3( p, cast ) *(( cast *)p)++
#define _midl_unma4( p, cast ) *(( cast *)p)++
// Some alignment specific macros.
#define _midl_fa2( p ) (p = (RPC_BUFPTR )((unsigned long)(p+1) & 0xfffffffe))
#define _midl_fa4( p ) (p = (RPC_BUFPTR )((unsigned long)(p+3) & 0xfffffffc))
#define _midl_fa8( p ) (p = (RPC_BUFPTR )((unsigned long)(p+7) & 0xfffffff8))
#define _midl_addp( p, n ) (p += n)
// Marshalling macros
#define _midl_marsh_lhs( p, cast ) *(*( cast **)&p)++
#define _midl_marsh_up( mp, p ) *(*(unsigned long **)&mp)++ = (unsigned long)p
#define _midl_advmp( mp ) *(*(unsigned long **)&mp)++
#define _midl_unmarsh_up( p ) (*(*(unsigned long **)&p)++)
////////////////////////////////////////////////////////////////////////////
// Ndr macros.
////////////////////////////////////////////////////////////////////////////
#define NdrMarshConfStringHdr( p, s, l ) (_midl_ma4( p, unsigned long) = s, \
_midl_ma4( p, unsigned long) = 0, \
_midl_ma4( p, unsigned long) = l)
#define NdrUnMarshConfStringHdr(p, s, l) ((s=_midl_unma4(p,unsigned long),\
(_midl_addp(p,4)), \
(l=_midl_unma4(p,unsigned long))
#define NdrMarshCCtxtHdl(pc,p) (NDRCContextMarshall( (NDR_CCONTEXT)pc, p ),p+20)
#define NdrUnMarshCCtxtHdl(pc,p,h,drep) \
(NDRCContextUnmarshall((NDR_CONTEXT)pc,h,p,drep), p+20)
#define NdrUnMarshSCtxtHdl(pc, p,drep) (pc = NdrSContextUnMarshall(p,drep ))
#define NdrMarshSCtxtHdl(pc,p,rd) (NdrSContextMarshall((NDR_SCONTEXT)pc,p, (NDR_RUNDOWN)rd)
#define NdrFieldOffset(s,f) (long)(& (((s __RPC_FAR *)0)->f))
#define NdrFieldPad(s,f,p,t) (NdrFieldOffset(s,f) - NdrFieldOffset(s,p) - sizeof(t))
#if defined(__RPC_MAC__)
#define NdrFcShort(s) (unsigned char)(s >> 8), (unsigned char)(s & 0xff)
#define NdrFcLong(s) (unsigned char)(s >> 24), (unsigned char)((s & 0x00ff0000) >> 16), \
(unsigned char)((s & 0x0000ff00) >> 8), (unsigned char)(s & 0xff)
#else
#define NdrFcShort(s) (unsigned char)(s & 0xff), (unsigned char)(s >> 8)
#define NdrFcLong(s) (unsigned char)(s & 0xff), (unsigned char)((s & 0x0000ff00) >> 8), \
(unsigned char)((s & 0x00ff0000) >> 16), (unsigned char)(s >> 24)
#endif // Mac
//
// On the server side, the following exceptions are mapped to
// the bad stub data exception if -error stub_data is used.
//
#define RPC_BAD_STUB_DATA_EXCEPTION_FILTER \
( (RpcExceptionCode() == STATUS_ACCESS_VIOLATION) || \
(RpcExceptionCode() == STATUS_DATATYPE_MISALIGNMENT) || \
(RpcExceptionCode() == RPC_X_BAD_STUB_DATA) )
/////////////////////////////////////////////////////////////////////////////
// Some stub helper functions.
/////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
// Stub helper structures.
////////////////////////////////////////////////////////////////////////////
struct _MIDL_STUB_MESSAGE;
struct _MIDL_STUB_DESC;
struct _FULL_PTR_XLAT_TABLES;
typedef unsigned char __RPC_FAR * RPC_BUFPTR;
typedef unsigned long RPC_LENGTH;
// Expression evaluation callback routine prototype.
typedef void (__RPC_USER __RPC_FAR * EXPR_EVAL)( struct _MIDL_STUB_MESSAGE __RPC_FAR * );
typedef const unsigned char __RPC_FAR * PFORMAT_STRING;
/*
* Multidimensional conformant/varying array struct.
*/
typedef struct
{
long Dimension;
/* These fields MUST be (unsigned long *) */
unsigned long __RPC_FAR * BufferConformanceMark;
unsigned long __RPC_FAR * BufferVarianceMark;
/* Count arrays, used for top level arrays in -Os stubs */
unsigned long __RPC_FAR * MaxCountArray;
unsigned long __RPC_FAR * OffsetArray;
unsigned long __RPC_FAR * ActualCountArray;
} ARRAY_INFO, __RPC_FAR *PARRAY_INFO;
/*
* Pipe related definitions.
*/
typedef struct _NDR_PIPE_DESC * PNDR_PIPE_DESC;
typedef struct _NDR_PIPE_MESSAGE * PNDR_PIPE_MESSAGE;
typedef struct _NDR_ASYNC_MESSAGE * PNDR_ASYNC_MESSAGE;
/*
* MIDL Stub Message
*/
#if !defined(__RPC_DOS__) && !defined(__RPC_WIN16__) && !defined(__RPC_MAC__)
#include <pshpack4.h>
#endif
typedef struct _MIDL_STUB_MESSAGE
{
/* RPC message structure. */
PRPC_MESSAGE RpcMsg;
/* Pointer into RPC message buffer. */
unsigned char __RPC_FAR * Buffer;
/*
* These are used internally by the Ndr routines to mark the beginning
* and end of an incoming RPC buffer.
*/
unsigned char __RPC_FAR * BufferStart;
unsigned char __RPC_FAR * 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 __RPC_FAR * 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 __RPC_FAR * 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;
/* Holds the current pointer to an allocate all nodes memory block. */
unsigned char __RPC_FAR * AllocAllNodesMemory;
/* Used for debugging asserts only, remove later. */
unsigned char __RPC_FAR * AllocAllNodesMemoryEnd;
/*
* 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 __RPC_FAR * PointerBufferMark;
/*
* Used to catch errors in SendReceive.
*/
unsigned char fBufferValid;
/*
* Obsolete unused field (formerly MaxContextHandleNumber).
*/
unsigned char Unused;
/*
* Used internally by the Ndr routines. Holds the max counts for
* a conformant array.
*/
unsigned long 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_FAR * (__RPC_FAR __RPC_API * pfnAllocate)(size_t);
void (__RPC_FAR __RPC_API * pfnFree)(void __RPC_FAR *);
/*
* 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 __RPC_FAR * StackTop;
/*
* Fields used for the transmit_as and represent_as objects.
* For represent_as the mapping is: presented=local, transmit=named.
*/
unsigned char __RPC_FAR * pPresentedType;
unsigned char __RPC_FAR * 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 __RPC_FAR * StubDesc;
/*
* Full pointer stuff.
*/
struct _FULL_PTR_XLAT_TABLES __RPC_FAR * FullPtrXlatTables;
unsigned long FullPtrRefId;
/*
* flags
*/
int fCheckBounds;
int fInDontFree :1;
int fDontCallFreeInst :1;
int fInOnlyParam :1;
int fHasReturn :1;
unsigned long dwDestContext;
void __RPC_FAR * pvDestContext;
NDR_SCONTEXT * SavedContextHandles;
long ParamNumber;
struct IRpcChannelBuffer __RPC_FAR * pRpcChannelBuffer;
PARRAY_INFO pArrayInfo;
/*
* This is where the Beta2 stub message ends.
*/
unsigned long __RPC_FAR * SizePtrCountArray;
unsigned long __RPC_FAR * SizePtrOffsetArray;
unsigned long __RPC_FAR * SizePtrLengthArray;
/*
* 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, an NT 5.0 feature.
*/
PNDR_ASYNC_MESSAGE pAsyncMsg;
unsigned long Reserved[3];
/*
* Fields up to this point present since the 3.50 release.
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -