rpcrt4: Use the documented NDR_PROC_HEADER_EXTS structure.
Use the documented NDR_PROC_HEADER_EXTS structure instead of the current NDR_PROC_EXTENSIONS structure currently in ndr_stubless.c.
This commit is contained in:
parent
28f494e31a
commit
98facf4d0f
|
@ -204,43 +204,6 @@ typedef struct _NDR_PROC_PARTIAL_OIF_HEADER
|
||||||
unsigned char number_of_params;
|
unsigned char number_of_params;
|
||||||
} NDR_PROC_PARTIAL_OIF_HEADER;
|
} NDR_PROC_PARTIAL_OIF_HEADER;
|
||||||
|
|
||||||
/* Windows 2000 extensions */
|
|
||||||
typedef struct _NDR_PROC_EXTENSION
|
|
||||||
{
|
|
||||||
/* size in bytes of all following extensions */
|
|
||||||
unsigned char extension_version;
|
|
||||||
|
|
||||||
/* extension flags:
|
|
||||||
* HasNewCorrDesc = 0x01 - indicates new correlation descriptors in use
|
|
||||||
* ClientCorrCheck = 0x02 - client needs correlation check
|
|
||||||
* ServerCorrCheck = 0x04 - server needs correlation check
|
|
||||||
* HasNotify = 0x08 - should call MIDL [notify] routine @ NotifyIndex
|
|
||||||
* HasNotify2 = 0x10 - should call MIDL [notify_flag] routine @
|
|
||||||
* NotifyIndex
|
|
||||||
*/
|
|
||||||
unsigned char ext_flags;
|
|
||||||
|
|
||||||
/* client cache size hint */
|
|
||||||
unsigned short ClientCorrHint;
|
|
||||||
|
|
||||||
/* server cache size hint */
|
|
||||||
unsigned short ServerCorrHint;
|
|
||||||
|
|
||||||
/* index of routine in MIDL_STUB_DESC::NotifyRoutineTable to call if
|
|
||||||
* HasNotify or HasNotify2 flag set */
|
|
||||||
unsigned short NotifyIndex;
|
|
||||||
} NDR_PROC_EXTENSION;
|
|
||||||
|
|
||||||
/* usually generated only on IA64 */
|
|
||||||
typedef struct _NDR_PROC_EXTENSION_64
|
|
||||||
{
|
|
||||||
NDR_PROC_EXTENSION ext;
|
|
||||||
|
|
||||||
/* needed only on IA64 to cope with float/register loading */
|
|
||||||
unsigned short FloatDoubleMask;
|
|
||||||
} NDR_PROC_EXTENSION_64;
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct _NDR_PARAM_OI_BASETYPE
|
typedef struct _NDR_PARAM_OI_BASETYPE
|
||||||
{
|
{
|
||||||
/* parameter direction. One of:
|
/* parameter direction. One of:
|
||||||
|
@ -431,8 +394,8 @@ LONG_PTR WINAPIV NdrClientCall2(PMIDL_STUB_DESC pStubDesc, PFORMAT_STRING pForma
|
||||||
unsigned short i;
|
unsigned short i;
|
||||||
/* cache of Oif_flags from v2 procedure header */
|
/* cache of Oif_flags from v2 procedure header */
|
||||||
INTERPRETER_OPT_FLAGS Oif_flags = { 0 };
|
INTERPRETER_OPT_FLAGS Oif_flags = { 0 };
|
||||||
/* cache of extension flags from NDR_PROC_EXTENSION */
|
/* cache of extension flags from NDR_PROC_HEADER_EXTS */
|
||||||
unsigned char ext_flags = 0;
|
INTERPRETER_OPT_FLAGS2 ext_flags = { 0 };
|
||||||
/* the type of pass we are currently doing */
|
/* the type of pass we are currently doing */
|
||||||
int phase;
|
int phase;
|
||||||
/* header for procedure string */
|
/* header for procedure string */
|
||||||
|
@ -560,10 +523,10 @@ LONG_PTR WINAPIV NdrClientCall2(PMIDL_STUB_DESC pStubDesc, PFORMAT_STRING pForma
|
||||||
|
|
||||||
if (Oif_flags.HasExtensions)
|
if (Oif_flags.HasExtensions)
|
||||||
{
|
{
|
||||||
NDR_PROC_EXTENSION * pExtensions =
|
NDR_PROC_HEADER_EXTS * pExtensions =
|
||||||
(NDR_PROC_EXTENSION *)&pFormat[current_offset];
|
(NDR_PROC_HEADER_EXTS *)&pFormat[current_offset];
|
||||||
ext_flags = pExtensions->ext_flags;
|
ext_flags = pExtensions->Flags2;
|
||||||
current_offset += pExtensions->extension_version;
|
current_offset += pExtensions->Size;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pProcHeader->Oi_flags & RPC_FC_PROC_OIF_OBJECT)
|
if (pProcHeader->Oi_flags & RPC_FC_PROC_OIF_OBJECT)
|
||||||
|
@ -602,7 +565,7 @@ LONG_PTR WINAPIV NdrClientCall2(PMIDL_STUB_DESC pStubDesc, PFORMAT_STRING pForma
|
||||||
/* init pipes package */
|
/* init pipes package */
|
||||||
/* NdrPipesInitialize(...) */
|
/* NdrPipesInitialize(...) */
|
||||||
}
|
}
|
||||||
if (ext_flags & RPC_FC_PROC_EXT_NEWCORRDESC)
|
if (ext_flags.HasNewCorrDesc)
|
||||||
{
|
{
|
||||||
/* initialize extra correlation package */
|
/* initialize extra correlation package */
|
||||||
FIXME("new correlation description not implemented\n");
|
FIXME("new correlation description not implemented\n");
|
||||||
|
@ -887,7 +850,7 @@ LONG_PTR WINAPIV NdrClientCall2(PMIDL_STUB_DESC pStubDesc, PFORMAT_STRING pForma
|
||||||
|
|
||||||
/* FIXME: unbind the binding handle */
|
/* FIXME: unbind the binding handle */
|
||||||
|
|
||||||
if (ext_flags & RPC_FC_PROC_EXT_NEWCORRDESC)
|
if (ext_flags.HasNewCorrDesc)
|
||||||
{
|
{
|
||||||
/* free extra correlation package */
|
/* free extra correlation package */
|
||||||
/* NdrCorrelationFree(&stubMsg); */
|
/* NdrCorrelationFree(&stubMsg); */
|
||||||
|
@ -997,8 +960,8 @@ long WINAPI NdrStubCall2(
|
||||||
unsigned short i;
|
unsigned short i;
|
||||||
/* cache of Oif_flags from v2 procedure header */
|
/* cache of Oif_flags from v2 procedure header */
|
||||||
INTERPRETER_OPT_FLAGS Oif_flags = { 0 };
|
INTERPRETER_OPT_FLAGS Oif_flags = { 0 };
|
||||||
/* cache of extension flags from NDR_PROC_EXTENSION */
|
/* cache of extension flags from NDR_PROC_HEADER_EXTS */
|
||||||
unsigned char ext_flags = 0;
|
INTERPRETER_OPT_FLAGS2 ext_flags = { 0 };
|
||||||
/* the type of pass we are currently doing */
|
/* the type of pass we are currently doing */
|
||||||
int phase;
|
int phase;
|
||||||
/* header for procedure string */
|
/* header for procedure string */
|
||||||
|
@ -1093,10 +1056,10 @@ long WINAPI NdrStubCall2(
|
||||||
|
|
||||||
if (Oif_flags.HasExtensions)
|
if (Oif_flags.HasExtensions)
|
||||||
{
|
{
|
||||||
NDR_PROC_EXTENSION * pExtensions =
|
NDR_PROC_HEADER_EXTS * pExtensions =
|
||||||
(NDR_PROC_EXTENSION *)&pFormat[current_offset];
|
(NDR_PROC_HEADER_EXTS *)&pFormat[current_offset];
|
||||||
ext_flags = pExtensions->ext_flags;
|
ext_flags = pExtensions->Flags2;
|
||||||
current_offset += pExtensions->extension_version;
|
current_offset += pExtensions->Size;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pProcHeader->Oi_flags & RPC_FC_PROC_OIF_OBJECT)
|
if (pProcHeader->Oi_flags & RPC_FC_PROC_OIF_OBJECT)
|
||||||
|
@ -1131,7 +1094,7 @@ long WINAPI NdrStubCall2(
|
||||||
/* init pipes package */
|
/* init pipes package */
|
||||||
/* NdrPipesInitialize(...) */
|
/* NdrPipesInitialize(...) */
|
||||||
}
|
}
|
||||||
if (ext_flags & RPC_FC_PROC_EXT_NEWCORRDESC)
|
if (ext_flags.HasNewCorrDesc)
|
||||||
{
|
{
|
||||||
/* initialize extra correlation package */
|
/* initialize extra correlation package */
|
||||||
FIXME("new correlation description not implemented\n");
|
FIXME("new correlation description not implemented\n");
|
||||||
|
@ -1441,7 +1404,7 @@ long WINAPI NdrStubCall2(
|
||||||
|
|
||||||
pRpcMsg->BufferLength = (unsigned int)(stubMsg.Buffer - (unsigned char *)pRpcMsg->Buffer);
|
pRpcMsg->BufferLength = (unsigned int)(stubMsg.Buffer - (unsigned char *)pRpcMsg->Buffer);
|
||||||
|
|
||||||
if (ext_flags & RPC_FC_PROC_EXT_NEWCORRDESC)
|
if (ext_flags.HasNewCorrDesc)
|
||||||
{
|
{
|
||||||
/* free extra correlation package */
|
/* free extra correlation package */
|
||||||
/* NdrCorrelationFree(&stubMsg); */
|
/* NdrCorrelationFree(&stubMsg); */
|
||||||
|
|
|
@ -71,4 +71,59 @@ typedef struct
|
||||||
* procedure. */
|
* procedure. */
|
||||||
} INTERPRETER_OPT_FLAGS, *PINTERPRETER_OPT_FLAGS;
|
} INTERPRETER_OPT_FLAGS, *PINTERPRETER_OPT_FLAGS;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
unsigned char HasNewCorrDesc : 1; /* 0x01 - indicates new correlation
|
||||||
|
* descriptors in use. */
|
||||||
|
unsigned char ClientCorrCheck : 1; /* 0x02 - client needs correlation
|
||||||
|
* check. */
|
||||||
|
unsigned char ServerCorrCheck : 1; /* 0x04 - server needs correlation
|
||||||
|
* check. */
|
||||||
|
unsigned char HasNotify : 1; /* 0x08 - should call MIDL [notify]
|
||||||
|
* routine @ NotifyIndex. */
|
||||||
|
unsigned char HasNotify2 : 1; /* 0x10 - should call MIDL [notify_flag] routine @
|
||||||
|
* NotifyIndex. */
|
||||||
|
unsigned char Unused : 3;
|
||||||
|
} INTERPRETER_OPT_FLAGS2, *PINTERPRETER_OPT_FLAGS2;
|
||||||
|
|
||||||
|
/* Win2000 extensions */
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
/* size in bytes of all following extensions */
|
||||||
|
unsigned char Size;
|
||||||
|
|
||||||
|
INTERPRETER_OPT_FLAGS2 Flags2;
|
||||||
|
|
||||||
|
/* client cache size hint */
|
||||||
|
unsigned short ClientCorrHint;
|
||||||
|
|
||||||
|
/* server cache size hint */
|
||||||
|
unsigned short ServerCorrHint;
|
||||||
|
|
||||||
|
/* index of routine in MIDL_STUB_DESC::NotifyRoutineTable to call if
|
||||||
|
* HasNotify or HasNotify2 flag set */
|
||||||
|
unsigned short NotifyIndex;
|
||||||
|
} NDR_PROC_HEADER_EXTS;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
/* size in bytes of all following extensions */
|
||||||
|
unsigned char Size;
|
||||||
|
|
||||||
|
INTERPRETER_OPT_FLAGS2 Flags2;
|
||||||
|
|
||||||
|
/* client cache size hint */
|
||||||
|
unsigned short ClientCorrHint;
|
||||||
|
|
||||||
|
/* server cache size hint */
|
||||||
|
unsigned short ServerCorrHint;
|
||||||
|
|
||||||
|
/* index of routine in MIDL_STUB_DESC::NotifyRoutineTable to call if
|
||||||
|
* HasNotify or HasNotify2 flag set */
|
||||||
|
unsigned short NotifyIndex;
|
||||||
|
|
||||||
|
/* needed only on IA64 to cope with float/register loading */
|
||||||
|
unsigned short FloatArgMask;
|
||||||
|
} NDR_PROC_HEADER_EXTS64;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -172,11 +172,6 @@
|
||||||
#define RPC_FC_PROC_PF_DONTFREEINST 0x0200
|
#define RPC_FC_PROC_PF_DONTFREEINST 0x0200
|
||||||
#define RPC_FC_PROC_PF_SAVEASYNC 0x0400
|
#define RPC_FC_PROC_PF_SAVEASYNC 0x0400
|
||||||
#define RPC_FC_PROC_PF_SRVALLOCSIZE 0xe000 /* in 8 byte units */
|
#define RPC_FC_PROC_PF_SRVALLOCSIZE 0xe000 /* in 8 byte units */
|
||||||
#define RPC_FC_PROC_EXT_NEWCORRDESC 0x01
|
|
||||||
#define RPC_FC_PROC_EXT_CLIENTCORRCHECK 0x02
|
|
||||||
#define RPC_FC_PROC_EXT_SERVERCORRCHECK 0x04
|
|
||||||
#define RPC_FC_PROC_EXT_HASNOTIFY 0x08
|
|
||||||
#define RPC_FC_PROC_EXT_HASNOTIFY2 0x10
|
|
||||||
|
|
||||||
/* correlation types */
|
/* correlation types */
|
||||||
#define RPC_FC_NORMAL_CONFORMANCE 0x00
|
#define RPC_FC_NORMAL_CONFORMANCE 0x00
|
||||||
|
|
Loading…
Reference in New Issue