--- mstools/h/rpcndr.h 2018/08/09 18:20:34 1.1.1.2 +++ mstools/h/rpcndr.h 2018/08/09 18:21:14 1.1.1.3 @@ -116,16 +116,20 @@ extern "C" { * */ -typedef struct {RPC_BINDING_HANDLE hRPC;} PAPI * NDR_CCONTEXT; +typedef void PAPI * NDR_CCONTEXT; typedef struct {void * pad[2]; void * userContext; } * NDR_SCONTEXT; #define NDRSContextValue(hContext) (&(hContext)->userContext) -#define NDRCContextBinding(hContext) ((hContext)->hRPC) #define cbNDRContext 20 /* size of context on WIRE */ typedef void (*NDR_RUNDOWN)(void * context); +RPC_BINDING_HANDLE RPC_ENTRY +NDRCContextBinding ( + IN NDR_CCONTEXT CContext + ); + void RPC_ENTRY NDRCContextMarshall ( IN NDR_CCONTEXT CContext, @@ -189,7 +193,7 @@ typedef unsigned int size_t; #ifdef __RPC_WIN32__ #define __RPC_FAR -#define __RPC_EXPORT +#define __RPC_CALLEE_STUB #endif #ifdef __RPC_OS2_1X__ @@ -215,16 +219,43 @@ typedef unsigned int size_t; *target = *(*(char **)&source->Buffer)++; \ } +#define byte_array_from_ndr(Source, LowerIndex, UpperIndex, Target) \ + { \ + NDRcopy ( \ + (((char *)Target)+LowerIndex), \ + Source->Buffer, \ + (unsigned int)(UpperIndex-LowerIndex)); \ + *(unsigned long *)&Source->Buffer += (UpperIndex-LowerIndex); \ + } + #define boolean_from_ndr(source, target) \ { \ *target = *(*(char **)&source->Buffer)++; \ } +#define boolean_array_from_ndr(Source, LowerIndex, UpperIndex, Target) \ + { \ + NDRcopy ( \ + (((char *)Target)+LowerIndex), \ + Source->Buffer, \ + (unsigned int)(UpperIndex-LowerIndex)); \ + *(unsigned long *)&Source->Buffer += (UpperIndex-LowerIndex); \ + } + #define small_from_ndr(source, target) \ { \ *target = *(*(char **)&source->Buffer)++; \ } +#define small_array_from_ndr(Source, LowerIndex, UpperIndex, Target) \ + { \ + NDRcopy ( \ + (((char *)Target)+LowerIndex), \ + Source->Buffer, \ + (unsigned int)(UpperIndex-LowerIndex)); \ + *(unsigned long *)&Source->Buffer += (UpperIndex-LowerIndex); \ + } + /* * * Character and string support routines: @@ -257,7 +288,8 @@ char_from_ndr ( void RPC_ENTRY char_array_from_ndr ( IN OUT PRPC_MESSAGE SourceMessage, - IN unsigned int MemberCount, + IN unsigned long LowerIndex, + IN unsigned long UpperIndex, OUT unsigned char Target[] ); @@ -270,7 +302,8 @@ short_from_ndr ( void RPC_ENTRY short_array_from_ndr( IN OUT PRPC_MESSAGE SourceMessage, - IN unsigned int MemberCount, + IN unsigned long LowerIndex, + IN unsigned long UpperIndex, OUT unsigned short Target[] ); @@ -290,7 +323,8 @@ long_from_ndr ( void RPC_ENTRY long_array_from_ndr( IN OUT PRPC_MESSAGE SourceMessage, - IN unsigned int MemberCount, + IN unsigned long LowerIndex, + IN unsigned long UpperIndex, OUT unsigned long Target[] ); @@ -316,7 +350,8 @@ float_from_ndr ( void RPC_ENTRY float_array_from_ndr ( IN OUT PRPC_MESSAGE SourceMessage, - IN unsigned int MemberCount, + IN unsigned long LowerIndex, + IN unsigned long UpperIndex, OUT void * Target ); @@ -329,7 +364,8 @@ double_from_ndr ( void RPC_ENTRY double_array_from_ndr ( IN OUT PRPC_MESSAGE SourceMessage, - IN unsigned int MemberCount, + IN unsigned long LowerIndex, + IN unsigned long UpperIndex, OUT void * Target ); @@ -348,6 +384,14 @@ data_from_ndr ( ); void RPC_ENTRY +data_into_ndr ( + void * source, + PRPC_MESSAGE target, + char * format, + unsigned char MscPak + ); + +void RPC_ENTRY tree_into_ndr ( void * source, PRPC_MESSAGE target, @@ -356,6 +400,14 @@ tree_into_ndr ( ); void RPC_ENTRY +data_size_ndr ( + void * source, + PRPC_MESSAGE target, + char * format, + unsigned char MscPak + ); + +void RPC_ENTRY tree_size_ndr ( void * source, PRPC_MESSAGE target, @@ -367,7 +419,8 @@ void RPC_ENTRY tree_peek_ndr ( PRPC_MESSAGE source, unsigned char ** buffer, - char * format + char * format, + unsigned char MscPak ); void PAPI * RPC_ENTRY