|
|
/*++
Copyright (c) 1992 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
--*/
#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
/****************************************************************************
* 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)
#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
/////////////////////////////////////////////////////////////////////////////
// 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;
/*
* 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;
/*
* Reserved for future use. */ unsigned long Reserved[5];
} 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
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 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. */
MALLOC_FREE_STRUCT __RPC_FAR * pMallocFreeStruct;
long MIDLVersion;
const COMM_FAULT_OFFSETS __RPC_FAR * CommFaultOffsets;
} 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; } 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; } 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 );
/* 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 );
/* 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 );
/* 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 );
/* 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 );
/* 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 NdrConvert( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat );
/*
* 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 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 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 NdrFreeBuffer( PMIDL_STUB_MESSAGE pStubMsg );
/*
* Interpeter calls. */
/* client */
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 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__ */
|