|
|
/*++
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. */ 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 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 fUnused :10; 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 */
INT_PTR Reserved51_1; 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, ... );
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__ */
|