diff options
Diffstat (limited to 'public/sdk/inc/rpcndr.h')
-rw-r--r-- | public/sdk/inc/rpcndr.h | 2630 |
1 files changed, 2630 insertions, 0 deletions
diff --git a/public/sdk/inc/rpcndr.h b/public/sdk/inc/rpcndr.h new file mode 100644 index 000000000..65d1cdbfe --- /dev/null +++ b/public/sdk/inc/rpcndr.h @@ -0,0 +1,2630 @@ +/*++ + +Copyright (c) 1992-1996 Microsoft Corporation + +Module Name: + + rpcndr.h + +Abstract: + + Definitions for stub data structures and prototypes of helper functions. + +Author: + + DonnaLi (01-01-91) + +Environment: + + DOS, Win 3.X, and Win/NT. + +Revision History: + + DONNALI 08-29-91 Start recording history + donnali 09-11-91 change conversion macros + donnali 09-18-91 check in files for moving + STEVEZ 10-15-91 Merge with NT tree + donnali 10-28-91 add prototype + donnali 11-19-91 bugfix for strings + MIKEMON 12-17-91 DCE runtime API conversion + donnali 03-24-92 change rpc public header f + STEVEZ 04-04-92 add nsi include + mikemon 04-18-92 security support and misc + DovhH 04-24-24 Changed signature of <int>_from_ndr + (to unsigned <int>) + Added <base_type>_array_from_ndr routines + RyszardK 06-17-93 Added support for hyper + VibhasC 09-11-93 Created rpcndrn.h + DKays 10-14-93 Fixed up rpcndrn.h MIDL 2.0 + RyszardK 01-15-94 Merged in the midl 2.0 changes from rpcndrn.h + Stevebl 04-22-96 Hookole support changes to MIDL_*_INFO + +--*/ + +#ifndef __RPCNDR_H__ +#define __RPCNDR_H__ + +// +// Set the packing level for RPC structures for Dos, Windows and Mac. +// + +#if defined(__RPC_DOS__) || defined(__RPC_WIN16__) || defined(__RPC_MAC__) +#pragma pack(2) +#endif + +#if defined(__RPC_MAC__) +#define _MAC_ +#endif + +#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_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 (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 unsigned char boolean; + +#ifndef _HYPER_DEFINED +#define _HYPER_DEFINED + +#if !defined(__RPC_DOS__) && !defined(__RPC_WIN16__) && !defined(__RPC_MAC__) && (!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 +typedef unsigned int size_t; +#define _SIZE_T_DEFINED +#endif + +#ifdef __RPC_DOS__ +#define __RPC_CALLEE __far __pascal +#endif + +#ifdef __RPC_WIN16__ +#define __RPC_CALLEE __far __pascal __export +#endif + +#ifdef __RPC_WIN32__ +#if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED) +#define __RPC_CALLEE __stdcall +#else +#define __RPC_CALLEE +#endif +#endif + +#ifdef __RPC_MAC__ +#define __RPC_CALLEE __far +#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_FAR * __RPC_USER MIDL_user_allocate(size_t); +void __RPC_USER MIDL_user_free( void __RPC_FAR * ); + +#ifdef __RPC_WIN16__ +#define RPC_VAR_ENTRY __export __cdecl +#else +#define RPC_VAR_ENTRY __cdecl +#endif + + +/* winnt only */ +#if defined(_M_MRX000) || defined(_M_IX86) || defined(_M_ALPHA) +#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 __RPC_FAR * NDR_CCONTEXT; + +typedef struct + { + void __RPC_FAR * pad[2]; + void __RPC_FAR * userContext; + } __RPC_FAR * NDR_SCONTEXT; + +#define NDRSContextValue(hContext) (&(hContext)->userContext) + +#define cbNDRContext 20 /* size of context on WIRE */ + +typedef void (__RPC_USER __RPC_FAR * NDR_RUNDOWN)(void __RPC_FAR * context); + +typedef struct _SCONTEXT_QUEUE { + unsigned long NumberOfObjects; + NDR_SCONTEXT * ArrayOfObjects; + } SCONTEXT_QUEUE, __RPC_FAR * PSCONTEXT_QUEUE; + +RPC_BINDING_HANDLE RPC_ENTRY +NDRCContextBinding ( + IN NDR_CCONTEXT CContext + ); + +void RPC_ENTRY +NDRCContextMarshall ( + IN NDR_CCONTEXT CContext, + OUT void __RPC_FAR *pBuff + ); + +void RPC_ENTRY +NDRCContextUnmarshall ( + OUT NDR_CCONTEXT __RPC_FAR *pCContext, + IN RPC_BINDING_HANDLE hBinding, + IN void __RPC_FAR *pBuff, + IN unsigned long DataRepresentation + ); + +void RPC_ENTRY +NDRSContextMarshall ( + IN NDR_SCONTEXT CContext, + OUT void __RPC_FAR *pBuff, + IN NDR_RUNDOWN userRunDownIn + ); + +NDR_SCONTEXT RPC_ENTRY +NDRSContextUnmarshall ( + IN void __RPC_FAR *pBuff, + IN unsigned long DataRepresentation + ); + +void RPC_ENTRY +RpcSsDestroyClientContext ( + IN void __RPC_FAR * __RPC_FAR * ContextHandle + ); + + +/**************************************************************************** + NDR conversion related definitions. + ****************************************************************************/ + +#define byte_from_ndr(source, target) \ + { \ + *(target) = *(*(char __RPC_FAR * __RPC_FAR *)&(source)->Buffer)++; \ + } + +#define byte_array_from_ndr(Source, LowerIndex, UpperIndex, Target) \ + { \ + NDRcopy ( \ + (((char __RPC_FAR *)(Target))+(LowerIndex)), \ + (Source)->Buffer, \ + (unsigned int)((UpperIndex)-(LowerIndex))); \ + *(unsigned long __RPC_FAR *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); \ + } + +#define boolean_from_ndr(source, target) \ + { \ + *(target) = *(*(char __RPC_FAR * __RPC_FAR *)&(source)->Buffer)++; \ + } + +#define boolean_array_from_ndr(Source, LowerIndex, UpperIndex, Target) \ + { \ + NDRcopy ( \ + (((char __RPC_FAR *)(Target))+(LowerIndex)), \ + (Source)->Buffer, \ + (unsigned int)((UpperIndex)-(LowerIndex))); \ + *(unsigned long __RPC_FAR *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); \ + } + +#define small_from_ndr(source, target) \ + { \ + *(target) = *(*(char __RPC_FAR * __RPC_FAR *)&(source)->Buffer)++; \ + } + +#define small_from_ndr_temp(source, target, format) \ + { \ + *(target) = *(*(char __RPC_FAR * __RPC_FAR *)(source))++; \ + } + +#define small_array_from_ndr(Source, LowerIndex, UpperIndex, Target) \ + { \ + NDRcopy ( \ + (((char __RPC_FAR *)(Target))+(LowerIndex)), \ + (Source)->Buffer, \ + (unsigned int)((UpperIndex)-(LowerIndex))); \ + *(unsigned long __RPC_FAR *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); \ + } + +/**************************************************************************** + Platform specific mapping of c-runtime functions. + ****************************************************************************/ + +#ifdef __RPC_DOS__ +#define MIDL_ascii_strlen(string) \ + _fstrlen(string) +#define MIDL_ascii_strcpy(target,source) \ + _fstrcpy(target,source) +#define MIDL_memset(s,c,n) \ + _fmemset(s,c,n) +#endif + +#ifdef __RPC_WIN16__ +#define MIDL_ascii_strlen(string) \ + _fstrlen(string) +#define MIDL_ascii_strcpy(target,source) \ + _fstrcpy(target,source) +#define MIDL_memset(s,c,n) \ + _fmemset(s,c,n) +#endif + +#if defined(__RPC_WIN32__) || defined(__RPC_MAC__) +#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 + +/**************************************************************************** + Ndr Library helper function prototypes for MIDL 1.0 ndr functions. + ****************************************************************************/ + +void RPC_ENTRY +NDRcopy ( + IN void __RPC_FAR *pTarget, + IN void __RPC_FAR *pSource, + IN unsigned int size + ); + +size_t RPC_ENTRY +MIDL_wchar_strlen ( + IN wchar_t __RPC_FAR * s + ); + +void RPC_ENTRY +MIDL_wchar_strcpy ( + OUT void __RPC_FAR * t, + IN wchar_t __RPC_FAR * s + ); + +void RPC_ENTRY +char_from_ndr ( + IN OUT PRPC_MESSAGE SourceMessage, + OUT unsigned char __RPC_FAR * Target + ); + +void RPC_ENTRY +char_array_from_ndr ( + IN OUT PRPC_MESSAGE SourceMessage, + IN unsigned long LowerIndex, + IN unsigned long UpperIndex, + OUT unsigned char __RPC_FAR * Target + ); + +void RPC_ENTRY +short_from_ndr ( + IN OUT PRPC_MESSAGE source, + OUT unsigned short __RPC_FAR * target + ); + +void RPC_ENTRY +short_array_from_ndr( + IN OUT PRPC_MESSAGE SourceMessage, + IN unsigned long LowerIndex, + IN unsigned long UpperIndex, + OUT unsigned short __RPC_FAR * Target + ); + +void RPC_ENTRY +short_from_ndr_temp ( + IN OUT unsigned char __RPC_FAR * __RPC_FAR * source, + OUT unsigned short __RPC_FAR * target, + IN unsigned long format + ); + +void RPC_ENTRY +long_from_ndr ( + IN OUT PRPC_MESSAGE source, + OUT unsigned long __RPC_FAR * target + ); + +void RPC_ENTRY +long_array_from_ndr( + IN OUT PRPC_MESSAGE SourceMessage, + IN unsigned long LowerIndex, + IN unsigned long UpperIndex, + OUT unsigned long __RPC_FAR * Target + ); + +void RPC_ENTRY +long_from_ndr_temp ( + IN OUT unsigned char __RPC_FAR * __RPC_FAR * source, + OUT unsigned long __RPC_FAR * target, + IN unsigned long format + ); + +void RPC_ENTRY +enum_from_ndr( + IN OUT PRPC_MESSAGE SourceMessage, + OUT unsigned int __RPC_FAR * Target + ); + +void RPC_ENTRY +float_from_ndr ( + IN OUT PRPC_MESSAGE SourceMessage, + OUT void __RPC_FAR * Target + ); + +void RPC_ENTRY +float_array_from_ndr ( + IN OUT PRPC_MESSAGE SourceMessage, + IN unsigned long LowerIndex, + IN unsigned long UpperIndex, + OUT void __RPC_FAR * Target + ); + +void RPC_ENTRY +double_from_ndr ( + IN OUT PRPC_MESSAGE SourceMessage, + OUT void __RPC_FAR * Target + ); + +void RPC_ENTRY +double_array_from_ndr ( + IN OUT PRPC_MESSAGE SourceMessage, + IN unsigned long LowerIndex, + IN unsigned long UpperIndex, + OUT void __RPC_FAR * Target + ); + +void RPC_ENTRY +hyper_from_ndr ( + IN OUT PRPC_MESSAGE source, + OUT hyper __RPC_FAR * target + ); + +void RPC_ENTRY +hyper_array_from_ndr( + IN OUT PRPC_MESSAGE SourceMessage, + IN unsigned long LowerIndex, + IN unsigned long UpperIndex, + OUT hyper __RPC_FAR * Target + ); + +void RPC_ENTRY +hyper_from_ndr_temp ( + IN OUT unsigned char __RPC_FAR * __RPC_FAR * source, + OUT hyper __RPC_FAR * target, + IN unsigned long format + ); + +void RPC_ENTRY +data_from_ndr ( + PRPC_MESSAGE source, + void __RPC_FAR * target, + char __RPC_FAR * format, + unsigned char MscPak + ); + +void RPC_ENTRY +data_into_ndr ( + void __RPC_FAR * source, + PRPC_MESSAGE target, + char __RPC_FAR * format, + unsigned char MscPak + ); + +void RPC_ENTRY +tree_into_ndr ( + void __RPC_FAR * source, + PRPC_MESSAGE target, + char __RPC_FAR * format, + unsigned char MscPak + ); + +void RPC_ENTRY +data_size_ndr ( + void __RPC_FAR * source, + PRPC_MESSAGE target, + char __RPC_FAR * format, + unsigned char MscPak + ); + +void RPC_ENTRY +tree_size_ndr ( + void __RPC_FAR * source, + PRPC_MESSAGE target, + char __RPC_FAR * format, + unsigned char MscPak + ); + +void RPC_ENTRY +tree_peek_ndr ( + PRPC_MESSAGE source, + unsigned char __RPC_FAR * __RPC_FAR * buffer, + char __RPC_FAR * format, + unsigned char MscPak + ); + +void __RPC_FAR * RPC_ENTRY +midl_allocate ( + size_t size + ); + +/**************************************************************************** + MIDL 2.0 ndr definitions. + ****************************************************************************/ + +typedef unsigned long error_status_t; + +#define _midl_ma1( p, cast ) *(*( cast **)&p)++ +#define _midl_ma2( p, cast ) *(*( cast **)&p)++ +#define _midl_ma4( p, cast ) *(*( cast **)&p)++ +#define _midl_ma8( p, cast ) *(*( cast **)&p)++ + +#define _midl_unma1( p, cast ) *(( cast *)p)++ +#define _midl_unma2( p, cast ) *(( cast *)p)++ +#define _midl_unma3( p, cast ) *(( cast *)p)++ +#define _midl_unma4( p, cast ) *(( cast *)p)++ + +// Some alignment specific macros. + + +#define _midl_fa2( p ) (p = (RPC_BUFPTR )((unsigned long)(p+1) & 0xfffffffe)) +#define _midl_fa4( p ) (p = (RPC_BUFPTR )((unsigned long)(p+3) & 0xfffffffc)) +#define _midl_fa8( p ) (p = (RPC_BUFPTR )((unsigned long)(p+7) & 0xfffffff8)) + +#define _midl_addp( p, n ) (p += n) + +// Marshalling macros + +#define _midl_marsh_lhs( p, cast ) *(*( cast **)&p)++ +#define _midl_marsh_up( mp, p ) *(*(unsigned long **)&mp)++ = (unsigned long)p +#define _midl_advmp( mp ) *(*(unsigned long **)&mp)++ +#define _midl_unmarsh_up( p ) (*(*(unsigned long **)&p)++) + + +//////////////////////////////////////////////////////////////////////////// +// Ndr macros. +//////////////////////////////////////////////////////////////////////////// + +#define NdrMarshConfStringHdr( p, s, l ) (_midl_ma4( p, unsigned long) = s, \ + _midl_ma4( p, unsigned long) = 0, \ + _midl_ma4( p, unsigned long) = l) + +#define NdrUnMarshConfStringHdr(p, s, l) ((s=_midl_unma4(p,unsigned long),\ + (_midl_addp(p,4)), \ + (l=_midl_unma4(p,unsigned long)) + +#define NdrMarshCCtxtHdl(pc,p) (NDRCContextMarshall( (NDR_CCONTEXT)pc, p ),p+20) + +#define NdrUnMarshCCtxtHdl(pc,p,h,drep) \ + (NDRCContextUnmarshall((NDR_CONTEXT)pc,h,p,drep), p+20) + +#define NdrUnMarshSCtxtHdl(pc, p,drep) (pc = NdrSContextUnMarshall(p,drep )) + + +#define NdrMarshSCtxtHdl(pc,p,rd) (NdrSContextMarshall((NDR_SCONTEXT)pc,p, (NDR_RUNDOWN)rd) + +#define NdrFieldOffset(s,f) (long)(& (((s __RPC_FAR *)0)->f)) +#define NdrFieldPad(s,f,p,t) (NdrFieldOffset(s,f) - NdrFieldOffset(s,p) - sizeof(t)) + +#if defined(__RPC_MAC__) +#define NdrFcShort(s) (unsigned char)(s >> 8), (unsigned char)(s & 0xff) +#define NdrFcLong(s) (unsigned char)(s >> 24), (unsigned char)((s & 0x00ff0000) >> 16), \ + (unsigned char)((s & 0x0000ff00) >> 8), (unsigned char)(s & 0xff) +#else +#define NdrFcShort(s) (unsigned char)(s & 0xff), (unsigned char)(s >> 8) +#define NdrFcLong(s) (unsigned char)(s & 0xff), (unsigned char)((s & 0x0000ff00) >> 8), \ + (unsigned char)((s & 0x00ff0000) >> 16), (unsigned char)(s >> 24) +#endif // Mac + +// +// On the server side, the following exceptions are mapped to +// the bad stub data exception if -error stub_data is used. +// + +#define RPC_BAD_STUB_DATA_EXCEPTION_FILTER \ + ( (RpcExceptionCode() == STATUS_ACCESS_VIOLATION) || \ + (RpcExceptionCode() == STATUS_DATATYPE_MISALIGNMENT) || \ + (RpcExceptionCode() == RPC_X_BAD_STUB_DATA) ) + +///////////////////////////////////////////////////////////////////////////// +// Some stub helper functions. +///////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////// +// Stub helper structures. +//////////////////////////////////////////////////////////////////////////// + +struct _MIDL_STUB_MESSAGE; +struct _MIDL_STUB_DESC; +struct _FULL_PTR_XLAT_TABLES; + +typedef unsigned char __RPC_FAR * RPC_BUFPTR; +typedef unsigned long RPC_LENGTH; + +// Expression evaluation callback routine prototype. +typedef void (__RPC_USER __RPC_FAR * EXPR_EVAL)( struct _MIDL_STUB_MESSAGE __RPC_FAR * ); + +typedef const unsigned char __RPC_FAR * PFORMAT_STRING; + +/* + * Multidimensional conformant/varying array struct. + */ +typedef struct + { + long Dimension; + + /* These fields MUST be (unsigned long *) */ + unsigned long __RPC_FAR * BufferConformanceMark; + unsigned long __RPC_FAR * BufferVarianceMark; + + /* Count arrays, used for top level arrays in -Os stubs */ + unsigned long __RPC_FAR * MaxCountArray; + unsigned long __RPC_FAR * OffsetArray; + unsigned long __RPC_FAR * ActualCountArray; + } ARRAY_INFO, __RPC_FAR *PARRAY_INFO; + +/* + * Pipe related definitions. + */ + +typedef void +(__RPC_FAR __RPC_API * NDR_PIPE_PULL_RTN)( + char __RPC_FAR * state, + void __RPC_FAR * buf, + unsigned long esize, + unsigned long __RPC_FAR * ecount ); + +typedef void +(__RPC_FAR __RPC_API * NDR_PIPE_PUSH_RTN)( + char __RPC_FAR * state, + void __RPC_FAR * buf, + unsigned long ecount ); + +typedef void +(__RPC_FAR __RPC_API * NDR_PIPE_ALLOC_RTN)( + char __RPC_FAR * state, + unsigned long bsize, + void __RPC_FAR * __RPC_FAR * buf, + unsigned long __RPC_FAR * bcount ); + + +typedef struct _GENERIC_PIPE_TYPE + { + NDR_PIPE_PULL_RTN pfnPull; + NDR_PIPE_PUSH_RTN pfnPush; + NDR_PIPE_ALLOC_RTN pfnAlloc; + char __RPC_FAR * pState; + } GENERIC_PIPE_TYPE; + + +typedef struct { + int CurrentState; + int ElemsInChunk; + int ElemAlign; + int ElemWireSize; + int ElemMemSize; + int PartialBufferSize; + unsigned char __RPC_FAR * PartialElem; + int PartialElemSize; + int PartialOffset; + int EndOfPipe; + } NDR_PIPE_STATE; + +typedef struct _PIPE_MESSAGE + { + unsigned short Signature; + unsigned short PipeId; + GENERIC_PIPE_TYPE __RPC_FAR * pPipeType; + PFORMAT_STRING pTypeFormat; + unsigned short PipeStatus; + unsigned short PipeFlags; + struct _MIDL_STUB_MESSAGE __RPC_FAR * pStubMsg; + } NDR_PIPE_MESSAGE, __RPC_FAR * PNDR_PIPE_MESSAGE; + +typedef struct _NDR_PIPE_DESC + { + NDR_PIPE_MESSAGE __RPC_FAR * pPipeMsg; + short CurrentPipe; + short InPipes; + short OutPipes; + short TotalPipes; + short PipeVersion; + short Flags; + unsigned char __RPC_FAR * DispatchBuffer; + unsigned char __RPC_FAR * LastPartialBuffer; + unsigned long LastPartialSize; + unsigned char __RPC_FAR * BufferSave; + unsigned long LengthSave; + NDR_PIPE_STATE RuntimeState; + } NDR_PIPE_DESC, __RPC_FAR * PNDR_PIPE_DESC; + + +/* + * MIDL Stub Message + */ +#if !defined(__RPC_DOS__) && !defined(__RPC_WIN16__) && !defined(__RPC_MAC__) +#include <pshpack4.h> +#endif + +typedef struct _MIDL_STUB_MESSAGE + { + /* RPC message structure. */ + PRPC_MESSAGE RpcMsg; + + /* Pointer into RPC message buffer. */ + unsigned char __RPC_FAR * Buffer; + + /* + * These are used internally by the Ndr routines to mark the beginning + * and end of an incoming RPC buffer. + */ + unsigned char __RPC_FAR * BufferStart; + unsigned char __RPC_FAR * BufferEnd; + + /* + * Used internally by the Ndr routines as a place holder in the buffer. + * On the marshalling side it's used to mark the location where conformance + * size should be marshalled. + * On the unmarshalling side it's used to mark the location in the buffer + * used during pointer unmarshalling to base pointer offsets off of. + */ + unsigned char __RPC_FAR * BufferMark; + + /* Set by the buffer sizing routines. */ + unsigned long BufferLength; + + /* Set by the memory sizing routines. */ + unsigned long MemorySize; + + /* Pointer to user memory. */ + unsigned char __RPC_FAR * Memory; + + /* Is the Ndr routine begin called from a client side stub. */ + int IsClient; + + /* Can the buffer be re-used for memory on unmarshalling. */ + int ReuseBuffer; + + /* Holds the current pointer to an allocate all nodes memory block. */ + unsigned char __RPC_FAR * AllocAllNodesMemory; + + /* Used for debugging asserts only, remove later. */ + unsigned char __RPC_FAR * AllocAllNodesMemoryEnd; + + /* + * Stuff needed while handling complex structures + */ + + /* Ignore imbeded pointers while computing buffer or memory sizes. */ + int IgnoreEmbeddedPointers; + + /* + * This marks the location in the buffer where pointees of a complex + * struct reside. + */ + unsigned char __RPC_FAR * PointerBufferMark; + + /* + * Used to catch errors in SendReceive. + */ + unsigned char fBufferValid; + + /* + * Obsolete unused field (formerly MaxContextHandleNumber). + */ + unsigned char Unused; + + /* + * Used internally by the Ndr routines. Holds the max counts for + * a conformant array. + */ + unsigned long MaxCount; + + /* + * Used internally by the Ndr routines. Holds the offsets for a varying + * array. + */ + unsigned long Offset; + + /* + * Used internally by the Ndr routines. Holds the actual counts for + * a varying array. + */ + unsigned long ActualCount; + + /* Allocation and Free routine to be used by the Ndr routines. */ + void __RPC_FAR * (__RPC_FAR __RPC_API * pfnAllocate)(size_t); + void (__RPC_FAR __RPC_API * pfnFree)(void __RPC_FAR *); + + /* + * Top of parameter stack. Used for "single call" stubs during marshalling + * to hold the beginning of the parameter list on the stack. Needed to + * extract parameters which hold attribute values for top level arrays and + * pointers. + */ + unsigned char __RPC_FAR * StackTop; + + /* + * Fields used for the transmit_as and represent_as objects. + * For represent_as the mapping is: presented=local, transmit=named. + */ + unsigned char __RPC_FAR * pPresentedType; + unsigned char __RPC_FAR * pTransmitType; + + /* + * When we first construct a binding on the client side, stick it + * in the rpcmessage and later call RpcGetBuffer, the handle field + * in the rpcmessage is changed. That's fine except that we need to + * have that original handle for use in unmarshalling context handles + * (the second argument in NDRCContextUnmarshall to be exact). So + * stash the contructed handle here and extract it when needed. + */ + handle_t SavedHandle; + + /* + * Pointer back to the stub descriptor. Use this to get all handle info. + */ + const struct _MIDL_STUB_DESC __RPC_FAR * StubDesc; + + /* + * Full pointer stuff. + */ + struct _FULL_PTR_XLAT_TABLES __RPC_FAR * FullPtrXlatTables; + + unsigned long FullPtrRefId; + + /* + * flags + */ + + int fCheckBounds; + + int fInDontFree :1; + int fDontCallFreeInst :1; + int fInOnlyParam :1; + int fHasReturn :1; + + unsigned long dwDestContext; + void __RPC_FAR * pvDestContext; + + NDR_SCONTEXT * SavedContextHandles; + + long ParamNumber; + + struct IRpcChannelBuffer __RPC_FAR * pRpcChannelBuffer; + + PARRAY_INFO pArrayInfo; + + /* + * This is where the Beta2 stub message ends. + */ + + unsigned long __RPC_FAR * SizePtrCountArray; + unsigned long __RPC_FAR * SizePtrOffsetArray; + unsigned long __RPC_FAR * SizePtrLengthArray; + + /* + * Interpreter argument queue. Used on server side only. + */ + void __RPC_FAR * pArgQueue; + + unsigned long dwStubPhase; + + /* + * Pipe descriptor, defined for the 4.0 release. + */ + + NDR_PIPE_DESC __RPC_FAR * pPipeDesc; + + unsigned long Reserved[4]; + + /* + * Fields up to this point present since the 3.50 release. + */ + + } MIDL_STUB_MESSAGE, __RPC_FAR *PMIDL_STUB_MESSAGE; + +#if !defined(__RPC_DOS__) && !defined(__RPC_WIN16__) && !defined(__RPC_MAC__) +#include <poppack.h> +#endif + +/* + * Generic handle bind/unbind routine pair. + */ +typedef void __RPC_FAR * + (__RPC_FAR __RPC_API * GENERIC_BINDING_ROUTINE) + (void __RPC_FAR *); +typedef void + (__RPC_FAR __RPC_API * GENERIC_UNBIND_ROUTINE) + (void __RPC_FAR *, unsigned char __RPC_FAR *); + +typedef struct _GENERIC_BINDING_ROUTINE_PAIR + { + GENERIC_BINDING_ROUTINE pfnBind; + GENERIC_UNBIND_ROUTINE pfnUnbind; + } GENERIC_BINDING_ROUTINE_PAIR, __RPC_FAR *PGENERIC_BINDING_ROUTINE_PAIR; + +typedef struct __GENERIC_BINDING_INFO + { + void __RPC_FAR * pObj; + unsigned int Size; + GENERIC_BINDING_ROUTINE pfnBind; + GENERIC_UNBIND_ROUTINE pfnUnbind; + } GENERIC_BINDING_INFO, __RPC_FAR *PGENERIC_BINDING_INFO; + +// typedef EXPR_EVAL - see above +// typedefs for xmit_as + +#if (defined(_MSC_VER)) && !defined(MIDL_PASS) +// a Microsoft C++ compiler +#define NDR_SHAREABLE __inline +#else +#define NDR_SHAREABLE static +#endif + + +typedef void (__RPC_FAR __RPC_USER * XMIT_HELPER_ROUTINE) + ( PMIDL_STUB_MESSAGE ); + +typedef struct _XMIT_ROUTINE_QUINTUPLE + { + XMIT_HELPER_ROUTINE pfnTranslateToXmit; + XMIT_HELPER_ROUTINE pfnTranslateFromXmit; + XMIT_HELPER_ROUTINE pfnFreeXmit; + XMIT_HELPER_ROUTINE pfnFreeInst; + } XMIT_ROUTINE_QUINTUPLE, __RPC_FAR *PXMIT_ROUTINE_QUINTUPLE; + +typedef unsigned long +(__RPC_FAR __RPC_USER * USER_MARSHAL_SIZING_ROUTINE) + (unsigned long __RPC_FAR *, + unsigned long, + void __RPC_FAR * ); + +typedef unsigned char __RPC_FAR * +(__RPC_FAR __RPC_USER * USER_MARSHAL_MARSHALLING_ROUTINE) + (unsigned long __RPC_FAR *, + unsigned char __RPC_FAR * , + void __RPC_FAR * ); + +typedef unsigned char __RPC_FAR * +(__RPC_FAR __RPC_USER * USER_MARSHAL_UNMARSHALLING_ROUTINE) + (unsigned long __RPC_FAR *, + unsigned char __RPC_FAR * , + void __RPC_FAR * ); + +typedef void (__RPC_FAR __RPC_USER * USER_MARSHAL_FREEING_ROUTINE) + (unsigned long __RPC_FAR *, + void __RPC_FAR * ); + +typedef struct _USER_MARSHAL_ROUTINE_QUADRUPLE + { + USER_MARSHAL_SIZING_ROUTINE pfnBufferSize; + USER_MARSHAL_MARSHALLING_ROUTINE pfnMarshall; + USER_MARSHAL_UNMARSHALLING_ROUTINE pfnUnmarshall; + USER_MARSHAL_FREEING_ROUTINE pfnFree; + } USER_MARSHAL_ROUTINE_QUADRUPLE; + +typedef struct _USER_MARSHAL_CB +{ + unsigned long Flags; + PMIDL_STUB_MESSAGE pStubMsg; + PFORMAT_STRING pReserve; +} USER_MARSHAL_CB; + + +#define USER_CALL_CTXT_MASK(f) ((f) & 0xff) +#define GET_USER_DATA_REP(f) ((f) >> 16) + +typedef struct _MALLOC_FREE_STRUCT + { + void __RPC_FAR * (__RPC_FAR __RPC_USER * pfnAllocate)(size_t); + void (__RPC_FAR __RPC_USER * pfnFree)(void __RPC_FAR *); + } MALLOC_FREE_STRUCT; + +typedef struct _COMM_FAULT_OFFSETS + { + short CommOffset; + short FaultOffset; + } COMM_FAULT_OFFSETS; + +/* + * MIDL Stub Descriptor + */ + +typedef struct _MIDL_STUB_DESC + { + + void __RPC_FAR * RpcInterfaceInformation; + + void __RPC_FAR * (__RPC_FAR __RPC_API * pfnAllocate)(size_t); + void (__RPC_FAR __RPC_API * pfnFree)(void __RPC_FAR *); + + union + { + handle_t __RPC_FAR * pAutoHandle; + handle_t __RPC_FAR * pPrimitiveHandle; + PGENERIC_BINDING_INFO pGenericBindingInfo; + } IMPLICIT_HANDLE_INFO; + + const NDR_RUNDOWN __RPC_FAR * apfnNdrRundownRoutines; + const GENERIC_BINDING_ROUTINE_PAIR __RPC_FAR * aGenericBindingRoutinePairs; + + const EXPR_EVAL __RPC_FAR * apfnExprEval; + + const XMIT_ROUTINE_QUINTUPLE __RPC_FAR * aXmitQuintuple; + + const unsigned char __RPC_FAR * pFormatTypes; + + int fCheckBounds; + + /* Ndr library version. */ + unsigned long Version; + + /* + * Reserved for future use. (no reserves ) + */ + + MALLOC_FREE_STRUCT __RPC_FAR * pMallocFreeStruct; + + long MIDLVersion; + + const COMM_FAULT_OFFSETS __RPC_FAR * CommFaultOffsets; + + // New fields for version 3.0+ + + const USER_MARSHAL_ROUTINE_QUADRUPLE __RPC_FAR * aUserMarshalQuadruple; + + long Reserved1; + long Reserved2; + long Reserved3; + long Reserved4; + long Reserved5; + + } MIDL_STUB_DESC; + +typedef const MIDL_STUB_DESC __RPC_FAR * PMIDL_STUB_DESC; + +typedef void __RPC_FAR * PMIDL_XMIT_TYPE; + +/* + * MIDL Stub Format String. This is a const in the stub. + */ +#if !defined( RC_INVOKED ) +#pragma warning( disable:4200 ) +#endif +typedef struct _MIDL_FORMAT_STRING + { + short Pad; + unsigned char Format[]; + } MIDL_FORMAT_STRING; +#if !defined( RC_INVOKED ) +#pragma warning( default:4200 ) +#endif + +/* + * Stub thunk used for some interpreted server stubs. + */ +typedef void (__RPC_FAR __RPC_API * STUB_THUNK)( PMIDL_STUB_MESSAGE ); + +typedef long (__RPC_FAR __RPC_API * SERVER_ROUTINE)(); + +/* + * Server Interpreter's information strucuture. + */ +typedef struct _MIDL_SERVER_INFO_ + { + PMIDL_STUB_DESC pStubDesc; + const SERVER_ROUTINE * DispatchTable; + PFORMAT_STRING ProcString; + const unsigned short * FmtStringOffset; + const STUB_THUNK * ThunkTable; + PFORMAT_STRING LocalFormatTypes; + PFORMAT_STRING LocalProcString; + const unsigned short * LocalFmtStringOffset; + } MIDL_SERVER_INFO, *PMIDL_SERVER_INFO; + +/* + * Stubless object proxy information structure. + */ +typedef struct _MIDL_STUBLESS_PROXY_INFO + { + PMIDL_STUB_DESC pStubDesc; + PFORMAT_STRING ProcFormatString; + const unsigned short __RPC_FAR * FormatStringOffset; + PFORMAT_STRING LocalFormatTypes; + PFORMAT_STRING LocalProcString; + const unsigned short __RPC_FAR * LocalFmtStringOffset; + } MIDL_STUBLESS_PROXY_INFO; + +typedef MIDL_STUBLESS_PROXY_INFO __RPC_FAR * PMIDL_STUBLESS_PROXY_INFO; + +/* + * This is the return value from NdrClientCall. + */ +typedef union _CLIENT_CALL_RETURN + { + void __RPC_FAR * Pointer; + long Simple; + } CLIENT_CALL_RETURN; + +/* + * Full pointer data structures. + */ + +typedef enum + { + XLAT_SERVER = 1, + XLAT_CLIENT + } XLAT_SIDE; + +/* + * Stores the translation for the conversion from a full pointer into it's + * corresponding ref id. + */ +typedef struct _FULL_PTR_TO_REFID_ELEMENT + { + struct _FULL_PTR_TO_REFID_ELEMENT __RPC_FAR * Next; + + void __RPC_FAR * Pointer; + unsigned long RefId; + unsigned char State; + } FULL_PTR_TO_REFID_ELEMENT, __RPC_FAR *PFULL_PTR_TO_REFID_ELEMENT; + +/* + * Full pointer translation tables. + */ +typedef struct _FULL_PTR_XLAT_TABLES + { + /* + * Ref id to pointer translation information. + */ + struct + { + void __RPC_FAR *__RPC_FAR * XlatTable; + unsigned char __RPC_FAR * StateTable; + unsigned long NumberOfEntries; + } RefIdToPointer; + + /* + * Pointer to ref id translation information. + */ + struct + { + PFULL_PTR_TO_REFID_ELEMENT __RPC_FAR * XlatTable; + unsigned long NumberOfBuckets; + unsigned long HashMask; + } PointerToRefId; + + /* + * Next ref id to use. + */ + unsigned long NextRefId; + + /* + * Keep track of the translation size we're handling : server or client. + * This tells us when we have to do reverse translations when we insert + * new translations. On the server we must insert a pointer-to-refid + * translation whenever we insert a refid-to-pointer translation, and + * vica versa for the client. + */ + XLAT_SIDE XlatSide; + } FULL_PTR_XLAT_TABLES, __RPC_FAR *PFULL_PTR_XLAT_TABLES; + +/*************************************************************************** + ** New MIDL 2.0 Ndr routine templates + ***************************************************************************/ + +/* + * Marshall routines + */ + +void RPC_ENTRY +NdrSimpleTypeMarshall( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + unsigned char FormatChar + ); + +unsigned char __RPC_FAR * RPC_ENTRY +NdrPointerMarshall( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +/* Structures */ + +unsigned char __RPC_FAR * RPC_ENTRY +NdrSimpleStructMarshall( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +unsigned char __RPC_FAR * RPC_ENTRY +NdrConformantStructMarshall( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +unsigned char __RPC_FAR * RPC_ENTRY +NdrConformantVaryingStructMarshall( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +unsigned char __RPC_FAR * RPC_ENTRY +NdrHardStructMarshall( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +unsigned char __RPC_FAR * RPC_ENTRY +NdrComplexStructMarshall( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +/* Arrays */ + +unsigned char __RPC_FAR * RPC_ENTRY +NdrFixedArrayMarshall( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +unsigned char __RPC_FAR * RPC_ENTRY +NdrConformantArrayMarshall( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +unsigned char __RPC_FAR * RPC_ENTRY +NdrConformantVaryingArrayMarshall( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +unsigned char __RPC_FAR * RPC_ENTRY +NdrVaryingArrayMarshall( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +unsigned char __RPC_FAR * RPC_ENTRY +NdrComplexArrayMarshall( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +/* Strings */ + +unsigned char __RPC_FAR * RPC_ENTRY +NdrNonConformantStringMarshall( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +unsigned char __RPC_FAR * RPC_ENTRY +NdrConformantStringMarshall( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +/* Unions */ + +unsigned char __RPC_FAR * RPC_ENTRY +NdrEncapsulatedUnionMarshall( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +unsigned char __RPC_FAR * RPC_ENTRY +NdrNonEncapsulatedUnionMarshall( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +/* Byte count pointer */ + +unsigned char __RPC_FAR * RPC_ENTRY +NdrByteCountPointerMarshall( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +/* Transmit as and represent as*/ + +unsigned char __RPC_FAR * RPC_ENTRY +NdrXmitOrRepAsMarshall( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +/* User_marshal */ + +unsigned char __RPC_FAR * RPC_ENTRY +NdrUserMarshalMarshall( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +/* Cairo interface pointer */ + +unsigned char __RPC_FAR * RPC_ENTRY +NdrInterfacePointerMarshall( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +/* Context handles */ + +void RPC_ENTRY +NdrClientContextMarshall( + PMIDL_STUB_MESSAGE pStubMsg, + NDR_CCONTEXT ContextHandle, + int fCheck + ); + +void RPC_ENTRY +NdrServerContextMarshall( + PMIDL_STUB_MESSAGE pStubMsg, + NDR_SCONTEXT ContextHandle, + NDR_RUNDOWN RundownRoutine + ); + +/* + * Unmarshall routines + */ + +void RPC_ENTRY +NdrSimpleTypeUnmarshall( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + unsigned char FormatChar + ); + +unsigned char __RPC_FAR * RPC_ENTRY +NdrPointerUnmarshall( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * __RPC_FAR * ppMemory, + PFORMAT_STRING pFormat, + unsigned char fMustAlloc + ); + +/* Structures */ + +unsigned char __RPC_FAR * RPC_ENTRY +NdrSimpleStructUnmarshall( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * __RPC_FAR * ppMemory, + PFORMAT_STRING pFormat, + unsigned char fMustAlloc + ); + +unsigned char __RPC_FAR * RPC_ENTRY +NdrConformantStructUnmarshall( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * __RPC_FAR * ppMemory, + PFORMAT_STRING pFormat, + unsigned char fMustAlloc + ); + +unsigned char __RPC_FAR * RPC_ENTRY +NdrConformantVaryingStructUnmarshall( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * __RPC_FAR * ppMemory, + PFORMAT_STRING pFormat, + unsigned char fMustAlloc + ); + +unsigned char __RPC_FAR * RPC_ENTRY +NdrHardStructUnmarshall( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * __RPC_FAR * ppMemory, + PFORMAT_STRING pFormat, + unsigned char fMustAlloc + ); + +unsigned char __RPC_FAR * RPC_ENTRY +NdrComplexStructUnmarshall( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * __RPC_FAR * ppMemory, + PFORMAT_STRING pFormat, + unsigned char fMustAlloc + ); + +/* Arrays */ + +unsigned char __RPC_FAR * RPC_ENTRY +NdrFixedArrayUnmarshall( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * __RPC_FAR * ppMemory, + PFORMAT_STRING pFormat, + unsigned char fMustAlloc + ); + +unsigned char __RPC_FAR * RPC_ENTRY +NdrConformantArrayUnmarshall( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * __RPC_FAR * ppMemory, + PFORMAT_STRING pFormat, + unsigned char fMustAlloc + ); + +unsigned char __RPC_FAR * RPC_ENTRY +NdrConformantVaryingArrayUnmarshall( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * __RPC_FAR * ppMemory, + PFORMAT_STRING pFormat, + unsigned char fMustAlloc + ); + +unsigned char __RPC_FAR * RPC_ENTRY +NdrVaryingArrayUnmarshall( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * __RPC_FAR * ppMemory, + PFORMAT_STRING pFormat, + unsigned char fMustAlloc + ); + +unsigned char __RPC_FAR * RPC_ENTRY +NdrComplexArrayUnmarshall( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * __RPC_FAR * ppMemory, + PFORMAT_STRING pFormat, + unsigned char fMustAlloc + ); + +/* Strings */ + +unsigned char __RPC_FAR * RPC_ENTRY +NdrNonConformantStringUnmarshall( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * __RPC_FAR * ppMemory, + PFORMAT_STRING pFormat, + unsigned char fMustAlloc + ); + +unsigned char __RPC_FAR * RPC_ENTRY +NdrConformantStringUnmarshall( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * __RPC_FAR * ppMemory, + PFORMAT_STRING pFormat, + unsigned char fMustAlloc + ); + +/* Unions */ + +unsigned char __RPC_FAR * RPC_ENTRY +NdrEncapsulatedUnionUnmarshall( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * __RPC_FAR * ppMemory, + PFORMAT_STRING pFormat, + unsigned char fMustAlloc + ); + +unsigned char __RPC_FAR * RPC_ENTRY +NdrNonEncapsulatedUnionUnmarshall( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * __RPC_FAR * ppMemory, + PFORMAT_STRING pFormat, + unsigned char fMustAlloc + ); + +/* Byte count pointer */ + +unsigned char __RPC_FAR * RPC_ENTRY +NdrByteCountPointerUnmarshall( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * __RPC_FAR * ppMemory, + PFORMAT_STRING pFormat, + unsigned char fMustAlloc + ); + +/* Transmit as and represent as*/ + +unsigned char __RPC_FAR * RPC_ENTRY +NdrXmitOrRepAsUnmarshall( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * __RPC_FAR * ppMemory, + PFORMAT_STRING pFormat, + unsigned char fMustAlloc + ); + +/* User_marshal */ + +unsigned char __RPC_FAR * RPC_ENTRY +NdrUserMarshalUnmarshall( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * __RPC_FAR * ppMemory, + PFORMAT_STRING pFormat, + unsigned char fMustAlloc + ); + +/* Cairo interface pointer */ + +unsigned char __RPC_FAR * RPC_ENTRY +NdrInterfacePointerUnmarshall( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * __RPC_FAR * ppMemory, + PFORMAT_STRING pFormat, + unsigned char fMustAlloc + ); + +/* Context handles */ + +void RPC_ENTRY +NdrClientContextUnmarshall( + PMIDL_STUB_MESSAGE pStubMsg, + NDR_CCONTEXT __RPC_FAR * pContextHandle, + RPC_BINDING_HANDLE BindHandle + ); + +NDR_SCONTEXT RPC_ENTRY +NdrServerContextUnmarshall( + PMIDL_STUB_MESSAGE pStubMsg + ); + +/* + * Buffer sizing routines + */ + +void RPC_ENTRY +NdrPointerBufferSize( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +/* Structures */ + +void RPC_ENTRY +NdrSimpleStructBufferSize( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +void RPC_ENTRY +NdrConformantStructBufferSize( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +void RPC_ENTRY +NdrConformantVaryingStructBufferSize( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +void RPC_ENTRY +NdrHardStructBufferSize( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +void RPC_ENTRY +NdrComplexStructBufferSize( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +/* Arrays */ + +void RPC_ENTRY +NdrFixedArrayBufferSize( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +void RPC_ENTRY +NdrConformantArrayBufferSize( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +void RPC_ENTRY +NdrConformantVaryingArrayBufferSize( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +void RPC_ENTRY +NdrVaryingArrayBufferSize( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +void RPC_ENTRY +NdrComplexArrayBufferSize( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +/* Strings */ + +void RPC_ENTRY +NdrConformantStringBufferSize( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +void RPC_ENTRY +NdrNonConformantStringBufferSize( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +/* Unions */ + +void RPC_ENTRY +NdrEncapsulatedUnionBufferSize( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +void RPC_ENTRY +NdrNonEncapsulatedUnionBufferSize( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +/* Byte count pointer */ + +void RPC_ENTRY +NdrByteCountPointerBufferSize( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +/* Transmit as and represent as*/ + +void RPC_ENTRY +NdrXmitOrRepAsBufferSize( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +/* User_marshal */ + +void RPC_ENTRY +NdrUserMarshalBufferSize( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +/* Cairo Interface pointer */ + +void RPC_ENTRY +NdrInterfacePointerBufferSize( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +// Context Handle size +// +void RPC_ENTRY +NdrContextHandleSize( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +/* + * Memory sizing routines + */ + +unsigned long RPC_ENTRY +NdrPointerMemorySize( + PMIDL_STUB_MESSAGE pStubMsg, + PFORMAT_STRING pFormat + ); + +/* Structures */ + +unsigned long RPC_ENTRY +NdrSimpleStructMemorySize( + PMIDL_STUB_MESSAGE pStubMsg, + PFORMAT_STRING pFormat + ); + +unsigned long RPC_ENTRY +NdrConformantStructMemorySize( + PMIDL_STUB_MESSAGE pStubMsg, + PFORMAT_STRING pFormat + ); + +unsigned long RPC_ENTRY +NdrConformantVaryingStructMemorySize( + PMIDL_STUB_MESSAGE pStubMsg, + PFORMAT_STRING pFormat + ); + +unsigned long RPC_ENTRY +NdrHardStructMemorySize( + PMIDL_STUB_MESSAGE pStubMsg, + PFORMAT_STRING pFormat + ); + +unsigned long RPC_ENTRY +NdrComplexStructMemorySize( + PMIDL_STUB_MESSAGE pStubMsg, + PFORMAT_STRING pFormat + ); + +/* Arrays */ + +unsigned long RPC_ENTRY +NdrFixedArrayMemorySize( + PMIDL_STUB_MESSAGE pStubMsg, + PFORMAT_STRING pFormat + ); + +unsigned long RPC_ENTRY +NdrConformantArrayMemorySize( + PMIDL_STUB_MESSAGE pStubMsg, + PFORMAT_STRING pFormat + ); + +unsigned long RPC_ENTRY +NdrConformantVaryingArrayMemorySize( + PMIDL_STUB_MESSAGE pStubMsg, + PFORMAT_STRING pFormat + ); + +unsigned long RPC_ENTRY +NdrVaryingArrayMemorySize( + PMIDL_STUB_MESSAGE pStubMsg, + PFORMAT_STRING pFormat + ); + +unsigned long RPC_ENTRY +NdrComplexArrayMemorySize( + PMIDL_STUB_MESSAGE pStubMsg, + PFORMAT_STRING pFormat + ); + +/* Strings */ + +unsigned long RPC_ENTRY +NdrConformantStringMemorySize( + PMIDL_STUB_MESSAGE pStubMsg, + PFORMAT_STRING pFormat + ); + +unsigned long RPC_ENTRY +NdrNonConformantStringMemorySize( + PMIDL_STUB_MESSAGE pStubMsg, + PFORMAT_STRING pFormat + ); + +/* Unions */ + +unsigned long RPC_ENTRY +NdrEncapsulatedUnionMemorySize( + PMIDL_STUB_MESSAGE pStubMsg, + PFORMAT_STRING pFormat + ); + +unsigned long RPC_ENTRY +NdrNonEncapsulatedUnionMemorySize( + PMIDL_STUB_MESSAGE pStubMsg, + PFORMAT_STRING pFormat + ); + +/* Transmit as and represent as*/ + +unsigned long RPC_ENTRY +NdrXmitOrRepAsMemorySize( + PMIDL_STUB_MESSAGE pStubMsg, + PFORMAT_STRING pFormat + ); + +/* User_marshal */ + +unsigned long RPC_ENTRY +NdrUserMarshalMemorySize( + PMIDL_STUB_MESSAGE pStubMsg, + PFORMAT_STRING pFormat + ); + +/* Cairo Interface pointer */ + +unsigned long RPC_ENTRY +NdrInterfacePointerMemorySize( + PMIDL_STUB_MESSAGE pStubMsg, + PFORMAT_STRING pFormat + ); + +/* + * Freeing routines + */ + +void RPC_ENTRY +NdrPointerFree( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +/* Structures */ + +void RPC_ENTRY +NdrSimpleStructFree( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +void RPC_ENTRY +NdrConformantStructFree( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +void RPC_ENTRY +NdrConformantVaryingStructFree( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +void RPC_ENTRY +NdrHardStructFree( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +void RPC_ENTRY +NdrComplexStructFree( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +/* Arrays */ + +void RPC_ENTRY +NdrFixedArrayFree( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +void RPC_ENTRY +NdrConformantArrayFree( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +void RPC_ENTRY +NdrConformantVaryingArrayFree( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +void RPC_ENTRY +NdrVaryingArrayFree( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +void RPC_ENTRY +NdrComplexArrayFree( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +/* Unions */ + +void RPC_ENTRY +NdrEncapsulatedUnionFree( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +void RPC_ENTRY +NdrNonEncapsulatedUnionFree( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +/* Byte count */ + +void RPC_ENTRY +NdrByteCountPointerFree( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +/* Transmit as and represent as*/ + +void RPC_ENTRY +NdrXmitOrRepAsFree( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +/* User_marshal */ + +void RPC_ENTRY +NdrUserMarshalFree( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +/* Cairo Interface pointer */ + +void RPC_ENTRY +NdrInterfacePointerFree( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pMemory, + PFORMAT_STRING pFormat + ); + +/* + * Endian conversion routine. + */ + +void RPC_ENTRY +NdrConvert2( + PMIDL_STUB_MESSAGE pStubMsg, + PFORMAT_STRING pFormat, + long NumberParams + ); + +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 + +unsigned char __RPC_FAR * RPC_ENTRY +NdrUserMarshalSimpleTypeConvert( + unsigned long * pFlags, + unsigned char * pBuffer, + unsigned char FormatChar + ); + +/* + * Auxilary routines + */ + +void RPC_ENTRY +NdrClientInitializeNew( + PRPC_MESSAGE pRpcMsg, + PMIDL_STUB_MESSAGE pStubMsg, + PMIDL_STUB_DESC pStubDescriptor, + unsigned int ProcNum + ); + +unsigned char __RPC_FAR * RPC_ENTRY +NdrServerInitializeNew( + PRPC_MESSAGE pRpcMsg, + PMIDL_STUB_MESSAGE pStubMsg, + PMIDL_STUB_DESC pStubDescriptor + ); + +void RPC_ENTRY +NdrServerInitializePartial( + PRPC_MESSAGE pRpcMsg, + PMIDL_STUB_MESSAGE pStubMsg, + PMIDL_STUB_DESC pStubDescriptor, + unsigned long RequestedBufferSize + ); + +void RPC_ENTRY +NdrClientInitialize( + PRPC_MESSAGE pRpcMsg, + PMIDL_STUB_MESSAGE pStubMsg, + PMIDL_STUB_DESC pStubDescriptor, + unsigned int ProcNum + ); + +unsigned char __RPC_FAR * RPC_ENTRY +NdrServerInitialize( + PRPC_MESSAGE pRpcMsg, + PMIDL_STUB_MESSAGE pStubMsg, + PMIDL_STUB_DESC pStubDescriptor + ); + +unsigned char __RPC_FAR * RPC_ENTRY +NdrServerInitializeUnmarshall ( + PMIDL_STUB_MESSAGE pStubMsg, + PMIDL_STUB_DESC pStubDescriptor, + PRPC_MESSAGE pRpcMsg + ); + +void RPC_ENTRY +NdrServerInitializeMarshall ( + PRPC_MESSAGE pRpcMsg, + PMIDL_STUB_MESSAGE pStubMsg + ); + +unsigned char __RPC_FAR * RPC_ENTRY +NdrGetBuffer( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned long BufferLength, + RPC_BINDING_HANDLE Handle + ); + +unsigned char __RPC_FAR * RPC_ENTRY +NdrNsGetBuffer( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned long BufferLength, + RPC_BINDING_HANDLE Handle + ); + +unsigned char __RPC_FAR * RPC_ENTRY +NdrGetPipeBuffer( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned long BufferLength, + RPC_BINDING_HANDLE Handle ); + +void RPC_ENTRY +NdrGetPartialBuffer( + PMIDL_STUB_MESSAGE pStubMsg ); + +unsigned char __RPC_FAR * RPC_ENTRY +NdrSendReceive( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR* pBufferEnd + ); + +unsigned char __RPC_FAR * RPC_ENTRY +NdrNsSendReceive( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR * pBufferEnd, + RPC_BINDING_HANDLE __RPC_FAR * pAutoHandle + ); + +void RPC_ENTRY +NdrPipeSendReceive( + PMIDL_STUB_MESSAGE pStubMsg, + NDR_PIPE_DESC * pPipeDesc + ); + +void RPC_ENTRY +NdrFreeBuffer( + PMIDL_STUB_MESSAGE pStubMsg + ); + + +/* + * Pipe specific calls + */ + +void RPC_ENTRY +NdrPipesInitialize( + PMIDL_STUB_MESSAGE pStubMsg, + PFORMAT_STRING pParamDesc, + NDR_PIPE_DESC __RPC_FAR * pPipeDesc, + NDR_PIPE_MESSAGE __RPC_FAR * pPipeMsg, + char __RPC_FAR * pStackTop, + unsigned long NumberParams ); + +void +NdrMarkNextActivePipe( + NDR_PIPE_DESC __RPC_FAR * pPipeDesc, + unsigned int DirectionMask ); + +void RPC_ENTRY +NdrPipePull( + char __RPC_FAR * pState, + void __RPC_FAR * buf, + unsigned long esize, + unsigned long __RPC_FAR * ecount ); + +void RPC_ENTRY +NdrPipePush( + char __RPC_FAR * pState, + void __RPC_FAR * buf, + unsigned long ecount ); + +void RPC_ENTRY +NdrIsAppDoneWithPipes( + NDR_PIPE_DESC * pPipeDesc + ); + +void RPC_ENTRY +NdrPipesDone( + PMIDL_STUB_MESSAGE pStubMsg + ); + + +/* + * Interpeter 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, + ... + ); + +/* 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; + +long RPC_ENTRY +NdrStubCall2( + struct IRpcStubBuffer __RPC_FAR * pThis, + struct IRpcChannelBuffer __RPC_FAR * pChannel, + PRPC_MESSAGE pRpcMsg, + unsigned long __RPC_FAR * pdwStubPhase + ); + +void RPC_ENTRY +NdrServerCall2( + PRPC_MESSAGE pRpcMsg + ); + +long RPC_ENTRY +NdrStubCall ( + struct IRpcStubBuffer __RPC_FAR * pThis, + struct IRpcChannelBuffer __RPC_FAR * pChannel, + PRPC_MESSAGE pRpcMsg, + unsigned long __RPC_FAR * pdwStubPhase + ); + +void RPC_ENTRY +NdrServerCall( + PRPC_MESSAGE pRpcMsg + ); + +int RPC_ENTRY +NdrServerUnmarshall( + struct IRpcChannelBuffer __RPC_FAR * pChannel, + PRPC_MESSAGE pRpcMsg, + PMIDL_STUB_MESSAGE pStubMsg, + PMIDL_STUB_DESC pStubDescriptor, + PFORMAT_STRING pFormat, + void __RPC_FAR * pParamList + ); + +void RPC_ENTRY +NdrServerMarshall( + struct IRpcStubBuffer __RPC_FAR * pThis, + struct IRpcChannelBuffer __RPC_FAR * pChannel, + PMIDL_STUB_MESSAGE pStubMsg, + PFORMAT_STRING pFormat + ); + +/* Comm and Fault status */ + +RPC_STATUS RPC_ENTRY +NdrMapCommAndFaultStatus( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned long __RPC_FAR * pCommStatus, + unsigned long __RPC_FAR * pFaultStatus, + RPC_STATUS Status + ); + +/* Helper routines */ + +int RPC_ENTRY +NdrSH_UPDecision( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem, + RPC_BUFPTR pBuffer + ); + +int RPC_ENTRY +NdrSH_TLUPDecision( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem + ); + +int RPC_ENTRY +NdrSH_TLUPDecisionBuffer( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem + ); + +int RPC_ENTRY +NdrSH_IfAlloc( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem, + unsigned long Count + ); + +int RPC_ENTRY +NdrSH_IfAllocRef( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem, + unsigned long Count + ); + +int RPC_ENTRY +NdrSH_IfAllocSet( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem, + unsigned long Count + ); + +RPC_BUFPTR RPC_ENTRY +NdrSH_IfCopy( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem, + unsigned long Count + ); + +RPC_BUFPTR RPC_ENTRY +NdrSH_IfAllocCopy( + PMIDL_STUB_MESSAGE pStubMsg, + unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem, + unsigned long Count + ); + +unsigned long RPC_ENTRY +NdrSH_Copy( + unsigned char __RPC_FAR * pStubMsg, + unsigned char __RPC_FAR * pPtrInMem, + unsigned long Count + ); + +void RPC_ENTRY +NdrSH_IfFree( + PMIDL_STUB_MESSAGE pMessage, + unsigned char __RPC_FAR * pPtr ); + + +RPC_BUFPTR RPC_ENTRY +NdrSH_StringMarshall( + PMIDL_STUB_MESSAGE pMessage, + unsigned char __RPC_FAR * pMemory, + unsigned long Count, + int Size ); + +RPC_BUFPTR RPC_ENTRY +NdrSH_StringUnMarshall( + PMIDL_STUB_MESSAGE pMessage, + unsigned char __RPC_FAR *__RPC_FAR * pMemory, + int Size ); + +/**************************************************************************** + MIDL 2.0 memory package: rpc_ss_* rpc_sm_* + ****************************************************************************/ + +typedef void __RPC_FAR * RPC_SS_THREAD_HANDLE; + +typedef void __RPC_FAR * __RPC_API +RPC_CLIENT_ALLOC ( + IN size_t Size + ); + +typedef void __RPC_API +RPC_CLIENT_FREE ( + IN void __RPC_FAR * Ptr + ); + +/*++ + RpcSs* package +--*/ + +void __RPC_FAR * RPC_ENTRY +RpcSsAllocate ( + IN size_t Size + ); + +void RPC_ENTRY +RpcSsDisableAllocate ( + void + ); + +void RPC_ENTRY +RpcSsEnableAllocate ( + void + ); + +void RPC_ENTRY +RpcSsFree ( + IN void __RPC_FAR * NodeToFree + ); + +RPC_SS_THREAD_HANDLE RPC_ENTRY +RpcSsGetThreadHandle ( + void + ); + +void RPC_ENTRY +RpcSsSetClientAllocFree ( + IN RPC_CLIENT_ALLOC __RPC_FAR * ClientAlloc, + IN RPC_CLIENT_FREE __RPC_FAR * ClientFree + ); + +void RPC_ENTRY +RpcSsSetThreadHandle ( + IN RPC_SS_THREAD_HANDLE Id + ); + +void RPC_ENTRY +RpcSsSwapClientAllocFree ( + IN RPC_CLIENT_ALLOC __RPC_FAR * ClientAlloc, + IN RPC_CLIENT_FREE __RPC_FAR * ClientFree, + OUT RPC_CLIENT_ALLOC __RPC_FAR * __RPC_FAR * OldClientAlloc, + OUT RPC_CLIENT_FREE __RPC_FAR * __RPC_FAR * OldClientFree + ); + +/*++ + RpcSm* package +--*/ + +void __RPC_FAR * RPC_ENTRY +RpcSmAllocate ( + IN size_t Size, + OUT RPC_STATUS __RPC_FAR * pStatus + ); + +RPC_STATUS RPC_ENTRY +RpcSmClientFree ( + IN void __RPC_FAR * pNodeToFree + ); + +RPC_STATUS RPC_ENTRY +RpcSmDestroyClientContext ( + IN void __RPC_FAR * __RPC_FAR * ContextHandle + ); + +RPC_STATUS RPC_ENTRY +RpcSmDisableAllocate ( + void + ); + +RPC_STATUS RPC_ENTRY +RpcSmEnableAllocate ( + void + ); + +RPC_STATUS RPC_ENTRY +RpcSmFree ( + IN void __RPC_FAR * NodeToFree + ); + +RPC_SS_THREAD_HANDLE RPC_ENTRY +RpcSmGetThreadHandle ( + OUT RPC_STATUS __RPC_FAR * pStatus + ); + +RPC_STATUS RPC_ENTRY +RpcSmSetClientAllocFree ( + IN RPC_CLIENT_ALLOC __RPC_FAR * ClientAlloc, + IN RPC_CLIENT_FREE __RPC_FAR * ClientFree + ); + +RPC_STATUS RPC_ENTRY +RpcSmSetThreadHandle ( + IN RPC_SS_THREAD_HANDLE Id + ); + +RPC_STATUS RPC_ENTRY +RpcSmSwapClientAllocFree ( + IN RPC_CLIENT_ALLOC __RPC_FAR * ClientAlloc, + IN RPC_CLIENT_FREE __RPC_FAR * ClientFree, + OUT RPC_CLIENT_ALLOC __RPC_FAR * __RPC_FAR * OldClientAlloc, + OUT RPC_CLIENT_FREE __RPC_FAR * __RPC_FAR * OldClientFree + ); + +/*++ + Ndr stub entry points +--*/ + +void RPC_ENTRY +NdrRpcSsEnableAllocate( + PMIDL_STUB_MESSAGE pMessage ); + +void RPC_ENTRY +NdrRpcSsDisableAllocate( + PMIDL_STUB_MESSAGE pMessage ); + +void RPC_ENTRY +NdrRpcSmSetClientToOsf( + PMIDL_STUB_MESSAGE pMessage ); + +void __RPC_FAR * RPC_ENTRY +NdrRpcSmClientAllocate ( + IN size_t Size + ); + +void RPC_ENTRY +NdrRpcSmClientFree ( + IN void __RPC_FAR * NodeToFree + ); + +void __RPC_FAR * RPC_ENTRY +NdrRpcSsDefaultAllocate ( + IN size_t Size + ); + +void RPC_ENTRY +NdrRpcSsDefaultFree ( + IN void __RPC_FAR * NodeToFree + ); + +/**************************************************************************** + end of memory package: rpc_ss_* rpc_sm_* + ****************************************************************************/ + +/**************************************************************************** + * Full Pointer APIs + ****************************************************************************/ + +PFULL_PTR_XLAT_TABLES RPC_ENTRY +NdrFullPointerXlatInit( + unsigned long NumberOfPointers, + XLAT_SIDE XlatSide + ); + +void RPC_ENTRY +NdrFullPointerXlatFree( + PFULL_PTR_XLAT_TABLES pXlatTables + ); + +int RPC_ENTRY +NdrFullPointerQueryPointer( + PFULL_PTR_XLAT_TABLES pXlatTables, + void __RPC_FAR * pPointer, + unsigned char QueryType, + unsigned long __RPC_FAR * pRefId + ); + +int RPC_ENTRY +NdrFullPointerQueryRefId( + PFULL_PTR_XLAT_TABLES pXlatTables, + unsigned long RefId, + unsigned char QueryType, + void __RPC_FAR *__RPC_FAR * ppPointer + ); + +void RPC_ENTRY +NdrFullPointerInsertRefId( + PFULL_PTR_XLAT_TABLES pXlatTables, + unsigned long RefId, + void __RPC_FAR * pPointer + ); + +int RPC_ENTRY +NdrFullPointerFree( + PFULL_PTR_XLAT_TABLES pXlatTables, + void __RPC_FAR * Pointer + ); + +void __RPC_FAR * RPC_ENTRY +NdrAllocate( + PMIDL_STUB_MESSAGE pStubMsg, + size_t Len + ); + +void RPC_ENTRY +NdrClearOutParameters( + PMIDL_STUB_MESSAGE pStubMsg, + PFORMAT_STRING pFormat, + void __RPC_FAR * ArgAddr + ); + + +/**************************************************************************** + * Proxy APIs + ****************************************************************************/ + +void __RPC_FAR * RPC_ENTRY +NdrOleAllocate ( + IN size_t Size + ); + +void RPC_ENTRY +NdrOleFree ( + IN void __RPC_FAR * NodeToFree + ); + +#ifdef CONST_VTABLE +#define CONST_VTBL const +#else +#define CONST_VTBL +#endif + + + + +#ifdef __cplusplus +} +#endif + +// Reset the packing level for DOS, Windows and Mac. + +#if defined(__RPC_DOS__) || defined(__RPC_WIN16__) || defined(__RPC_MAC__) +#pragma pack() +#endif + +#endif /* __RPCNDR_H__ */ + + + + + |