Blame winpr/include/winpr/ndr.h

Packit 1fb8d4
/**
Packit 1fb8d4
 * WinPR: Windows Portable Runtime
Packit 1fb8d4
 * Network Data Representation (NDR)
Packit 1fb8d4
 *
Packit 1fb8d4
 * Copyright 2012 Marc-Andre Moreau <marcandre.moreau@gmail.com>
Packit 1fb8d4
 *
Packit 1fb8d4
 * Licensed under the Apache License, Version 2.0 (the "License");
Packit 1fb8d4
 * you may not use this file except in compliance with the License.
Packit 1fb8d4
 * You may obtain a copy of the License at
Packit 1fb8d4
 *
Packit 1fb8d4
 *     http://www.apache.org/licenses/LICENSE-2.0
Packit 1fb8d4
 *
Packit 1fb8d4
 * Unless required by applicable law or agreed to in writing, software
Packit 1fb8d4
 * distributed under the License is distributed on an "AS IS" BASIS,
Packit 1fb8d4
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Packit 1fb8d4
 * See the License for the specific language governing permissions and
Packit 1fb8d4
 * limitations under the License.
Packit 1fb8d4
 */
Packit 1fb8d4
Packit 1fb8d4
#ifndef WINPR_RPC_NDR_H
Packit 1fb8d4
#define WINPR_RPC_NDR_H
Packit 1fb8d4
Packit 1fb8d4
#include <winpr/rpc.h>
Packit 1fb8d4
#include <winpr/wtypes.h>
Packit 1fb8d4
Packit 1fb8d4
#ifndef _WIN32
Packit 1fb8d4
Packit Service 5a9772
#define __RPC_WIN32__ 1
Packit Service 5a9772
#define TARGET_IS_NT50_OR_LATER 1
Packit 1fb8d4
Packit Service 5a9772
typedef union _CLIENT_CALL_RETURN {
Packit 1fb8d4
	void* Pointer;
Packit 1fb8d4
	LONG_PTR Simple;
Packit 1fb8d4
} CLIENT_CALL_RETURN;
Packit 1fb8d4
Packit 1fb8d4
typedef struct _RPC_VERSION
Packit 1fb8d4
{
Packit 1fb8d4
	unsigned short MajorVersion;
Packit 1fb8d4
	unsigned short MinorVersion;
Packit 1fb8d4
} RPC_VERSION;
Packit 1fb8d4
Packit 1fb8d4
typedef struct _RPC_SYNTAX_IDENTIFIER
Packit 1fb8d4
{
Packit 1fb8d4
	GUID SyntaxGUID;
Packit 1fb8d4
	RPC_VERSION SyntaxVersion;
Packit 1fb8d4
} RPC_SYNTAX_IDENTIFIER, PRPC_SYNTAX_IDENTIFIER;
Packit 1fb8d4
Packit Service 5a9772
#define RPC_MGR_EPV void
Packit 1fb8d4
Packit 1fb8d4
typedef struct _RPC_MESSAGE
Packit 1fb8d4
{
Packit 1fb8d4
	RPC_BINDING_HANDLE Handle;
Packit 1fb8d4
	ULONG DataRepresentation;
Packit 1fb8d4
	void* Buffer;
Packit 1fb8d4
	unsigned int BufferLength;
Packit 1fb8d4
	unsigned int ProcNum;
Packit 1fb8d4
	PRPC_SYNTAX_IDENTIFIER TransferSyntax;
Packit 1fb8d4
	void* RpcInterfaceInformation;
Packit 1fb8d4
	void* ReservedForRuntime;
Packit 1fb8d4
	RPC_MGR_EPV* ManagerEpv;
Packit 1fb8d4
	void* ImportContext;
Packit 1fb8d4
	ULONG RpcFlags;
Packit 1fb8d4
} RPC_MESSAGE, *PRPC_MESSAGE;
Packit 1fb8d4
Packit 1fb8d4
typedef void (*RPC_DISPATCH_FUNCTION)(PRPC_MESSAGE Message);
Packit 1fb8d4
Packit 1fb8d4
typedef struct
Packit 1fb8d4
{
Packit 1fb8d4
	unsigned int DispatchTableCount;
Packit 1fb8d4
	RPC_DISPATCH_FUNCTION* DispatchTable;
Packit 1fb8d4
	LONG_PTR Reserved;
Packit 1fb8d4
} RPC_DISPATCH_TABLE, *PRPC_DISPATCH_TABLE;
Packit 1fb8d4
Packit 1fb8d4
typedef struct _RPC_PROTSEQ_ENDPOINT
Packit 1fb8d4
{
Packit 1fb8d4
	unsigned char* RpcProtocolSequence;
Packit 1fb8d4
	unsigned char* Endpoint;
Packit Service 5a9772
} RPC_PROTSEQ_ENDPOINT, *PRPC_PROTSEQ_ENDPOINT;
Packit 1fb8d4
Packit 1fb8d4
typedef struct _RPC_SERVER_INTERFACE
Packit 1fb8d4
{
Packit 1fb8d4
	unsigned int Length;
Packit 1fb8d4
	RPC_SYNTAX_IDENTIFIER InterfaceId;
Packit 1fb8d4
	RPC_SYNTAX_IDENTIFIER TransferSyntax;
Packit 1fb8d4
	PRPC_DISPATCH_TABLE DispatchTable;
Packit 1fb8d4
	unsigned int RpcProtseqEndpointCount;
Packit 1fb8d4
	PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
Packit 1fb8d4
	RPC_MGR_EPV* DefaultManagerEpv;
Packit 1fb8d4
	void const* InterpreterInfo;
Packit 1fb8d4
	unsigned int Flags;
Packit 1fb8d4
} RPC_SERVER_INTERFACE, *PRPC_SERVER_INTERFACE;
Packit 1fb8d4
Packit 1fb8d4
typedef struct _RPC_CLIENT_INTERFACE
Packit 1fb8d4
{
Packit 1fb8d4
	unsigned int Length;
Packit 1fb8d4
	RPC_SYNTAX_IDENTIFIER InterfaceId;
Packit 1fb8d4
	RPC_SYNTAX_IDENTIFIER TransferSyntax;
Packit 1fb8d4
	PRPC_DISPATCH_TABLE DispatchTable;
Packit 1fb8d4
	unsigned int RpcProtseqEndpointCount;
Packit 1fb8d4
	PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
Packit 1fb8d4
	ULONG_PTR Reserved;
Packit 1fb8d4
	void const* InterpreterInfo;
Packit 1fb8d4
	unsigned int Flags;
Packit 1fb8d4
} RPC_CLIENT_INTERFACE, *PRPC_CLIENT_INTERFACE;
Packit 1fb8d4
Packit 1fb8d4
typedef void* (*GENERIC_BINDING_ROUTINE)(void*);
Packit 1fb8d4
typedef void (*GENERIC_UNBIND_ROUTINE)(void*, unsigned char*);
Packit 1fb8d4
Packit 1fb8d4
typedef struct _GENERIC_BINDING_ROUTINE_PAIR
Packit 1fb8d4
{
Packit 1fb8d4
	GENERIC_BINDING_ROUTINE pfnBind;
Packit 1fb8d4
	GENERIC_UNBIND_ROUTINE pfnUnbind;
Packit 1fb8d4
} GENERIC_BINDING_ROUTINE_PAIR, *PGENERIC_BINDING_ROUTINE_PAIR;
Packit 1fb8d4
Packit 1fb8d4
typedef struct __GENERIC_BINDING_INFO
Packit 1fb8d4
{
Packit 1fb8d4
	void* pObj;
Packit 1fb8d4
	unsigned int Size;
Packit 1fb8d4
	GENERIC_BINDING_ROUTINE pfnBind;
Packit 1fb8d4
	GENERIC_UNBIND_ROUTINE pfnUnbind;
Packit 1fb8d4
} GENERIC_BINDING_INFO, *PGENERIC_BINDING_INFO;
Packit 1fb8d4
Packit 1fb8d4
typedef void (*NDR_RUNDOWN)(void* context);
Packit 1fb8d4
typedef void (*NDR_NOTIFY_ROUTINE)(void);
Packit 1fb8d4
Packit 1fb8d4
typedef const unsigned char* PFORMAT_STRING;
Packit 1fb8d4
Packit 1fb8d4
typedef struct _MIDL_STUB_DESC MIDL_STUB_DESC;
Packit 1fb8d4
typedef MIDL_STUB_DESC* PMIDL_STUB_DESC;
Packit 1fb8d4
Packit 1fb8d4
typedef struct _MIDL_STUB_MESSAGE
Packit 1fb8d4
{
Packit 1fb8d4
	PRPC_MESSAGE RpcMsg;
Packit 1fb8d4
	unsigned char* Buffer;
Packit 1fb8d4
	unsigned char* BufferStart;
Packit 1fb8d4
	unsigned char* BufferEnd;
Packit 1fb8d4
	unsigned char* BufferMark;
Packit 1fb8d4
	ULONG BufferLength;
Packit 1fb8d4
	ULONG MemorySize;
Packit 1fb8d4
	unsigned char* Memory;
Packit 1fb8d4
	int IsClient;
Packit 1fb8d4
	int ReuseBuffer;
Packit 1fb8d4
	struct NDR_ALLOC_ALL_NODES_CONTEXT* pAllocAllNodesContext;
Packit 1fb8d4
	struct NDR_POINTER_QUEUE_STATE* pPointerQueueState;
Packit 1fb8d4
	int IgnoreEmbeddedPointers;
Packit 1fb8d4
	unsigned char* PointerBufferMark;
Packit 1fb8d4
	unsigned char fBufferValid;
Packit 1fb8d4
	unsigned char uFlags;
Packit 1fb8d4
	unsigned short Unused2;
Packit 1fb8d4
	ULONG_PTR MaxCount;
Packit 1fb8d4
	ULONG Offset;
Packit 1fb8d4
	ULONG ActualCount;
Packit Service 5a9772
	void* (*pfnAllocate)(size_t);
Packit 1fb8d4
	void (*pfnFree)(void*);
Packit 1fb8d4
	unsigned char* StackTop;
Packit 1fb8d4
	unsigned char* pPresentedType;
Packit 1fb8d4
	unsigned char* pTransmitType;
Packit 1fb8d4
	handle_t SavedHandle;
Packit 1fb8d4
	const struct _MIDL_STUB_DESC* StubDesc;
Packit 1fb8d4
	struct _FULL_PTR_XLAT_TABLES* FullPtrXlatTables;
Packit 1fb8d4
	ULONG FullPtrRefId;
Packit 1fb8d4
	ULONG PointerLength;
Packit 1fb8d4
	int fInDontFree : 1;
Packit 1fb8d4
	int fDontCallFreeInst : 1;
Packit 1fb8d4
	int fInOnlyParam : 1;
Packit 1fb8d4
	int fHasReturn : 1;
Packit 1fb8d4
	int fHasExtensions : 1;
Packit 1fb8d4
	int fHasNewCorrDesc : 1;
Packit 1fb8d4
	int fUnused : 10;
Packit 1fb8d4
	int fUnused2 : 16;
Packit 1fb8d4
	ULONG dwDestContext;
Packit 1fb8d4
	void* pvDestContext;
Packit Service 5a9772
	// NDR_SCONTEXT* SavedContextHandles;
Packit 1fb8d4
	long ParamNumber;
Packit 1fb8d4
	struct IRpcChannelBuffer* pRpcChannelBuffer;
Packit Service 5a9772
	// PARRAY_INFO pArrayInfo;
Packit 1fb8d4
	ULONG* SizePtrCountArray;
Packit 1fb8d4
	ULONG* SizePtrOffsetArray;
Packit 1fb8d4
	ULONG* SizePtrLengthArray;
Packit 1fb8d4
	void* pArgQueue;
Packit 1fb8d4
	ULONG dwStubPhase;
Packit 1fb8d4
	void* LowStackMark;
Packit Service 5a9772
	// PNDR_ASYNC_MESSAGE pAsyncMsg;
Packit Service 5a9772
	// PNDR_CORRELATION_INFO pCorrInfo;
Packit 1fb8d4
	unsigned char* pCorrMemory;
Packit 1fb8d4
	void* pMemoryList;
Packit Service 5a9772
	// CS_STUB_INFO* pCSInfo;
Packit 1fb8d4
	unsigned char* ConformanceMark;
Packit 1fb8d4
	unsigned char* VarianceMark;
Packit 1fb8d4
	void* BackingStoreLowMark;
Packit 1fb8d4
	INT_PTR Unused;
Packit 1fb8d4
	struct _NDR_PROC_CONTEXT* pContext;
Packit 1fb8d4
	INT_PTR Reserved51_1;
Packit 1fb8d4
	INT_PTR Reserved51_2;
Packit 1fb8d4
	INT_PTR Reserved51_3;
Packit 1fb8d4
	INT_PTR Reserved51_4;
Packit 1fb8d4
	INT_PTR Reserved51_5;
Packit 1fb8d4
} MIDL_STUB_MESSAGE, *PMIDL_STUB_MESSAGE;
Packit 1fb8d4
Packit 1fb8d4
typedef void (*EXPR_EVAL)(struct _MIDL_STUB_MESSAGE*);
Packit 1fb8d4
Packit 1fb8d4
typedef void (*XMIT_HELPER_ROUTINE)(PMIDL_STUB_MESSAGE);
Packit 1fb8d4
Packit 1fb8d4
typedef struct _XMIT_ROUTINE_QUINTUPLE
Packit 1fb8d4
{
Packit 1fb8d4
	XMIT_HELPER_ROUTINE pfnTranslateToXmit;
Packit 1fb8d4
	XMIT_HELPER_ROUTINE pfnTranslateFromXmit;
Packit 1fb8d4
	XMIT_HELPER_ROUTINE pfnFreeXmit;
Packit 1fb8d4
	XMIT_HELPER_ROUTINE pfnFreeInst;
Packit 1fb8d4
} XMIT_ROUTINE_QUINTUPLE, *PXMIT_ROUTINE_QUINTUPLE;
Packit 1fb8d4
Packit 1fb8d4
typedef ULONG (*USER_MARSHAL_SIZING_ROUTINE)(ULONG*, ULONG, void*);
Packit 1fb8d4
typedef unsigned char* (*USER_MARSHAL_MARSHALLING_ROUTINE)(ULONG*, unsigned char*, void*);
Packit 1fb8d4
typedef unsigned char* (*USER_MARSHAL_UNMARSHALLING_ROUTINE)(ULONG*, unsigned char*, void*);
Packit 1fb8d4
typedef void (*USER_MARSHAL_FREEING_ROUTINE)(ULONG*, void*);
Packit 1fb8d4
Packit 1fb8d4
typedef struct _USER_MARSHAL_ROUTINE_QUADRUPLE
Packit 1fb8d4
{
Packit 1fb8d4
	USER_MARSHAL_SIZING_ROUTINE pfnBufferSize;
Packit 1fb8d4
	USER_MARSHAL_MARSHALLING_ROUTINE pfnMarshall;
Packit 1fb8d4
	USER_MARSHAL_UNMARSHALLING_ROUTINE pfnUnmarshall;
Packit 1fb8d4
	USER_MARSHAL_FREEING_ROUTINE pfnFree;
Packit 1fb8d4
} USER_MARSHAL_ROUTINE_QUADRUPLE;
Packit 1fb8d4
Packit 1fb8d4
typedef struct _MALLOC_FREE_STRUCT
Packit 1fb8d4
{
Packit 1fb8d4
	void* (*pfnAllocate)(size_t);
Packit 1fb8d4
	void (*pfnFree)(void*);
Packit 1fb8d4
} MALLOC_FREE_STRUCT;
Packit 1fb8d4
Packit 1fb8d4
typedef struct _COMM_FAULT_OFFSETS
Packit 1fb8d4
{
Packit 1fb8d4
	short CommOffset;
Packit 1fb8d4
	short FaultOffset;
Packit 1fb8d4
} COMM_FAULT_OFFSETS;
Packit 1fb8d4
Packit 1fb8d4
typedef void* NDR_CS_ROUTINES;
Packit 1fb8d4
typedef void* NDR_EXPR_DESC;
Packit 1fb8d4
Packit 1fb8d4
struct _MIDL_STUB_DESC
Packit 1fb8d4
{
Packit 1fb8d4
	void* RpcInterfaceInformation;
Packit 1fb8d4
	void* (*pfnAllocate)(size_t);
Packit 1fb8d4
	void (*pfnFree)(void*);
Packit 1fb8d4
Packit Service 5a9772
	union {
Packit 1fb8d4
		handle_t* pAutoHandle;
Packit 1fb8d4
		handle_t* pPrimitiveHandle;
Packit 1fb8d4
		PGENERIC_BINDING_INFO pGenericBindingInfo;
Packit Service 5a9772
	} IMPLICIT_HANDLE_INFO;
Packit 1fb8d4
Packit Service 5a9772
	const NDR_RUNDOWN* apfnNdrRundownRoutines;
Packit Service 5a9772
	const GENERIC_BINDING_ROUTINE_PAIR* aGenericBindingRoutinePairs;
Packit Service 5a9772
	const EXPR_EVAL* apfnExprEval;
Packit Service 5a9772
	const XMIT_ROUTINE_QUINTUPLE* aXmitQuintuple;
Packit Service 5a9772
	const unsigned char* pFormatTypes;
Packit 1fb8d4
Packit Service 5a9772
	int fCheckBounds;
Packit Service 5a9772
	ULONG Version;
Packit Service 5a9772
	MALLOC_FREE_STRUCT* pMallocFreeStruct;
Packit 1fb8d4
Packit Service 5a9772
	long MIDLVersion;
Packit Service 5a9772
	const COMM_FAULT_OFFSETS* CommFaultOffsets;
Packit Service 5a9772
	const USER_MARSHAL_ROUTINE_QUADRUPLE* aUserMarshalQuadruple;
Packit 1fb8d4
Packit Service 5a9772
	const NDR_NOTIFY_ROUTINE* NotifyRoutineTable;
Packit Service 5a9772
	ULONG_PTR mFlags;
Packit 1fb8d4
	const NDR_CS_ROUTINES* CsRoutineTables;
Packit 1fb8d4
	void* ProxyServerInfo;
Packit 1fb8d4
	const NDR_EXPR_DESC* pExprInfo;
Packit 1fb8d4
};
Packit 1fb8d4
Packit 1fb8d4
typedef struct
Packit 1fb8d4
{
Packit 1fb8d4
	unsigned char FullPtrUsed : 1;
Packit 1fb8d4
	unsigned char RpcSsAllocUsed : 1;
Packit 1fb8d4
	unsigned char ObjectProc : 1;
Packit 1fb8d4
	unsigned char HasRpcFlags : 1;
Packit 1fb8d4
	unsigned char IgnoreObjectException : 1;
Packit 1fb8d4
	unsigned char HasCommOrFault : 1;
Packit 1fb8d4
	unsigned char UseNewInitRoutines : 1;
Packit 1fb8d4
	unsigned char Unused : 1;
Packit 1fb8d4
} INTERPRETER_FLAGS, *PINTERPRETER_FLAGS;
Packit 1fb8d4
Packit 1fb8d4
typedef struct
Packit 1fb8d4
{
Packit 1fb8d4
	unsigned short MustSize : 1;
Packit 1fb8d4
	unsigned short MustFree : 1;
Packit 1fb8d4
	unsigned short IsPipe : 1;
Packit 1fb8d4
	unsigned short IsIn : 1;
Packit 1fb8d4
	unsigned short IsOut : 1;
Packit 1fb8d4
	unsigned short IsReturn : 1;
Packit 1fb8d4
	unsigned short IsBasetype : 1;
Packit 1fb8d4
	unsigned short IsByValue : 1;
Packit 1fb8d4
	unsigned short IsSimpleRef : 1;
Packit 1fb8d4
	unsigned short IsDontCallFreeInst : 1;
Packit 1fb8d4
	unsigned short SaveForAsyncFinish : 1;
Packit 1fb8d4
	unsigned short Unused : 2;
Packit 1fb8d4
	unsigned short ServerAllocSize : 3;
Packit 1fb8d4
} PARAM_ATTRIBUTES, *PPARAM_ATTRIBUTES;
Packit 1fb8d4
Packit 1fb8d4
typedef struct
Packit 1fb8d4
{
Packit 1fb8d4
	unsigned char ServerMustSize : 1;
Packit 1fb8d4
	unsigned char ClientMustSize : 1;
Packit 1fb8d4
	unsigned char HasReturn : 1;
Packit 1fb8d4
	unsigned char HasPipes : 1;
Packit 1fb8d4
	unsigned char Unused : 1;
Packit 1fb8d4
	unsigned char HasAsyncUuid : 1;
Packit 1fb8d4
	unsigned char HasExtensions : 1;
Packit 1fb8d4
	unsigned char HasAsyncHandle : 1;
Packit 1fb8d4
} INTERPRETER_OPT_FLAGS, *PINTERPRETER_OPT_FLAGS;
Packit 1fb8d4
Packit 1fb8d4
typedef struct
Packit 1fb8d4
{
Packit 1fb8d4
	unsigned char HasNewCorrDesc : 1;
Packit 1fb8d4
	unsigned char ClientCorrCheck : 1;
Packit 1fb8d4
	unsigned char ServerCorrCheck : 1;
Packit 1fb8d4
	unsigned char HasNotify : 1;
Packit 1fb8d4
	unsigned char HasNotify2 : 1;
Packit 1fb8d4
	unsigned char Unused : 3;
Packit 1fb8d4
} INTERPRETER_OPT_FLAGS2, *PINTERPRETER_OPT_FLAGS2;
Packit 1fb8d4
Packit Service 5a9772
typedef struct _NDR_CORRELATION_FLAGS
Packit 1fb8d4
{
Packit 1fb8d4
	unsigned char Early : 1;
Packit 1fb8d4
	unsigned char Split : 1;
Packit 1fb8d4
	unsigned char IsIidIs : 1;
Packit 1fb8d4
	unsigned char DontCheck : 1;
Packit 1fb8d4
	unsigned char Unused : 4;
Packit 1fb8d4
} NDR_CORRELATION_FLAGS;
Packit 1fb8d4
Packit Service 5a9772
#define FC_ALLOCATE_ALL_NODES 0x01
Packit Service 5a9772
#define FC_DONT_FREE 0x02
Packit Service 5a9772
#define FC_ALLOCED_ON_STACK 0x03
Packit Service 5a9772
#define FC_SIMPLE_POINTER 0x04
Packit Service 5a9772
#define FC_POINTER_DEREF 0x05
Packit Service 5a9772
Packit Service 5a9772
#define HANDLE_PARAM_IS_VIA_PTR 0x80
Packit Service 5a9772
#define HANDLE_PARAM_IS_IN 0x40
Packit Service 5a9772
#define HANDLE_PARAM_IS_OUT 0x20
Packit Service 5a9772
#define HANDLE_PARAM_IS_RETURN 0x21
Packit Service 5a9772
#define NDR_STRICT_CONTEXT_HANDLE 0x08
Packit Service 5a9772
#define NDR_CONTEXT_HANDLE_NO_SERIALIZE 0x04
Packit Service 5a9772
#define NDR_CONTEXT_HANDLE_SERIALIZE 0x02
Packit Service 5a9772
#define NDR_CONTEXT_HANDLE_CANNOT_BE_NULL 0x01
Packit 1fb8d4
Packit 1fb8d4
typedef struct
Packit 1fb8d4
{
Packit 1fb8d4
	PARAM_ATTRIBUTES Attributes;
Packit 1fb8d4
	unsigned short StackOffset;
Packit 1fb8d4
Packit Service 5a9772
	union {
Packit 1fb8d4
		unsigned char FormatChar;
Packit 1fb8d4
		unsigned short Offset;
Packit 1fb8d4
	} Type;
Packit 1fb8d4
Packit 1fb8d4
} NDR_PARAM;
Packit 1fb8d4
Packit 1fb8d4
typedef struct
Packit 1fb8d4
{
Packit 1fb8d4
	unsigned char Size;
Packit 1fb8d4
	INTERPRETER_OPT_FLAGS2 Flags2;
Packit 1fb8d4
	unsigned short ClientCorrHint;
Packit 1fb8d4
	unsigned short ServerCorrHint;
Packit 1fb8d4
	unsigned short NotifyIndex;
Packit 1fb8d4
} NDR_PROC_HEADER_EXTS;
Packit 1fb8d4
Packit 1fb8d4
typedef struct _NDR_PROC_HEADER
Packit 1fb8d4
{
Packit 1fb8d4
	unsigned char HandleType;
Packit 1fb8d4
	INTERPRETER_FLAGS OldOiFlags;
Packit 1fb8d4
	unsigned short RpcFlagsLow;
Packit 1fb8d4
	unsigned short RpcFlagsHi;
Packit 1fb8d4
	unsigned short ProcNum;
Packit 1fb8d4
	unsigned short StackSize;
Packit 1fb8d4
} NDR_PROC_HEADER, *PNDR_PROC_HEADER;
Packit 1fb8d4
Packit 1fb8d4
typedef struct _NDR_OI2_PROC_HEADER
Packit 1fb8d4
{
Packit 1fb8d4
	unsigned short ClientBufferSize;
Packit 1fb8d4
	unsigned short ServerBufferSize;
Packit 1fb8d4
	INTERPRETER_OPT_FLAGS Oi2Flags;
Packit 1fb8d4
	unsigned char NumberParams;
Packit 1fb8d4
} NDR_OI2_PROC_HEADER, *PNDR_OI2_PROC_HEADER;
Packit 1fb8d4
Packit 1fb8d4
typedef enum _NDR_PHASE
Packit 1fb8d4
{
Packit 1fb8d4
	NDR_PHASE_SIZE,
Packit 1fb8d4
	NDR_PHASE_MARSHALL,
Packit 1fb8d4
	NDR_PHASE_UNMARSHALL,
Packit 1fb8d4
	NDR_PHASE_FREE
Packit 1fb8d4
} NDR_PHASE;
Packit 1fb8d4
Packit Service 5a9772
#define FC_NORMAL_CONFORMANCE 0x00
Packit Service 5a9772
#define FC_POINTER_CONFORMANCE 0x10
Packit Service 5a9772
#define FC_TOP_LEVEL_CONFORMANCE 0x20
Packit Service 5a9772
#define FC_CONSTANT_CONFORMANCE 0x40
Packit Service 5a9772
#define FC_TOP_LEVEL_MULTID_CONFORMANCE 0x80
Packit 1fb8d4
Packit 1fb8d4
/* Type Format Strings: http://msdn.microsoft.com/en-us/library/windows/desktop/aa379093/ */
Packit 1fb8d4
Packit Service 5a9772
#define FC_ZERO 0x00
Packit Service 5a9772
#define FC_BYTE 0x01
Packit Service 5a9772
#define FC_CHAR 0x02
Packit Service 5a9772
#define FC_SMALL 0x03
Packit Service 5a9772
#define FC_USMALL 0x04
Packit Service 5a9772
#define FC_WCHAR 0x05
Packit Service 5a9772
#define FC_SHORT 0x06
Packit Service 5a9772
#define FC_USHORT 0x07
Packit Service 5a9772
#define FC_LONG 0x08
Packit Service 5a9772
#define FC_ULONG 0x09
Packit Service 5a9772
#define FC_FLOAT 0x0A
Packit Service 5a9772
#define FC_HYPER 0x0B
Packit Service 5a9772
#define FC_DOUBLE 0x0C
Packit Service 5a9772
#define FC_ENUM16 0x0D
Packit Service 5a9772
#define FC_ENUM32 0x0E
Packit Service 5a9772
#define FC_IGNORE 0x0F
Packit Service 5a9772
#define FC_ERROR_STATUS_T 0x10
Packit Service 5a9772
#define FC_RP 0x11
Packit Service 5a9772
#define FC_UP 0x12
Packit Service 5a9772
#define FC_OP 0x13
Packit Service 5a9772
#define FC_FP 0x14
Packit Service 5a9772
#define FC_STRUCT 0x15
Packit Service 5a9772
#define FC_PSTRUCT 0x16
Packit Service 5a9772
#define FC_CSTRUCT 0x17
Packit Service 5a9772
#define FC_CPSTRUCT 0x18
Packit Service 5a9772
#define FC_CVSTRUCT 0x19
Packit Service 5a9772
#define FC_BOGUS_STRUCT 0x1A
Packit Service 5a9772
#define FC_CARRAY 0x1B
Packit Service 5a9772
#define FC_CVARRAY 0x1C
Packit Service 5a9772
#define FC_SMFARRAY 0x1D
Packit Service 5a9772
#define FC_LGFARRAY 0x1E
Packit Service 5a9772
#define FC_SMVARRAY 0x1F
Packit Service 5a9772
#define FC_LGVARRAY 0x20
Packit Service 5a9772
#define FC_BOGUS_ARRAY 0x21
Packit Service 5a9772
#define FC_C_CSTRING 0x22
Packit Service 5a9772
#define FC_C_BSTRING 0x23
Packit Service 5a9772
#define FC_C_SSTRING 0x24
Packit Service 5a9772
#define FC_C_WSTRING 0x25
Packit Service 5a9772
#define FC_CSTRING 0x26
Packit Service 5a9772
#define FC_BSTRING 0x27
Packit Service 5a9772
#define FC_SSTRING 0x28
Packit Service 5a9772
#define FC_WSTRING 0x29
Packit Service 5a9772
#define FC_ENCAPSULATED_UNION 0x2A
Packit Service 5a9772
#define FC_NON_ENCAPSULATED_UNION 0x2B
Packit Service 5a9772
#define FC_BYTE_COUNT_POINTER 0x2C
Packit Service 5a9772
#define FC_TRANSMIT_AS 0x2D
Packit Service 5a9772
#define FC_REPRESENT_AS 0x2E
Packit Service 5a9772
#define FC_IP 0x2F
Packit Service 5a9772
#define FC_BIND_CONTEXT 0x30
Packit Service 5a9772
#define FC_BIND_GENERIC 0x31
Packit Service 5a9772
#define FC_BIND_PRIMITIVE 0x32
Packit Service 5a9772
#define FC_AUTO_HANDLE 0x33
Packit Service 5a9772
#define FC_CALLBACK_HANDLE 0x34
Packit Service 5a9772
#define FC_UNUSED1 0x35
Packit Service 5a9772
#define FC_POINTER 0x36
Packit Service 5a9772
#define FC_ALIGNM2 0x37
Packit Service 5a9772
#define FC_ALIGNM4 0x38
Packit Service 5a9772
#define FC_ALIGNM8 0x39
Packit Service 5a9772
#define FC_UNUSED2 0x3A
Packit Service 5a9772
#define FC_UNUSED3 0x3B
Packit Service 5a9772
#define FC_UNUSED4 0x3C
Packit Service 5a9772
#define FC_STRUCTPAD1 0x3D
Packit Service 5a9772
#define FC_STRUCTPAD2 0x3E
Packit Service 5a9772
#define FC_STRUCTPAD3 0x3F
Packit Service 5a9772
#define FC_STRUCTPAD4 0x40
Packit Service 5a9772
#define FC_STRUCTPAD5 0x41
Packit Service 5a9772
#define FC_STRUCTPAD6 0x42
Packit Service 5a9772
#define FC_STRUCTPAD7 0x43
Packit Service 5a9772
#define FC_STRING_SIZED 0x44
Packit Service 5a9772
#define FC_UNUSED5 0x45
Packit Service 5a9772
#define FC_NO_REPEAT 0x46
Packit Service 5a9772
#define FC_FIXED_REPEAT 0x47
Packit Service 5a9772
#define FC_VARIABLE_REPEAT 0x48
Packit Service 5a9772
#define FC_FIXED_OFFSET 0x49
Packit Service 5a9772
#define FC_VARIABLE_OFFSET 0x4A
Packit Service 5a9772
#define FC_PP 0x4B
Packit Service 5a9772
#define FC_EMBEDDED_COMPLEX 0x4C
Packit Service 5a9772
#define FC_IN_PARAM 0x4D
Packit Service 5a9772
#define FC_IN_PARAM_BASETYPE 0x4E
Packit Service 5a9772
#define FC_IN_PARAM_NO_FREE_INST 0x4F
Packit Service 5a9772
#define FC_IN_OUT_PARAM 0x50
Packit Service 5a9772
#define FC_OUT_PARAM 0x51
Packit Service 5a9772
#define FC_RETURN_PARAM 0x52
Packit Service 5a9772
#define FC_RETURN_PARAM_BASETYPE 0x53
Packit Service 5a9772
#define FC_DEREFERENCE 0x54
Packit Service 5a9772
#define FC_DIV_2 0x55
Packit Service 5a9772
#define FC_MULT_2 0x56
Packit Service 5a9772
#define FC_ADD_1 0x57
Packit Service 5a9772
#define FC_SUB_1 0x58
Packit Service 5a9772
#define FC_CALLBACK 0x59
Packit Service 5a9772
#define FC_CONSTANT_IID 0x5A
Packit Service 5a9772
#define FC_END 0x5B
Packit Service 5a9772
#define FC_PAD 0x5C
Packit Service 5a9772
#define FC_SPLIT_DEREFERENCE 0x74
Packit Service 5a9772
#define FC_SPLIT_DIV_2 0x75
Packit Service 5a9772
#define FC_SPLIT_MULT_2 0x76
Packit Service 5a9772
#define FC_SPLIT_ADD_1 0x77
Packit Service 5a9772
#define FC_SPLIT_SUB_1 0x78
Packit Service 5a9772
#define FC_SPLIT_CALLBACK 0x79
Packit Service 5a9772
#define FC_HARD_STRUCT 0xB1
Packit Service 5a9772
#define FC_TRANSMIT_AS_PTR 0xB2
Packit Service 5a9772
#define FC_REPRESENT_AS_PTR 0xB3
Packit Service 5a9772
#define FC_USER_MARSHAL 0xB4
Packit Service 5a9772
#define FC_PIPE 0xB5
Packit Service 5a9772
#define FC_BLKHOLE 0xB6
Packit Service 5a9772
#define FC_RANGE 0xB7
Packit Service 5a9772
#define FC_INT3264 0xB8
Packit Service 5a9772
#define FC_UINT3264 0xB9
Packit Service 5a9772
#define FC_END_OF_UNIVERSE 0xBA
Packit Service 5a9772
Packit Service 5a9772
#define NdrFcShort(s) (byte)(s & 0xFF), (byte)(s >> 8)
Packit Service 5a9772
Packit Service 5a9772
#define NdrFcLong(s) \
Packit Service 5a9772
	(byte)(s & 0xFF), (byte)((s & 0x0000FF00) >> 8), (byte)((s & 0x00FF0000) >> 16), (byte)(s >> 24)
