3245 lines
75 KiB
C
3245 lines
75 KiB
C
/*++
|
|
|
|
Copyright (c) Microsoft Corporation. All rights reserved.
|
|
|
|
Module Name:
|
|
|
|
rpcndr.h
|
|
|
|
Abstract:
|
|
|
|
Definitions for stub data structures and prototypes of helper functions.
|
|
|
|
--*/
|
|
|
|
// This version of the rpcndr.h file corresponds to MIDL version 5.0.+
|
|
// used with Windows 2000/XP build 1700+
|
|
|
|
|
|
#ifndef __RPCNDR_H_VERSION__
|
|
#define __RPCNDR_H_VERSION__ ( 475 )
|
|
#endif // __RPCNDR_H_VERSION__
|
|
|
|
|
|
#ifndef __RPCNDR_H__
|
|
#define __RPCNDR_H__
|
|
|
|
#if _MSC_VER > 1000
|
|
#pragma once
|
|
#endif
|
|
|
|
#ifdef __REQUIRED_RPCNDR_H_VERSION__
|
|
#if ( __RPCNDR_H_VERSION__ < __REQUIRED_RPCNDR_H_VERSION__ )
|
|
#error incorrect <rpcndr.h> version. Use the header that matches with the MIDL compiler.
|
|
#endif
|
|
#endif
|
|
|
|
|
|
#include <pshpack8.h>
|
|
#include <basetsd.h>
|
|
#include <rpcnsip.h>
|
|
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/****************************************************************************
|
|
|
|
Network Computing Architecture (NCA) definition:
|
|
|
|
Network Data Representation: (NDR) Label format:
|
|
An unsigned long (32 bits) with the following layout:
|
|
|
|
3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
|
|
1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
|
|
+---------------+---------------+---------------+-------+-------+
|
|
| Reserved | Reserved |Floating point | Int | Char |
|
|
| | |Representation | Rep. | Rep. |
|
|
+---------------+---------------+---------------+-------+-------+
|
|
|
|
Where
|
|
|
|
Reserved:
|
|
|
|
Must be zero (0) for NCA 1.5 and NCA 2.0.
|
|
|
|
Floating point Representation is:
|
|
|
|
0 - IEEE
|
|
1 - VAX
|
|
2 - Cray
|
|
3 - IBM
|
|
|
|
Int Rep. is Integer Representation:
|
|
|
|
0 - Big Endian
|
|
1 - Little Endian
|
|
|
|
Char Rep. is Character Representation:
|
|
|
|
0 - ASCII
|
|
1 - EBCDIC
|
|
|
|
The Microsoft Local Data Representation (for all platforms which are
|
|
of interest currently is edefined below:
|
|
|
|
****************************************************************************/
|
|
|
|
#define NDR_CHAR_REP_MASK (unsigned long)0X0000000FL
|
|
#define NDR_INT_REP_MASK (unsigned long)0X000000F0L
|
|
#define NDR_FLOAT_REP_MASK (unsigned long)0X0000FF00L
|
|
|
|
#define NDR_LITTLE_ENDIAN (unsigned long)0X00000010L
|
|
#define NDR_BIG_ENDIAN (unsigned long)0X00000000L
|
|
|
|
#define NDR_IEEE_FLOAT (unsigned long)0X00000000L
|
|
#define NDR_VAX_FLOAT (unsigned long)0X00000100L
|
|
#define NDR_IBM_FLOAT (unsigned long)0X00000300L
|
|
|
|
#define NDR_ASCII_CHAR (unsigned long)0X00000000L
|
|
#define NDR_EBCDIC_CHAR (unsigned long)0X00000001L
|
|
|
|
#if defined(__RPC_MAC__)
|
|
#define NDR_LOCAL_DATA_REPRESENTATION (unsigned long)0X00000000L
|
|
#define NDR_LOCAL_ENDIAN NDR_BIG_ENDIAN
|
|
#else
|
|
#define NDR_LOCAL_DATA_REPRESENTATION (unsigned long)0X00000010L
|
|
#define NDR_LOCAL_ENDIAN NDR_LITTLE_ENDIAN
|
|
#endif
|
|
|
|
|
|
/****************************************************************************
|
|
* Macros for targeted platforms
|
|
****************************************************************************/
|
|
|
|
#if (0x501 <= _WIN32_WINNT)
|
|
#define TARGET_IS_NT51_OR_LATER 1
|
|
#else
|
|
#define TARGET_IS_NT51_OR_LATER 0
|
|
#endif
|
|
|
|
#if (0x500 <= _WIN32_WINNT)
|
|
#define TARGET_IS_NT50_OR_LATER 1
|
|
#else
|
|
#define TARGET_IS_NT50_OR_LATER 0
|
|
#endif
|
|
|
|
#if (defined(_WIN32_DCOM) || 0x400 <= _WIN32_WINNT)
|
|
#define TARGET_IS_NT40_OR_LATER 1
|
|
#else
|
|
#define TARGET_IS_NT40_OR_LATER 0
|
|
#endif
|
|
|
|
#if (0x400 <= WINVER)
|
|
#define TARGET_IS_NT351_OR_WIN95_OR_LATER 1
|
|
#else
|
|
#define TARGET_IS_NT351_OR_WIN95_OR_LATER 0
|
|
#endif
|
|
|
|
/****************************************************************************
|
|
* Other MIDL base types / predefined types:
|
|
****************************************************************************/
|
|
|
|
#define small char
|
|
typedef unsigned char byte;
|
|
typedef byte cs_byte;
|
|
typedef unsigned char boolean;
|
|
|
|
#ifndef _HYPER_DEFINED
|
|
#define _HYPER_DEFINED
|
|
|
|
#if (!defined(_M_IX86) || (defined(_INTEGRAL_MAX_BITS) && _INTEGRAL_MAX_BITS >= 64))
|
|
#define hyper __int64
|
|
#define MIDL_uhyper unsigned __int64
|
|
#else
|
|
typedef double hyper;
|
|
typedef double MIDL_uhyper;
|
|
#endif
|
|
|
|
#endif // _HYPER_DEFINED
|
|
|
|
#ifndef _WCHAR_T_DEFINED
|
|
typedef unsigned short wchar_t;
|
|
#define _WCHAR_T_DEFINED
|
|
#endif
|
|
|
|
#ifndef _SIZE_T_DEFINED
|
|
#ifdef __RPC_WIN64__
|
|
typedef unsigned __int64 size_t;
|
|
#else
|
|
typedef unsigned int size_t;
|
|
#endif
|
|
#define _SIZE_T_DEFINED
|
|
#endif
|
|
|
|
#ifdef __RPC_WIN32__
|
|
#if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED)
|
|
#define __RPC_CALLEE __stdcall
|
|
#else
|
|
#define __RPC_CALLEE
|
|
#endif
|
|
#endif
|
|
|
|
#ifndef __MIDL_USER_DEFINED
|
|
#define midl_user_allocate MIDL_user_allocate
|
|
#define midl_user_free MIDL_user_free
|
|
#define __MIDL_USER_DEFINED
|
|
#endif
|
|
|
|
void * __RPC_USER MIDL_user_allocate(size_t);
|
|
void __RPC_USER MIDL_user_free( void * );
|
|
|
|
#define RPC_VAR_ENTRY __cdecl
|
|
|
|
|
|
/* winnt only */
|
|
#if defined(_M_IX86) || defined(_M_AMD64) || defined(_M_IA64)
|
|
#define __MIDL_DECLSPEC_DLLIMPORT __declspec(dllimport)
|
|
#define __MIDL_DECLSPEC_DLLEXPORT __declspec(dllexport)
|
|
#else
|
|
#define __MIDL_DECLSPEC_DLLIMPORT
|
|
#define __MIDL_DECLSPEC_DLLEXPORT
|
|
#endif
|
|
|
|
|
|
|
|
|
|
/****************************************************************************
|
|
* Context handle management related definitions:
|
|
*
|
|
* Client and Server Contexts.
|
|
*
|
|
****************************************************************************/
|
|
|
|
typedef void * NDR_CCONTEXT;
|
|
|
|
typedef struct
|
|
{
|
|
void * pad[2];
|
|
void * userContext;
|
|
} * NDR_SCONTEXT;
|
|
|
|
#define NDRSContextValue(hContext) (&(hContext)->userContext)
|
|
|
|
#define cbNDRContext 20 /* size of context on WIRE */
|
|
|
|
typedef void (__RPC_USER * NDR_RUNDOWN)(void * context);
|
|
|
|
typedef void (__RPC_USER * NDR_NOTIFY_ROUTINE)(void);
|
|
typedef void (__RPC_USER * NDR_NOTIFY2_ROUTINE)(boolean flag);
|
|
|
|
typedef struct _SCONTEXT_QUEUE {
|
|
unsigned long NumberOfObjects;
|
|
NDR_SCONTEXT * ArrayOfObjects;
|
|
} SCONTEXT_QUEUE, * PSCONTEXT_QUEUE;
|
|
|
|
RPCRTAPI
|
|
RPC_BINDING_HANDLE
|
|
RPC_ENTRY
|
|
NDRCContextBinding (
|
|
IN NDR_CCONTEXT CContext
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NDRCContextMarshall (
|
|
IN NDR_CCONTEXT CContext,
|
|
OUT void *pBuff
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NDRCContextUnmarshall (
|
|
OUT NDR_CCONTEXT * pCContext,
|
|
IN RPC_BINDING_HANDLE hBinding,
|
|
IN void * pBuff,
|
|
IN unsigned long DataRepresentation
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NDRSContextMarshall (
|
|
IN NDR_SCONTEXT CContext,
|
|
OUT void * pBuff,
|
|
IN NDR_RUNDOWN userRunDownIn
|
|
);
|
|
|
|
RPCRTAPI
|
|
NDR_SCONTEXT
|
|
RPC_ENTRY
|
|
NDRSContextUnmarshall (
|
|
IN void * pBuff,
|
|
IN unsigned long DataRepresentation
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NDRSContextMarshallEx (
|
|
IN RPC_BINDING_HANDLE BindingHandle,
|
|
IN NDR_SCONTEXT CContext,
|
|
OUT void * pBuff,
|
|
IN NDR_RUNDOWN userRunDownIn
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NDRSContextMarshall2 (
|
|
IN RPC_BINDING_HANDLE BindingHandle,
|
|
IN NDR_SCONTEXT CContext,
|
|
OUT void * pBuff,
|
|
IN NDR_RUNDOWN userRunDownIn,
|
|
IN void * CtxGuard,
|
|
IN unsigned long Flags
|
|
);
|
|
|
|
RPCRTAPI
|
|
NDR_SCONTEXT
|
|
RPC_ENTRY
|
|
NDRSContextUnmarshallEx (
|
|
IN RPC_BINDING_HANDLE BindingHandle,
|
|
IN void * pBuff,
|
|
IN unsigned long DataRepresentation
|
|
);
|
|
|
|
RPCRTAPI
|
|
NDR_SCONTEXT
|
|
RPC_ENTRY
|
|
NDRSContextUnmarshall2(
|
|
IN RPC_BINDING_HANDLE BindingHandle,
|
|
IN void * pBuff,
|
|
IN unsigned long DataRepresentation,
|
|
IN void * CtxGuard,
|
|
IN unsigned long Flags
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
RpcSsDestroyClientContext (
|
|
IN void * * ContextHandle
|
|
);
|
|
|
|
|
|
/****************************************************************************
|
|
NDR conversion related definitions.
|
|
****************************************************************************/
|
|
|
|
#define byte_from_ndr(source, target) \
|
|
{ \
|
|
*(target) = *(*(char * *)&(source)->Buffer)++; \
|
|
}
|
|
|
|
#define byte_array_from_ndr(Source, LowerIndex, UpperIndex, Target) \
|
|
{ \
|
|
NDRcopy ( \
|
|
(((char *)(Target))+(LowerIndex)), \
|
|
(Source)->Buffer, \
|
|
(unsigned int)((UpperIndex)-(LowerIndex))); \
|
|
*(unsigned long *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); \
|
|
}
|
|
|
|
#define boolean_from_ndr(source, target) \
|
|
{ \
|
|
*(target) = *(*(char * *)&(source)->Buffer)++; \
|
|
}
|
|
|
|
#define boolean_array_from_ndr(Source, LowerIndex, UpperIndex, Target) \
|
|
{ \
|
|
NDRcopy ( \
|
|
(((char *)(Target))+(LowerIndex)), \
|
|
(Source)->Buffer, \
|
|
(unsigned int)((UpperIndex)-(LowerIndex))); \
|
|
*(unsigned long *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); \
|
|
}
|
|
|
|
#define small_from_ndr(source, target) \
|
|
{ \
|
|
*(target) = *(*(char * *)&(source)->Buffer)++; \
|
|
}
|
|
|
|
#define small_from_ndr_temp(source, target, format) \
|
|
{ \
|
|
*(target) = *(*(char * *)(source))++; \
|
|
}
|
|
|
|
#define small_array_from_ndr(Source, LowerIndex, UpperIndex, Target) \
|
|
{ \
|
|
NDRcopy ( \
|
|
(((char *)(Target))+(LowerIndex)), \
|
|
(Source)->Buffer, \
|
|
(unsigned int)((UpperIndex)-(LowerIndex))); \
|
|
*(unsigned long *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); \
|
|
}
|
|
|
|
/****************************************************************************
|
|
Platform specific mapping of c-runtime functions.
|
|
****************************************************************************/
|
|
|
|
#if defined(__RPC_WIN32__) || defined(__RPC_WIN64__)
|
|
#define MIDL_ascii_strlen(string) \
|
|
strlen(string)
|
|
#define MIDL_ascii_strcpy(target,source) \
|
|
strcpy(target,source)
|
|
#define MIDL_memset(s,c,n) \
|
|
memset(s,c,n)
|
|
#endif
|
|
|
|
/****************************************************************************
|
|
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.
|
|
|
|
// RKK64
|
|
// these appear to be used in fossils inside MIDL
|
|
#define _midl_fa2( p ) (p = (RPC_BUFPTR )((ULONG_PTR)(p+1) & ~0x1))
|
|
#define _midl_fa4( p ) (p = (RPC_BUFPTR )((ULONG_PTR)(p+3) & ~0x3))
|
|
#define _midl_fa8( p ) (p = (RPC_BUFPTR )((ULONG_PTR)(p+7) & ~0x7))
|
|
|
|
#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.
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
// RKK64
|
|
// these appear to be used in fossils inside MIDL
|
|
#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)
|
|
|
|
// end of unused
|
|
|
|
#define NdrFieldOffset(s,f) (LONG_PTR)(& (((s *)0)->f))
|
|
#define NdrFieldPad(s,f,p,t) ((unsigned long)(NdrFieldOffset(s,f) - NdrFieldOffset(s,p)) - sizeof(t))
|
|
|
|
#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)
|
|
|
|
//
|
|
// 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) || \
|
|
(RpcExceptionCode() == RPC_S_INVALID_BOUND) )
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// Some stub helper functions.
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
// Stub helper structures.
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
struct _MIDL_STUB_MESSAGE;
|
|
struct _MIDL_STUB_DESC;
|
|
struct _FULL_PTR_XLAT_TABLES;
|
|
|
|
typedef unsigned char * RPC_BUFPTR;
|
|
typedef unsigned long RPC_LENGTH;
|
|
|
|
// Expression evaluation callback routine prototype.
|
|
typedef void (__RPC_USER * EXPR_EVAL)( struct _MIDL_STUB_MESSAGE * );
|
|
|
|
typedef const unsigned char * PFORMAT_STRING;
|
|
|
|
/*
|
|
* Multidimensional conformant/varying array struct.
|
|
*/
|
|
typedef struct
|
|
{
|
|
long Dimension;
|
|
|
|
/* These fields MUST be (unsigned long *) */
|
|
unsigned long * BufferConformanceMark;
|
|
unsigned long * BufferVarianceMark;
|
|
|
|
/* Count arrays, used for top level arrays in -Os stubs */
|
|
unsigned long * MaxCountArray;
|
|
unsigned long * OffsetArray;
|
|
unsigned long * ActualCountArray;
|
|
} ARRAY_INFO, *PARRAY_INFO;
|
|
|
|
|
|
typedef struct _NDR_ASYNC_MESSAGE * PNDR_ASYNC_MESSAGE;
|
|
typedef struct _NDR_CORRELATION_INFO *PNDR_CORRELATION_INFO;
|
|
|
|
/*
|
|
* cs_char info in the stub message
|
|
*/
|
|
|
|
typedef struct
|
|
{
|
|
unsigned long WireCodeset;
|
|
unsigned long DesiredReceivingCodeset;
|
|
void *CSArrayInfo;
|
|
} CS_STUB_INFO;
|
|
|
|
/*
|
|
* MIDL Stub Message
|
|
*/
|
|
|
|
typedef const unsigned char * PFORMAT_STRING;
|
|
typedef struct _MIDL_SYNTAX_INFO MIDL_SYNTAX_INFO, *PMIDL_SYNTAX_INFO;
|
|
|
|
struct NDR_ALLOC_ALL_NODES_CONTEXT;
|
|
struct NDR_POINTER_QUEUE_STATE;
|
|
struct _NDR_PROC_CONTEXT;
|
|
|
|
typedef struct _MIDL_STUB_MESSAGE
|
|
{
|
|
/* RPC message structure. */
|
|
PRPC_MESSAGE RpcMsg;
|
|
|
|
/* Pointer into RPC message buffer. */
|
|
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. */
|
|
unsigned char IsClient;
|
|
unsigned char Pad;
|
|
unsigned short uFlags2;
|
|
|
|
/* 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 UniquePtrCount;
|
|
|
|
/*
|
|
* 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 fHasMemoryValidateCallback: 1;
|
|
int fUnused :8;
|
|
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;
|
|
ULONG_PTR pReserved2;
|
|
} MIDL_SYNTAX_INFO, *PMIDL_SYNTAX_INFO;
|
|
|
|
typedef unsigned short * PARAM_OFFSETTABLE, *PPARAM_OFFSETTABLE;
|
|
|
|
/*
|
|
* This is the return value from NdrClientCall.
|
|
*/
|
|
typedef union _CLIENT_CALL_RETURN
|
|
{
|
|
void * 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 * Next;
|
|
|
|
void * Pointer;
|
|
unsigned long RefId;
|
|
unsigned char State;
|
|
} FULL_PTR_TO_REFID_ELEMENT, *PFULL_PTR_TO_REFID_ELEMENT;
|
|
|
|
/*
|
|
* Full pointer translation tables.
|
|
*/
|
|
typedef struct _FULL_PTR_XLAT_TABLES
|
|
{
|
|
/*
|
|
* Ref id to pointer translation information.
|
|
*/
|
|
struct
|
|
{
|
|
void * * XlatTable;
|
|
unsigned char * StateTable;
|
|
unsigned long NumberOfEntries;
|
|
} RefIdToPointer;
|
|
|
|
/*
|
|
* Pointer to ref id translation information.
|
|
*/
|
|
struct
|
|
{
|
|
PFULL_PTR_TO_REFID_ELEMENT * 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, *PFULL_PTR_XLAT_TABLES;
|
|
|
|
/***************************************************************************
|
|
** New MIDL 2.0 Ndr routine templates
|
|
***************************************************************************/
|
|
|
|
RPC_STATUS RPC_ENTRY
|
|
NdrClientGetSupportedSyntaxes(
|
|
IN RPC_CLIENT_INTERFACE * pInf,
|
|
OUT unsigned long * pCount,
|
|
OUT MIDL_SYNTAX_INFO ** pArr );
|
|
|
|
|
|
RPC_STATUS RPC_ENTRY
|
|
NdrServerGetSupportedSyntaxes(
|
|
IN RPC_SERVER_INTERFACE * pInf,
|
|
OUT unsigned long * pCount,
|
|
OUT MIDL_SYNTAX_INFO ** pArr,
|
|
OUT unsigned long * pPreferSyntaxIndex);
|
|
|
|
/*
|
|
* Marshall routines
|
|
*/
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrSimpleTypeMarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
unsigned char FormatChar
|
|
);
|
|
|
|
RPCRTAPI
|
|
unsigned char *
|
|
RPC_ENTRY
|
|
NdrPointerMarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
RPCRTAPI
|
|
unsigned char *
|
|
RPC_ENTRY
|
|
NdrCsArrayMarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
RPCRTAPI
|
|
unsigned char *
|
|
RPC_ENTRY
|
|
NdrCsTagMarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
/* Structures */
|
|
|
|
RPCRTAPI
|
|
unsigned char *
|
|
RPC_ENTRY
|
|
NdrSimpleStructMarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
RPCRTAPI
|
|
unsigned char *
|
|
RPC_ENTRY
|
|
NdrConformantStructMarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
RPCRTAPI
|
|
unsigned char *
|
|
RPC_ENTRY
|
|
NdrConformantVaryingStructMarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
RPCRTAPI
|
|
unsigned char *
|
|
RPC_ENTRY
|
|
NdrComplexStructMarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
/* Arrays */
|
|
|
|
RPCRTAPI
|
|
unsigned char *
|
|
RPC_ENTRY
|
|
NdrFixedArrayMarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
RPCRTAPI
|
|
unsigned char *
|
|
RPC_ENTRY
|
|
NdrConformantArrayMarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
RPCRTAPI
|
|
unsigned char *
|
|
RPC_ENTRY
|
|
NdrConformantVaryingArrayMarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
RPCRTAPI
|
|
unsigned char *
|
|
RPC_ENTRY
|
|
NdrVaryingArrayMarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
RPCRTAPI
|
|
unsigned char *
|
|
RPC_ENTRY
|
|
NdrComplexArrayMarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
/* Strings */
|
|
|
|
RPCRTAPI
|
|
unsigned char *
|
|
RPC_ENTRY
|
|
NdrNonConformantStringMarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
RPCRTAPI
|
|
unsigned char *
|
|
RPC_ENTRY
|
|
NdrConformantStringMarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
/* Unions */
|
|
|
|
RPCRTAPI
|
|
unsigned char *
|
|
RPC_ENTRY
|
|
NdrEncapsulatedUnionMarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
RPCRTAPI
|
|
unsigned char *
|
|
RPC_ENTRY
|
|
NdrNonEncapsulatedUnionMarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
/* Byte count pointer */
|
|
|
|
RPCRTAPI
|
|
unsigned char *
|
|
RPC_ENTRY
|
|
NdrByteCountPointerMarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
/* Transmit as and represent as*/
|
|
|
|
RPCRTAPI
|
|
unsigned char *
|
|
RPC_ENTRY
|
|
NdrXmitOrRepAsMarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
/* User_marshal */
|
|
|
|
RPCRTAPI
|
|
unsigned char *
|
|
RPC_ENTRY
|
|
NdrUserMarshalMarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
/* Interface pointer */
|
|
|
|
RPCRTAPI
|
|
unsigned char *
|
|
RPC_ENTRY
|
|
NdrInterfacePointerMarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
/* Context handles */
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrClientContextMarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
NDR_CCONTEXT ContextHandle,
|
|
int fCheck
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrServerContextMarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
NDR_SCONTEXT ContextHandle,
|
|
NDR_RUNDOWN RundownRoutine
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrServerContextNewMarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
NDR_SCONTEXT ContextHandle,
|
|
NDR_RUNDOWN RundownRoutine,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
/*
|
|
* Unmarshall routines
|
|
*/
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrSimpleTypeUnmarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
unsigned char FormatChar
|
|
);
|
|
|
|
RPCRTAPI
|
|
unsigned char * RPC_ENTRY
|
|
RPC_ENTRY
|
|
NdrCsArrayUnmarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char ** ppMemory,
|
|
PFORMAT_STRING pFormat,
|
|
unsigned char fMustAlloc
|
|
);
|
|
|
|
RPCRTAPI
|
|
unsigned char * RPC_ENTRY
|
|
RPC_ENTRY
|
|
NdrCsTagUnmarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char ** ppMemory,
|
|
PFORMAT_STRING pFormat,
|
|
unsigned char fMustAlloc
|
|
);
|
|
|
|
RPCRTAPI
|
|
unsigned char * RPC_ENTRY
|
|
NdrRangeUnmarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char ** ppMemory,
|
|
PFORMAT_STRING pFormat,
|
|
unsigned char fMustAlloc
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrCorrelationInitialize(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
void * pMemory,
|
|
unsigned long CacheSize,
|
|
unsigned long flags
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrCorrelationPass(
|
|
PMIDL_STUB_MESSAGE pStubMsg
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrCorrelationFree(
|
|
PMIDL_STUB_MESSAGE pStubMsg
|
|
);
|
|
|
|
RPCRTAPI
|
|
unsigned char *
|
|
RPC_ENTRY
|
|
NdrPointerUnmarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * * ppMemory,
|
|
PFORMAT_STRING pFormat,
|
|
unsigned char fMustAlloc
|
|
);
|
|
|
|
/* Structures */
|
|
|
|
RPCRTAPI
|
|
unsigned char *
|
|
RPC_ENTRY
|
|
NdrSimpleStructUnmarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * * ppMemory,
|
|
PFORMAT_STRING pFormat,
|
|
unsigned char fMustAlloc
|
|
);
|
|
|
|
RPCRTAPI
|
|
unsigned char *
|
|
RPC_ENTRY
|
|
NdrConformantStructUnmarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * * ppMemory,
|
|
PFORMAT_STRING pFormat,
|
|
unsigned char fMustAlloc
|
|
);
|
|
|
|
RPCRTAPI
|
|
unsigned char *
|
|
RPC_ENTRY
|
|
NdrConformantVaryingStructUnmarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * * ppMemory,
|
|
PFORMAT_STRING pFormat,
|
|
unsigned char fMustAlloc
|
|
);
|
|
|
|
RPCRTAPI
|
|
unsigned char *
|
|
RPC_ENTRY
|
|
NdrComplexStructUnmarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * * ppMemory,
|
|
PFORMAT_STRING pFormat,
|
|
unsigned char fMustAlloc
|
|
);
|
|
|
|
/* Arrays */
|
|
|
|
RPCRTAPI
|
|
unsigned char *
|
|
RPC_ENTRY
|
|
NdrFixedArrayUnmarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * * ppMemory,
|
|
PFORMAT_STRING pFormat,
|
|
unsigned char fMustAlloc
|
|
);
|
|
|
|
RPCRTAPI
|
|
unsigned char *
|
|
RPC_ENTRY
|
|
NdrConformantArrayUnmarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * * ppMemory,
|
|
PFORMAT_STRING pFormat,
|
|
unsigned char fMustAlloc
|
|
);
|
|
|
|
RPCRTAPI
|
|
unsigned char *
|
|
RPC_ENTRY
|
|
NdrConformantVaryingArrayUnmarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * * ppMemory,
|
|
PFORMAT_STRING pFormat,
|
|
unsigned char fMustAlloc
|
|
);
|
|
|
|
RPCRTAPI
|
|
unsigned char *
|
|
RPC_ENTRY
|
|
NdrVaryingArrayUnmarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * * ppMemory,
|
|
PFORMAT_STRING pFormat,
|
|
unsigned char fMustAlloc
|
|
);
|
|
|
|
RPCRTAPI
|
|
unsigned char *
|
|
RPC_ENTRY
|
|
NdrComplexArrayUnmarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * * ppMemory,
|
|
PFORMAT_STRING pFormat,
|
|
unsigned char fMustAlloc
|
|
);
|
|
|
|
/* Strings */
|
|
|
|
RPCRTAPI
|
|
unsigned char *
|
|
RPC_ENTRY
|
|
NdrNonConformantStringUnmarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * * ppMemory,
|
|
PFORMAT_STRING pFormat,
|
|
unsigned char fMustAlloc
|
|
);
|
|
|
|
RPCRTAPI
|
|
unsigned char *
|
|
RPC_ENTRY
|
|
NdrConformantStringUnmarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * * ppMemory,
|
|
PFORMAT_STRING pFormat,
|
|
unsigned char fMustAlloc
|
|
);
|
|
|
|
/* Unions */
|
|
|
|
RPCRTAPI
|
|
unsigned char *
|
|
RPC_ENTRY
|
|
NdrEncapsulatedUnionUnmarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * * ppMemory,
|
|
PFORMAT_STRING pFormat,
|
|
unsigned char fMustAlloc
|
|
);
|
|
|
|
RPCRTAPI
|
|
unsigned char *
|
|
RPC_ENTRY
|
|
NdrNonEncapsulatedUnionUnmarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * * ppMemory,
|
|
PFORMAT_STRING pFormat,
|
|
unsigned char fMustAlloc
|
|
);
|
|
|
|
/* Byte count pointer */
|
|
|
|
RPCRTAPI
|
|
unsigned char *
|
|
RPC_ENTRY
|
|
NdrByteCountPointerUnmarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * * ppMemory,
|
|
PFORMAT_STRING pFormat,
|
|
unsigned char fMustAlloc
|
|
);
|
|
|
|
/* Transmit as and represent as*/
|
|
|
|
RPCRTAPI
|
|
unsigned char *
|
|
RPC_ENTRY
|
|
NdrXmitOrRepAsUnmarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * * ppMemory,
|
|
PFORMAT_STRING pFormat,
|
|
unsigned char fMustAlloc
|
|
);
|
|
|
|
/* User_marshal */
|
|
|
|
RPCRTAPI
|
|
unsigned char *
|
|
RPC_ENTRY
|
|
NdrUserMarshalUnmarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * * ppMemory,
|
|
PFORMAT_STRING pFormat,
|
|
unsigned char fMustAlloc
|
|
);
|
|
|
|
/* Interface pointer */
|
|
|
|
RPCRTAPI
|
|
unsigned char *
|
|
RPC_ENTRY
|
|
NdrInterfacePointerUnmarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * * ppMemory,
|
|
PFORMAT_STRING pFormat,
|
|
unsigned char fMustAlloc
|
|
);
|
|
|
|
/* Context handles */
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrClientContextUnmarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
NDR_CCONTEXT * pContextHandle,
|
|
RPC_BINDING_HANDLE BindHandle
|
|
);
|
|
|
|
RPCRTAPI
|
|
NDR_SCONTEXT
|
|
RPC_ENTRY
|
|
NdrServerContextUnmarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg
|
|
);
|
|
|
|
/* New context handle flavors */
|
|
|
|
RPCRTAPI
|
|
NDR_SCONTEXT
|
|
RPC_ENTRY
|
|
NdrContextHandleInitialize(
|
|
IN PMIDL_STUB_MESSAGE pStubMsg,
|
|
IN PFORMAT_STRING pFormat
|
|
);
|
|
|
|
RPCRTAPI
|
|
NDR_SCONTEXT
|
|
RPC_ENTRY
|
|
NdrServerContextNewUnmarshall(
|
|
IN PMIDL_STUB_MESSAGE pStubMsg,
|
|
IN PFORMAT_STRING pFormat
|
|
);
|
|
|
|
/*
|
|
* Buffer sizing routines
|
|
*/
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrPointerBufferSize(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrCsArrayBufferSize(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrCsTagBufferSize(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
/* Structures */
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrSimpleStructBufferSize(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrConformantStructBufferSize(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrConformantVaryingStructBufferSize(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrComplexStructBufferSize(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
/* Arrays */
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrFixedArrayBufferSize(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrConformantArrayBufferSize(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrConformantVaryingArrayBufferSize(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrVaryingArrayBufferSize(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrComplexArrayBufferSize(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
/* Strings */
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrConformantStringBufferSize(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrNonConformantStringBufferSize(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
/* Unions */
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrEncapsulatedUnionBufferSize(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrNonEncapsulatedUnionBufferSize(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
/* Byte count pointer */
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrByteCountPointerBufferSize(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
/* Transmit as and represent as*/
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrXmitOrRepAsBufferSize(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
/* User_marshal */
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrUserMarshalBufferSize(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
/* Interface pointer */
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrInterfacePointerBufferSize(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
// Context Handle size
|
|
//
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrContextHandleSize(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
/*
|
|
* Memory sizing routines
|
|
*/
|
|
|
|
RPCRTAPI
|
|
unsigned long
|
|
RPC_ENTRY
|
|
NdrPointerMemorySize(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
/* cs_char things */
|
|
|
|
RPCRTAPI
|
|
unsigned long
|
|
RPC_ENTRY
|
|
NdrCsArrayMemorySize(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
RPCRTAPI
|
|
unsigned long
|
|
RPC_ENTRY
|
|
NdrCsTagMemorySize(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
/* Structures */
|
|
|
|
RPCRTAPI
|
|
unsigned long
|
|
RPC_ENTRY
|
|
NdrSimpleStructMemorySize(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
RPCRTAPI
|
|
unsigned long
|
|
RPC_ENTRY
|
|
NdrConformantStructMemorySize(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
RPCRTAPI
|
|
unsigned long
|
|
RPC_ENTRY
|
|
NdrConformantVaryingStructMemorySize(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
RPCRTAPI
|
|
unsigned long
|
|
RPC_ENTRY
|
|
NdrComplexStructMemorySize(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
/* Arrays */
|
|
|
|
RPCRTAPI
|
|
unsigned long
|
|
RPC_ENTRY
|
|
NdrFixedArrayMemorySize(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
RPCRTAPI
|
|
unsigned long
|
|
RPC_ENTRY
|
|
NdrConformantArrayMemorySize(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
RPCRTAPI
|
|
unsigned long
|
|
RPC_ENTRY
|
|
NdrConformantVaryingArrayMemorySize(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
RPCRTAPI
|
|
unsigned long
|
|
RPC_ENTRY
|
|
NdrVaryingArrayMemorySize(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
RPCRTAPI
|
|
unsigned long
|
|
RPC_ENTRY
|
|
NdrComplexArrayMemorySize(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
/* Strings */
|
|
|
|
RPCRTAPI
|
|
unsigned long
|
|
RPC_ENTRY
|
|
NdrConformantStringMemorySize(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
RPCRTAPI
|
|
unsigned long
|
|
RPC_ENTRY
|
|
NdrNonConformantStringMemorySize(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
/* Unions */
|
|
|
|
RPCRTAPI
|
|
unsigned long
|
|
RPC_ENTRY
|
|
NdrEncapsulatedUnionMemorySize(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
RPCRTAPI
|
|
unsigned long
|
|
RPC_ENTRY
|
|
NdrNonEncapsulatedUnionMemorySize(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
/* Transmit as and represent as*/
|
|
|
|
RPCRTAPI
|
|
unsigned long
|
|
RPC_ENTRY
|
|
NdrXmitOrRepAsMemorySize(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
/* User_marshal */
|
|
|
|
RPCRTAPI
|
|
unsigned long
|
|
RPC_ENTRY
|
|
NdrUserMarshalMemorySize(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
/* Interface pointer */
|
|
|
|
RPCRTAPI
|
|
unsigned long
|
|
RPC_ENTRY
|
|
NdrInterfacePointerMemorySize(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
/*
|
|
* Freeing routines
|
|
*/
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrPointerFree(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrCsArrayFree(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
/* Structures */
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrSimpleStructFree(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrConformantStructFree(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrConformantVaryingStructFree(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrComplexStructFree(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
/* Arrays */
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrFixedArrayFree(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrConformantArrayFree(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrConformantVaryingArrayFree(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrVaryingArrayFree(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrComplexArrayFree(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
/* Unions */
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrEncapsulatedUnionFree(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrNonEncapsulatedUnionFree(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
/* Byte count */
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrByteCountPointerFree(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
/* Transmit as and represent as*/
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrXmitOrRepAsFree(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
/* User_marshal */
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrUserMarshalFree(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
/* Interface pointer */
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrInterfacePointerFree(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
/*
|
|
* Endian conversion routine.
|
|
*/
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrConvert2(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
PFORMAT_STRING pFormat,
|
|
long NumberParams
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrConvert(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
#define USER_MARSHAL_FC_BYTE 1
|
|
#define USER_MARSHAL_FC_CHAR 2
|
|
#define USER_MARSHAL_FC_SMALL 3
|
|
#define USER_MARSHAL_FC_USMALL 4
|
|
#define USER_MARSHAL_FC_WCHAR 5
|
|
#define USER_MARSHAL_FC_SHORT 6
|
|
#define USER_MARSHAL_FC_USHORT 7
|
|
#define USER_MARSHAL_FC_LONG 8
|
|
#define USER_MARSHAL_FC_ULONG 9
|
|
#define USER_MARSHAL_FC_FLOAT 10
|
|
#define USER_MARSHAL_FC_HYPER 11
|
|
#define USER_MARSHAL_FC_DOUBLE 12
|
|
|
|
RPCRTAPI
|
|
unsigned char *
|
|
RPC_ENTRY
|
|
NdrUserMarshalSimpleTypeConvert(
|
|
unsigned long * pFlags,
|
|
unsigned char * pBuffer,
|
|
unsigned char FormatChar
|
|
);
|
|
|
|
/*
|
|
* Auxilary routines
|
|
*/
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrClientInitializeNew(
|
|
PRPC_MESSAGE pRpcMsg,
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
PMIDL_STUB_DESC pStubDescriptor,
|
|
unsigned int ProcNum
|
|
);
|
|
|
|
RPCRTAPI
|
|
unsigned char *
|
|
RPC_ENTRY
|
|
NdrServerInitializeNew(
|
|
PRPC_MESSAGE pRpcMsg,
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
PMIDL_STUB_DESC pStubDescriptor
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrServerInitializePartial(
|
|
PRPC_MESSAGE pRpcMsg,
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
PMIDL_STUB_DESC pStubDescriptor,
|
|
unsigned long RequestedBufferSize
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrClientInitialize(
|
|
PRPC_MESSAGE pRpcMsg,
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
PMIDL_STUB_DESC pStubDescriptor,
|
|
unsigned int ProcNum
|
|
);
|
|
|
|
RPCRTAPI
|
|
unsigned char *
|
|
RPC_ENTRY
|
|
NdrServerInitialize(
|
|
PRPC_MESSAGE pRpcMsg,
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
PMIDL_STUB_DESC pStubDescriptor
|
|
);
|
|
|
|
RPCRTAPI
|
|
unsigned char *
|
|
RPC_ENTRY
|
|
NdrServerInitializeUnmarshall (
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
PMIDL_STUB_DESC pStubDescriptor,
|
|
PRPC_MESSAGE pRpcMsg
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrServerInitializeMarshall (
|
|
PRPC_MESSAGE pRpcMsg,
|
|
PMIDL_STUB_MESSAGE pStubMsg
|
|
);
|
|
|
|
RPCRTAPI
|
|
unsigned char *
|
|
RPC_ENTRY
|
|
NdrGetBuffer(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned long BufferLength,
|
|
RPC_BINDING_HANDLE Handle
|
|
);
|
|
|
|
RPCRTAPI
|
|
unsigned char *
|
|
RPC_ENTRY
|
|
NdrNsGetBuffer(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned long BufferLength,
|
|
RPC_BINDING_HANDLE Handle
|
|
);
|
|
|
|
RPCRTAPI
|
|
unsigned char *
|
|
RPC_ENTRY
|
|
NdrSendReceive(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pBufferEnd
|
|
);
|
|
|
|
RPCRTAPI
|
|
unsigned char *
|
|
RPC_ENTRY
|
|
NdrNsSendReceive(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * pBufferEnd,
|
|
RPC_BINDING_HANDLE * pAutoHandle
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrFreeBuffer(
|
|
PMIDL_STUB_MESSAGE pStubMsg
|
|
);
|
|
|
|
RPCRTAPI
|
|
RPC_STATUS
|
|
RPC_ENTRY
|
|
NdrGetDcomProtocolVersion(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
RPC_VERSION * pVersion );
|
|
|
|
|
|
/*
|
|
* Interpreter calls.
|
|
*/
|
|
|
|
/* client */
|
|
|
|
CLIENT_CALL_RETURN RPC_VAR_ENTRY
|
|
NdrClientCall2(
|
|
PMIDL_STUB_DESC pStubDescriptor,
|
|
PFORMAT_STRING pFormat,
|
|
...
|
|
);
|
|
|
|
#if defined(_M_IX86) && (_MSC_FULL_VER >= 13103270) && !defined(NDR_IMPL)
|
|
#ifdef __cplusplus
|
|
extern "C"
|
|
#endif
|
|
void * _AddressOfReturnAddress(void);
|
|
#define NdrClientCall2(x, y, z) NdrClientCall2(x, y, (unsigned char *)_AddressOfReturnAddress()+4)
|
|
#endif
|
|
|
|
CLIENT_CALL_RETURN RPC_VAR_ENTRY
|
|
NdrClientCall(
|
|
PMIDL_STUB_DESC pStubDescriptor,
|
|
PFORMAT_STRING pFormat,
|
|
...
|
|
);
|
|
|
|
CLIENT_CALL_RETURN RPC_VAR_ENTRY
|
|
NdrAsyncClientCall(
|
|
PMIDL_STUB_DESC pStubDescriptor,
|
|
PFORMAT_STRING pFormat,
|
|
...
|
|
);
|
|
|
|
CLIENT_CALL_RETURN RPC_VAR_ENTRY
|
|
NdrDcomAsyncClientCall(
|
|
PMIDL_STUB_DESC pStubDescriptor,
|
|
PFORMAT_STRING pFormat,
|
|
...
|
|
);
|
|
|
|
/* server */
|
|
typedef enum {
|
|
STUB_UNMARSHAL,
|
|
STUB_CALL_SERVER,
|
|
STUB_MARSHAL,
|
|
STUB_CALL_SERVER_NO_HRESULT
|
|
}STUB_PHASE;
|
|
|
|
typedef enum {
|
|
PROXY_CALCSIZE,
|
|
PROXY_GETBUFFER,
|
|
PROXY_MARSHAL,
|
|
PROXY_SENDRECEIVE,
|
|
PROXY_UNMARSHAL
|
|
}PROXY_PHASE;
|
|
|
|
struct IRpcStubBuffer; // Forward declaration
|
|
|
|
// Raw RPC only
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrAsyncServerCall(
|
|
PRPC_MESSAGE pRpcMsg
|
|
);
|
|
|
|
// old dcom async scheme
|
|
RPCRTAPI
|
|
long
|
|
RPC_ENTRY
|
|
NdrAsyncStubCall(
|
|
struct IRpcStubBuffer * pThis,
|
|
struct IRpcChannelBuffer * pChannel,
|
|
PRPC_MESSAGE pRpcMsg,
|
|
unsigned long * pdwStubPhase
|
|
);
|
|
|
|
// async uuid
|
|
RPCRTAPI
|
|
long
|
|
RPC_ENTRY
|
|
NdrDcomAsyncStubCall(
|
|
struct IRpcStubBuffer * pThis,
|
|
struct IRpcChannelBuffer * pChannel,
|
|
PRPC_MESSAGE pRpcMsg,
|
|
unsigned long * pdwStubPhase
|
|
);
|
|
|
|
RPCRTAPI
|
|
long
|
|
RPC_ENTRY
|
|
NdrStubCall2(
|
|
struct IRpcStubBuffer * pThis,
|
|
struct IRpcChannelBuffer * pChannel,
|
|
PRPC_MESSAGE pRpcMsg,
|
|
unsigned long * pdwStubPhase
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrServerCall2(
|
|
PRPC_MESSAGE pRpcMsg
|
|
);
|
|
|
|
RPCRTAPI
|
|
long
|
|
RPC_ENTRY
|
|
NdrStubCall (
|
|
struct IRpcStubBuffer * pThis,
|
|
struct IRpcChannelBuffer * pChannel,
|
|
PRPC_MESSAGE pRpcMsg,
|
|
unsigned long * pdwStubPhase
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrServerCall(
|
|
PRPC_MESSAGE pRpcMsg
|
|
);
|
|
|
|
RPCRTAPI
|
|
int
|
|
RPC_ENTRY
|
|
NdrServerUnmarshall(
|
|
struct IRpcChannelBuffer * pChannel,
|
|
PRPC_MESSAGE pRpcMsg,
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
PMIDL_STUB_DESC pStubDescriptor,
|
|
PFORMAT_STRING pFormat,
|
|
void * pParamList
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrServerMarshall(
|
|
struct IRpcStubBuffer * pThis,
|
|
struct IRpcChannelBuffer * pChannel,
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
/* Comm and Fault status */
|
|
|
|
RPCRTAPI
|
|
RPC_STATUS
|
|
RPC_ENTRY
|
|
NdrMapCommAndFaultStatus(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned long * pCommStatus,
|
|
unsigned long * pFaultStatus,
|
|
RPC_STATUS Status
|
|
);
|
|
|
|
/* Helper routines */
|
|
|
|
RPCRTAPI
|
|
int
|
|
RPC_ENTRY
|
|
NdrSH_UPDecision(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * * pPtrInMem,
|
|
RPC_BUFPTR pBuffer
|
|
);
|
|
|
|
RPCRTAPI
|
|
int
|
|
RPC_ENTRY
|
|
NdrSH_TLUPDecision(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * * pPtrInMem
|
|
);
|
|
|
|
RPCRTAPI
|
|
int
|
|
RPC_ENTRY
|
|
NdrSH_TLUPDecisionBuffer(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * * pPtrInMem
|
|
);
|
|
|
|
RPCRTAPI
|
|
int
|
|
RPC_ENTRY
|
|
NdrSH_IfAlloc(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * * pPtrInMem,
|
|
unsigned long Count
|
|
);
|
|
|
|
RPCRTAPI
|
|
int
|
|
RPC_ENTRY
|
|
NdrSH_IfAllocRef(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * * pPtrInMem,
|
|
unsigned long Count
|
|
);
|
|
|
|
RPCRTAPI
|
|
int
|
|
RPC_ENTRY
|
|
NdrSH_IfAllocSet(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * * pPtrInMem,
|
|
unsigned long Count
|
|
);
|
|
|
|
RPCRTAPI
|
|
RPC_BUFPTR
|
|
RPC_ENTRY
|
|
NdrSH_IfCopy(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * * pPtrInMem,
|
|
unsigned long Count
|
|
);
|
|
|
|
RPCRTAPI
|
|
RPC_BUFPTR
|
|
RPC_ENTRY
|
|
NdrSH_IfAllocCopy(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
unsigned char * * pPtrInMem,
|
|
unsigned long Count
|
|
);
|
|
|
|
RPCRTAPI
|
|
unsigned long
|
|
RPC_ENTRY
|
|
NdrSH_Copy(
|
|
unsigned char * pStubMsg,
|
|
unsigned char * pPtrInMem,
|
|
unsigned long Count
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrSH_IfFree(
|
|
PMIDL_STUB_MESSAGE pMessage,
|
|
unsigned char * pPtr );
|
|
|
|
|
|
RPCRTAPI
|
|
RPC_BUFPTR
|
|
RPC_ENTRY
|
|
NdrSH_StringMarshall(
|
|
PMIDL_STUB_MESSAGE pMessage,
|
|
unsigned char * pMemory,
|
|
unsigned long Count,
|
|
int Size );
|
|
|
|
RPCRTAPI
|
|
RPC_BUFPTR
|
|
RPC_ENTRY
|
|
NdrSH_StringUnMarshall(
|
|
PMIDL_STUB_MESSAGE pMessage,
|
|
unsigned char * * pMemory,
|
|
int Size );
|
|
|
|
/****************************************************************************
|
|
MIDL 2.0 memory package: rpc_ss_* rpc_sm_*
|
|
****************************************************************************/
|
|
|
|
typedef void * RPC_SS_THREAD_HANDLE;
|
|
|
|
typedef void * __RPC_API
|
|
RPC_CLIENT_ALLOC (
|
|
IN size_t Size
|
|
);
|
|
|
|
typedef void __RPC_API
|
|
RPC_CLIENT_FREE (
|
|
IN void * Ptr
|
|
);
|
|
|
|
/*++
|
|
RpcSs* package
|
|
--*/
|
|
|
|
RPCRTAPI
|
|
void *
|
|
RPC_ENTRY
|
|
RpcSsAllocate (
|
|
IN size_t Size
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
RpcSsDisableAllocate (
|
|
void
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
RpcSsEnableAllocate (
|
|
void
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
RpcSsFree (
|
|
IN void * NodeToFree
|
|
);
|
|
|
|
RPCRTAPI
|
|
RPC_SS_THREAD_HANDLE
|
|
RPC_ENTRY
|
|
RpcSsGetThreadHandle (
|
|
void
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
RpcSsSetClientAllocFree (
|
|
IN RPC_CLIENT_ALLOC * ClientAlloc,
|
|
IN RPC_CLIENT_FREE * ClientFree
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
RpcSsSetThreadHandle (
|
|
IN RPC_SS_THREAD_HANDLE Id
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
RpcSsSwapClientAllocFree (
|
|
IN RPC_CLIENT_ALLOC * ClientAlloc,
|
|
IN RPC_CLIENT_FREE * ClientFree,
|
|
OUT RPC_CLIENT_ALLOC * * OldClientAlloc,
|
|
OUT RPC_CLIENT_FREE * * OldClientFree
|
|
);
|
|
|
|
/*++
|
|
RpcSm* package
|
|
--*/
|
|
|
|
RPCRTAPI
|
|
void *
|
|
RPC_ENTRY
|
|
RpcSmAllocate (
|
|
IN size_t Size,
|
|
OUT RPC_STATUS * pStatus
|
|
);
|
|
|
|
RPCRTAPI
|
|
RPC_STATUS
|
|
RPC_ENTRY
|
|
RpcSmClientFree (
|
|
IN void * pNodeToFree
|
|
);
|
|
|
|
RPCRTAPI
|
|
RPC_STATUS
|
|
RPC_ENTRY
|
|
RpcSmDestroyClientContext (
|
|
IN void * * ContextHandle
|
|
);
|
|
|
|
RPCRTAPI
|
|
RPC_STATUS
|
|
RPC_ENTRY
|
|
RpcSmDisableAllocate (
|
|
void
|
|
);
|
|
|
|
RPCRTAPI
|
|
RPC_STATUS
|
|
RPC_ENTRY
|
|
RpcSmEnableAllocate (
|
|
void
|
|
);
|
|
|
|
RPCRTAPI
|
|
RPC_STATUS
|
|
RPC_ENTRY
|
|
RpcSmFree (
|
|
IN void * NodeToFree
|
|
);
|
|
|
|
RPCRTAPI
|
|
RPC_SS_THREAD_HANDLE
|
|
RPC_ENTRY
|
|
RpcSmGetThreadHandle (
|
|
OUT RPC_STATUS * pStatus
|
|
);
|
|
|
|
RPCRTAPI
|
|
RPC_STATUS
|
|
RPC_ENTRY
|
|
RpcSmSetClientAllocFree (
|
|
IN RPC_CLIENT_ALLOC * ClientAlloc,
|
|
IN RPC_CLIENT_FREE * ClientFree
|
|
);
|
|
|
|
RPCRTAPI
|
|
RPC_STATUS
|
|
RPC_ENTRY
|
|
RpcSmSetThreadHandle (
|
|
IN RPC_SS_THREAD_HANDLE Id
|
|
);
|
|
|
|
RPCRTAPI
|
|
RPC_STATUS
|
|
RPC_ENTRY
|
|
RpcSmSwapClientAllocFree (
|
|
IN RPC_CLIENT_ALLOC * ClientAlloc,
|
|
IN RPC_CLIENT_FREE * ClientFree,
|
|
OUT RPC_CLIENT_ALLOC * * OldClientAlloc,
|
|
OUT RPC_CLIENT_FREE * * OldClientFree
|
|
);
|
|
|
|
/*++
|
|
Ndr stub entry points
|
|
--*/
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrRpcSsEnableAllocate(
|
|
PMIDL_STUB_MESSAGE pMessage );
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrRpcSsDisableAllocate(
|
|
PMIDL_STUB_MESSAGE pMessage );
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrRpcSmSetClientToOsf(
|
|
PMIDL_STUB_MESSAGE pMessage );
|
|
|
|
RPCRTAPI
|
|
void *
|
|
RPC_ENTRY
|
|
NdrRpcSmClientAllocate (
|
|
IN size_t Size
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrRpcSmClientFree (
|
|
IN void * NodeToFree
|
|
);
|
|
|
|
RPCRTAPI
|
|
void *
|
|
RPC_ENTRY
|
|
NdrRpcSsDefaultAllocate (
|
|
IN size_t Size
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrRpcSsDefaultFree (
|
|
IN void * NodeToFree
|
|
);
|
|
|
|
/****************************************************************************
|
|
end of memory package: rpc_ss_* rpc_sm_*
|
|
****************************************************************************/
|
|
|
|
/****************************************************************************
|
|
* Full Pointer APIs
|
|
****************************************************************************/
|
|
|
|
RPCRTAPI
|
|
PFULL_PTR_XLAT_TABLES
|
|
RPC_ENTRY
|
|
NdrFullPointerXlatInit(
|
|
unsigned long NumberOfPointers,
|
|
XLAT_SIDE XlatSide
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrFullPointerXlatFree(
|
|
PFULL_PTR_XLAT_TABLES pXlatTables
|
|
);
|
|
|
|
RPCRTAPI
|
|
int
|
|
RPC_ENTRY
|
|
NdrFullPointerQueryPointer(
|
|
PFULL_PTR_XLAT_TABLES pXlatTables,
|
|
void * pPointer,
|
|
unsigned char QueryType,
|
|
unsigned long * pRefId
|
|
);
|
|
|
|
RPCRTAPI
|
|
int
|
|
RPC_ENTRY
|
|
NdrFullPointerQueryRefId(
|
|
PFULL_PTR_XLAT_TABLES pXlatTables,
|
|
unsigned long RefId,
|
|
unsigned char QueryType,
|
|
void * * ppPointer
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrFullPointerInsertRefId(
|
|
PFULL_PTR_XLAT_TABLES pXlatTables,
|
|
unsigned long RefId,
|
|
void * pPointer
|
|
);
|
|
|
|
RPCRTAPI
|
|
int
|
|
RPC_ENTRY
|
|
NdrFullPointerFree(
|
|
PFULL_PTR_XLAT_TABLES pXlatTables,
|
|
void * Pointer
|
|
);
|
|
|
|
RPCRTAPI
|
|
void *
|
|
RPC_ENTRY
|
|
NdrAllocate(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
size_t Len
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrClearOutParameters(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
PFORMAT_STRING pFormat,
|
|
void * ArgAddr
|
|
);
|
|
|
|
|
|
/****************************************************************************
|
|
* Proxy APIs
|
|
****************************************************************************/
|
|
|
|
RPCRTAPI
|
|
void *
|
|
RPC_ENTRY
|
|
NdrOleAllocate (
|
|
IN size_t Size
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrOleFree (
|
|
IN void * NodeToFree
|
|
);
|
|
|
|
#ifdef CONST_VTABLE
|
|
#define CONST_VTBL const
|
|
#else
|
|
#define CONST_VTBL
|
|
#endif
|
|
|
|
/****************************************************************************
|
|
* VC COM support
|
|
****************************************************************************/
|
|
|
|
#ifndef DECLSPEC_SELECTANY
|
|
#if (_MSC_VER >= 1100)
|
|
#define DECLSPEC_SELECTANY __declspec(selectany)
|
|
#else
|
|
#define DECLSPEC_SELECTANY
|
|
#endif
|
|
#endif
|
|
|
|
#ifndef DECLSPEC_NOVTABLE
|
|
#if (_MSC_VER >= 1100) && defined(__cplusplus)
|
|
#define DECLSPEC_NOVTABLE __declspec(novtable)
|
|
#else
|
|
#define DECLSPEC_NOVTABLE
|
|
#endif
|
|
#endif
|
|
|
|
#ifndef DECLSPEC_UUID
|
|
#if (_MSC_VER >= 1100) && defined(__cplusplus)
|
|
#define DECLSPEC_UUID(x) __declspec(uuid(x))
|
|
#else
|
|
#define DECLSPEC_UUID(x)
|
|
#endif
|
|
#endif
|
|
|
|
#define MIDL_INTERFACE(x) struct DECLSPEC_UUID(x) DECLSPEC_NOVTABLE
|
|
|
|
#if _MSC_VER >= 1100
|
|
#define EXTERN_GUID(itf,l1,s1,s2,c1,c2,c3,c4,c5,c6,c7,c8) \
|
|
EXTERN_C const IID DECLSPEC_SELECTANY itf = {l1,s1,s2,{c1,c2,c3,c4,c5,c6,c7,c8}}
|
|
#else
|
|
#define EXTERN_GUID(itf,l1,s1,s2,c1,c2,c3,c4,c5,c6,c7,c8) EXTERN_C const IID itf
|
|
#endif
|
|
|
|
/****************************************************************************
|
|
* UserMarshal information
|
|
****************************************************************************/
|
|
|
|
typedef struct _NDR_USER_MARSHAL_INFO_LEVEL1
|
|
{
|
|
void * Buffer;
|
|
unsigned long BufferSize;
|
|
void *(__RPC_API * pfnAllocate)(size_t);
|
|
void (__RPC_API * pfnFree)(void *);
|
|
struct IRpcChannelBuffer * pRpcChannelBuffer;
|
|
ULONG_PTR Reserved[5];
|
|
} NDR_USER_MARSHAL_INFO_LEVEL1;
|
|
|
|
#if !defined( RC_INVOKED )
|
|
#if _MSC_VER >= 1200
|
|
#pragma warning(push)
|
|
#endif
|
|
#pragma warning(disable:4201)
|
|
#endif
|
|
|
|
typedef struct _NDR_USER_MARSHAL_INFO
|
|
{
|
|
unsigned long InformationLevel;
|
|
union {
|
|
NDR_USER_MARSHAL_INFO_LEVEL1 Level1;
|
|
};
|
|
} NDR_USER_MARSHAL_INFO;
|
|
|
|
#if !defined( RC_INVOKED )
|
|
#if _MSC_VER >= 1200
|
|
#pragma warning(pop)
|
|
#else
|
|
#pragma warning(default:4201)
|
|
#endif
|
|
#endif
|
|
|
|
RPC_STATUS
|
|
RPC_ENTRY
|
|
NdrGetUserMarshalInfo (
|
|
IN unsigned long * pFlags,
|
|
IN unsigned long InformationLevel,
|
|
OUT NDR_USER_MARSHAL_INFO * pMarshalInfo
|
|
);
|
|
|
|
/****************************************************************************
|
|
* 64bit APIs
|
|
****************************************************************************/
|
|
RPC_STATUS RPC_ENTRY
|
|
NdrCreateServerInterfaceFromStub(
|
|
IN struct IRpcStubBuffer* pStub,
|
|
IN OUT RPC_SERVER_INTERFACE *pServerIf );
|
|
|
|
/*
|
|
* Interpreter calls
|
|
*/
|
|
CLIENT_CALL_RETURN RPC_VAR_ENTRY
|
|
NdrClientCall3(
|
|
MIDL_STUBLESS_PROXY_INFO *pProxyInfo,
|
|
unsigned long nProcNum,
|
|
void * pReturnValue,
|
|
...
|
|
);
|
|
|
|
CLIENT_CALL_RETURN RPC_VAR_ENTRY
|
|
Ndr64AsyncClientCall(
|
|
MIDL_STUBLESS_PROXY_INFO *pProxyInfo,
|
|
unsigned long nProcNum,
|
|
void * pReturnValue,
|
|
...
|
|
);
|
|
|
|
CLIENT_CALL_RETURN RPC_VAR_ENTRY
|
|
Ndr64DcomAsyncClientCall(
|
|
MIDL_STUBLESS_PROXY_INFO *pProxyInfo,
|
|
unsigned long nProcNum,
|
|
void * pReturnValue,
|
|
...
|
|
);
|
|
|
|
struct IRpcStubBuffer; // Forward declaration
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
Ndr64AsyncServerCall(
|
|
PRPC_MESSAGE pRpcMsg
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
Ndr64AsyncServerCall64(
|
|
PRPC_MESSAGE pRpcMsg
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
Ndr64AsyncServerCallAll(
|
|
PRPC_MESSAGE pRpcMsg
|
|
);
|
|
|
|
RPCRTAPI
|
|
long
|
|
RPC_ENTRY
|
|
Ndr64AsyncStubCall(
|
|
struct IRpcStubBuffer * pThis,
|
|
struct IRpcChannelBuffer * pChannel,
|
|
PRPC_MESSAGE pRpcMsg,
|
|
unsigned long * pdwStubPhase
|
|
);
|
|
|
|
/* async uuid */
|
|
RPCRTAPI
|
|
long
|
|
RPC_ENTRY
|
|
Ndr64DcomAsyncStubCall(
|
|
struct IRpcStubBuffer * pThis,
|
|
struct IRpcChannelBuffer * pChannel,
|
|
PRPC_MESSAGE pRpcMsg,
|
|
unsigned long * pdwStubPhase
|
|
);
|
|
|
|
RPCRTAPI
|
|
long
|
|
RPC_ENTRY
|
|
NdrStubCall3 (
|
|
struct IRpcStubBuffer * pThis,
|
|
struct IRpcChannelBuffer * pChannel,
|
|
PRPC_MESSAGE pRpcMsg,
|
|
unsigned long * pdwStubPhase
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrServerCallAll(
|
|
PRPC_MESSAGE pRpcMsg
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrServerCallNdr64(
|
|
PRPC_MESSAGE pRpcMsg
|
|
);
|
|
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrServerCall3(
|
|
PRPC_MESSAGE pRpcMsg
|
|
);
|
|
|
|
|
|
/* [partial_ignore] functions*/
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrPartialIgnoreClientMarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
void * pMemory
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrPartialIgnoreServerUnmarshall(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
void ** ppMemory
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrPartialIgnoreClientBufferSize(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
void * pMemory
|
|
);
|
|
|
|
RPCRTAPI
|
|
void
|
|
RPC_ENTRY
|
|
NdrPartialIgnoreServerInitialize(
|
|
PMIDL_STUB_MESSAGE pStubMsg,
|
|
void ** ppMemory,
|
|
PFORMAT_STRING pFormat
|
|
);
|
|
|
|
|
|
void RPC_ENTRY
|
|
RpcUserFree( handle_t AsyncHandle, void * pBuffer );
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#include <poppack.h>
|
|
|
|
#endif /* __RPCNDR_H__ */
|
|
|