Packit Service 5a9772
Packit Service 5a9772
typedef void (*NDR_TYPE_SIZE_ROUTINE)(PMIDL_STUB_MESSAGE pStubMsg, unsigned char* pMemory,
Packit Service 5a9772
                                      PFORMAT_STRING pFormat);
Packit Service 5a9772
typedef void (*NDR_TYPE_MARSHALL_ROUTINE)(PMIDL_STUB_MESSAGE pStubMsg, unsigned char* pMemory,
Packit Service 5a9772
                                          unsigned char FormatChar);
Packit Service 5a9772
typedef void (*NDR_TYPE_UNMARSHALL_ROUTINE)(PMIDL_STUB_MESSAGE pStubMsg, unsigned char* pMemory,
Packit Service 5a9772
                                            unsigned char FormatChar);
Packit Service 5a9772
typedef void (*NDR_TYPE_FREE_ROUTINE)(PMIDL_STUB_MESSAGE pStubMsg, unsigned char* pMemory,
Packit Service 5a9772
                                      PFORMAT_STRING pFormat);
Packit 1fb8d4
Packit 1fb8d4
#ifdef __cplusplus
Packit Service 5a9772
extern "C"
Packit Service 5a9772
{
Packit 1fb8d4
#endif
Packit 1fb8d4
Packit Service 5a9772
	WINPR_API CLIENT_CALL_RETURN NdrClientCall2(PMIDL_STUB_DESC pStubDescriptor,
Packit Service 5a9772
	                                            PFORMAT_STRING pFormat, ...);
Packit 1fb8d4
Packit 1fb8d4
#ifdef __cplusplus
Packit 1fb8d4
}
Packit 1fb8d4
#endif
Packit 1fb8d4
Packit 1fb8d4
#endif
Packit 1fb8d4
Packit 1fb8d4
#endif /* WINPR_RPC_NDR_H */