/*++ Copyright (c) 1993-1999 Microsoft Corporation Module Name: ndrtypes.h Abstract: Definitions of new NDR format string types. Revision History: DKays Sep-1993 Created. --*/ #ifndef __NDRTYPES_H__ #define __NDRTYPES_H__ #include #ifdef __cplusplus extern "C" { #endif // // We use C compiler constants like _I16_MIN or _UI32_MAX from limits.h // when we need to check for integral boundaries. #define UNION_OFFSET16_MIN -32512 /*0x8100*/ // These are pointer sizes used by the compiler. // As they we do cross-compilation, they cannot be expressed as sizeof(void*). // The native pointer sizes used by the NDR engine are defined in ndrp.h. #define PTR_WIRE_SIZE 4 #define NT64_PTR_SIZE 8 #define NT32_PTR_SIZE 4 #define SIZEOF_PTR( f64 ) ((f64) ? NT64_PTR_SIZE : NT32_PTR_SIZE ) #define SIZEOF_MEM_PTR() ((pCommand->Is64BitEnv()) ? NT64_PTR_SIZE : NT32_PTR_SIZE ) #define SIZEOF_INT3264() ((pCommand->Is64BitEnv()) ? 8 : 4 ) // // Ndr versions. Versions history is as follows : // // 1.1 - Windows NT version 3.5 // 1.1 - Windows NT version 3.51 // 2.0 - Windows NT version 4.0 // 2.0 is switched on for Oi2, user_marshal, pipes. // 5.0 - Windows NT version 5.0, beta1 // [message], object pipes, async rpc // 5.2 - Windows NT version 5.0, beta2 // /robust, [notify] in -Oicf, [async_uuid()] // extensions to the format string descriptors. // 5.3 - Windows 2000 (NT ver. 5.0), beta3 RC1 // unlimited number of methods with stubless proxies // 5.4 - Windows 2000 (NT ver. 5.0), beta3 // pickling with -Oicf // // A stub can not be used with an rpcrt4.dll which has a version number // less than the version number emitted in the stub. A stub with a lower // version number than the rpcrt4.dll must work. // // Note that the MIDL version is used to choose between -Oi and -Oi2 // interpreters when NDR version is 2.0 or later as now the compiler // generates an explicit flag indicating the interpreter flavor. // The compiler version needs to be 3.0.39 or later for that. // // Since MIDL 3.3.126, for object interfaces, we have proc header extensions, // and async uuid supported. Also since the same version, for object interfaces // the header has a fixed size as we always generate rpcflags into the header // and always generate an "autohandle" handle. Hence, the oicf interpreter flags // and also the extended header is always at the fixed position. // // The MIDL version history is as follows. // // Windows NT ver. 3.1 - MIDL 1.0 // Windows NT ver. 3.5 - MIDL 2.0.72 __midl macro // Windows NT ver. 3.51 - MIDL 2.0.102 (internally, .104) vers. in StubDesc // Windows NT ver. 4.0 - MIDL 3.0.44 user_marshal, pipes // VC 5.0 - MIDL 3.1.75 // Windows NT ver. 5.0 - MIDL 3.1.76 IDW // - MIDL 3.2.88 IDW // - MIDL 3.3.110 beta1 async rpc // - MIDL 5.0.140 async_uuid, robust // - MIDL 5.1.164 beta2 midl_pragma warning // VC 6.0 - MIDL 5.1.164 // Windows NT 5.0 saga - MIDL 5.2.204 64b support // now WIndows 2000 - MIDL 5.2.235 beta3 netmon // - MIDL 5.3.266 midl/midlc exe split // // The MIDL version is generated into the stub descriptor starting with // MIDL ver.2.0.96 (pre NT 3.51 beta 2, Feb 95). // See ndr20\ndrp.h for constants used for specific versions. // #define NDR_MAJOR_VERSION 5UL #define NDR_MINOR_VERSION 4UL #define NDR_VERSION ((NDR_MAJOR_VERSION << 16) | NDR_MINOR_VERSION) #define NDR_VERSION_1_1 ((1UL << 16) | 1UL) #define NDR_VERSION_2_0 ((2UL << 16) | 0UL) #define NDR_VERSION_5_0 ((5UL << 16) | 0UL) #define NDR_VERSION_5_2 ((5UL << 16) | 2UL) #define NDR_VERSION_5_3 ((5UL << 16) | 3UL) #define NDR_VERSION_5_4 ((5UL << 16) | 4UL) // !!! WARNING !!! // // These definitions should be removed in conjunction with Automation // check-in for dual TLBs. // #define LOAD_TLB_AS_64BIT 0 #define LOAD_TLB_AS_32BIT 0 // // !!! WARNING WARNING WARNING !!! // // All of the format character values up to FC_PAD can no longer be changed, // in order to preserve NT 3.5 compatability (excluding those marked as // FC_UNUSED*, these were unused format characters in NDR library version 1.1). // Their ordinal number, as well as semantics, must remain. // // When additional format characters are added (at the end), changes must // be made in ndr20 as well as midl20\codegen\frmtstr.cxx to handle the // new type. // In particular, there is a pFormatCharNames table and a pNdrRoutineNames table // that should be kept in ssync. // // !!! WARNING WARNING WARNING !!! // typedef enum { // // This might catch some errors, probably can be removed after debugging. // FC_ZERO, // // Simple integer and floating point types. // FC_BYTE, // 0x01 FC_CHAR, // 0x02 FC_SMALL, // 0x03 FC_USMALL, // 0x04 FC_WCHAR, // 0x05 FC_SHORT, // 0x06 FC_USHORT, // 0x07 FC_LONG, // 0x08 FC_ULONG, // 0x09 FC_FLOAT, // 0x0a FC_HYPER, // 0x0b FC_DOUBLE, // 0x0c // // Enums. // FC_ENUM16, // 0x0d FC_ENUM32, // 0x0e // // !!!IMPORTANT!!! // All format charaters which appear before this comment must have an // enum value which will fit in 4 bits. // // // Special. // FC_IGNORE, // 0x0f FC_ERROR_STATUS_T, // 0x10 // // Pointer types : // RP - reference pointer // UP - unique pointer // OP - OLE unique pointer // FP - full pointer // FC_RP, // 0x11 FC_UP, // 0x12 FC_OP, // 0x13 FC_FP, // 0x14 // // Structures // // // Structure containing only simple types and fixed arrays. // FC_STRUCT, // 0x15 // // Structure containing only simple types, pointers and fixed arrays. // FC_PSTRUCT, // 0x16 // // Structure containing a conformant array plus all those types // allowed by FC_STRUCT. // FC_CSTRUCT, // 0x17 // // Struct containing a conformant array plus all those types allowed by // FC_PSTRUCT. // FC_CPSTRUCT, // 0x18 // // Struct containing either a conformant varying array or a conformant // string, plus all those types allowed by FC_PSTRUCT. // FC_CVSTRUCT, // 0x19 // // Complex struct - totally bogus! // FC_BOGUS_STRUCT, // 0x1a // // Arrays. // // // Conformant arrray. // FC_CARRAY, // 0x1b // // Conformant varying array. // FC_CVARRAY, // 0x1c // // Fixed array, small and large. // FC_SMFARRAY, // 0x1d FC_LGFARRAY, // 0x1e // // Varying array, small and large. // FC_SMVARRAY, // 0x1f FC_LGVARRAY, // 0x20 // // Complex arrays - totally bogus! // FC_BOGUS_ARRAY, // 0x21 // // Strings : // // The order of these should have been moved around, but it's too late // now. // // CSTRING - character string // BSTRING - byte string (Beta2 compatability only) // SSTRING - structure string // WSTRING - wide charater string // // // Conformant strings. // FC_C_CSTRING, // 0x22 FC_C_BSTRING, // 0x23 FC_C_SSTRING, // 0x24 FC_C_WSTRING, // 0x25 // // Non-conformant strings. // FC_CSTRING, // 0x26 FC_BSTRING, // 0x27 FC_SSTRING, // 0x28 FC_WSTRING, // 0x29 // // Unions // FC_ENCAPSULATED_UNION, // 0x2a FC_NON_ENCAPSULATED_UNION, // 0x2b // // Byte count pointer. // FC_BYTE_COUNT_POINTER, // 0x2c // // transmit_as and represent_as // FC_TRANSMIT_AS, // 0x2d FC_REPRESENT_AS, // 0x2e // // Cairo Interface pointer. // FC_IP, // 0x2f // // Binding handle types // FC_BIND_CONTEXT, // 0x30 FC_BIND_GENERIC, // 0x31 FC_BIND_PRIMITIVE, // 0x32 FC_AUTO_HANDLE, // 0x33 FC_CALLBACK_HANDLE, // 0x34 FC_UNUSED1, // 0x35 // Embedded pointer - used in complex structure layouts only. FC_POINTER, // 0x36 // // Alignment directives, used in structure layouts. // FC_ALIGNM2, // 0x37 FC_ALIGNM4, // 0x38 FC_ALIGNM8, // 0x39 FC_UNUSED2, // 0x3a FC_UNUSED3, // 0x3b FC_UNUSED4, // 0x3c // // Structure padding directives, used in structure layouts only. // FC_STRUCTPAD1, // 0x3d FC_STRUCTPAD2, // 0x3e FC_STRUCTPAD3, // 0x3f FC_STRUCTPAD4, // 0x40 FC_STRUCTPAD5, // 0x41 FC_STRUCTPAD6, // 0x42 FC_STRUCTPAD7, // 0x43 // // Additional string attribute. // FC_STRING_SIZED, // 0x44 FC_UNUSED5, // 0x45 // // Pointer layout attributes. // FC_NO_REPEAT, // 0x46 FC_FIXED_REPEAT, // 0x47 FC_VARIABLE_REPEAT, // 0x48 FC_FIXED_OFFSET, // 0x49 FC_VARIABLE_OFFSET, // 0x4a // Pointer section delimiter. FC_PP, // 0x4b // Embedded complex type. FC_EMBEDDED_COMPLEX, // 0x4c // Parameter attributes. FC_IN_PARAM, // 0x4d FC_IN_PARAM_BASETYPE, // 0x4e FC_IN_PARAM_NO_FREE_INST, // 0x4d FC_IN_OUT_PARAM, // 0x50 FC_OUT_PARAM, // 0x51 FC_RETURN_PARAM, // 0x52 FC_RETURN_PARAM_BASETYPE, // 0x53 // // Conformance/variance attributes. // FC_DEREFERENCE, // 0x54 FC_DIV_2, // 0x55 FC_MULT_2, // 0x56 FC_ADD_1, // 0x57 FC_SUB_1, // 0x58 FC_CALLBACK, // 0x59 // Iid flag. FC_CONSTANT_IID, // 0x5a FC_END, // 0x5b FC_PAD, // 0x5c // // split Conformance/variance attributes. // FC_SPLIT_DEREFERENCE = 0x74, // 0x74 FC_SPLIT_DIV_2, // 0x75 FC_SPLIT_MULT_2, // 0x76 FC_SPLIT_ADD_1, // 0x77 FC_SPLIT_SUB_1, // 0x78 FC_SPLIT_CALLBACK, // 0x79 // // ********************************** // New Post NT 3.5 format characters. // ********************************** // // // Attributes, directives, etc. // // // New types. // // These start at 0xb1 (0x31 + 0x80) so that their routines can simply be // placed sequentially in the various routine tables, while using // a new ROUTINE_INDEX() macro which strips off the most significant bit // of the format character. The value 0x31 is the next value after // FC_BIND_CONTEXT, whose routines were previously the last to appear // in the routine tables. // FC_HARD_STRUCT = 0xb1, // 0xb1 FC_TRANSMIT_AS_PTR, // 0xb2 FC_REPRESENT_AS_PTR, // 0xb3 FC_USER_MARSHAL, // 0xb4 FC_PIPE, // 0xb5 FC_BLKHOLE, // 0xb6 FC_RANGE, // 0xb7 NT 5 beta2 MIDL 3.3.110 FC_INT3264, // 0xb8 NT 5 beta2, MIDL64, 5.1.194+ FC_UINT3264, // 0xb9 NT 5 beta2, MIDL64, 5.1.194+ FC_END_OF_UNIVERSE // 0xba } FORMAT_CHARACTER; #if !defined(__RPC_MAC__) // // Interpreter bit flag structures. // // These are the old Oi interpreter proc flags. typedef struct { unsigned char FullPtrUsed : 1; // 0x01 unsigned char RpcSsAllocUsed : 1; // 0x02 unsigned char ObjectProc : 1; // 0x04 unsigned char HasRpcFlags : 1; // 0x08 unsigned char IgnoreObjectException : 1; // 0x10 unsigned char HasCommOrFault : 1; // 0x20 unsigned char UseNewInitRoutines : 1; // 0x40 unsigned char Unused : 1; } INTERPRETER_FLAGS, *PINTERPRETER_FLAGS; // These are the Oi2 parameter flags. typedef struct { unsigned short MustSize : 1; // 0x0001 unsigned short MustFree : 1; // 0x0002 unsigned short IsPipe : 1; // 0x0004 unsigned short IsIn : 1; // 0x0008 unsigned short IsOut : 1; // 0x0010 unsigned short IsReturn : 1; // 0x0020 unsigned short IsBasetype : 1; // 0x0040 unsigned short IsByValue : 1; // 0x0080 unsigned short IsSimpleRef : 1; // 0x0100 unsigned short IsDontCallFreeInst : 1; // 0x0200 unsigned short SaveForAsyncFinish : 1; // 0x0400 unsigned short Unused : 2; unsigned short ServerAllocSize : 3; // 0xe000 } PARAM_ATTRIBUTES, *PPARAM_ATTRIBUTES; // These are the new Oi2 proc flags. typedef struct { unsigned char ServerMustSize : 1; // 0x01 unsigned char ClientMustSize : 1; // 0x02 unsigned char HasReturn : 1; // 0x04 unsigned char HasPipes : 1; // 0x08 unsigned char Unused : 1; unsigned char HasAsyncUuid : 1; // 0x20 unsigned char HasExtensions : 1; // 0x40 unsigned char HasAsyncHandle : 1; // 0x80 } INTERPRETER_OPT_FLAGS, *PINTERPRETER_OPT_FLAGS; // This is the proc header layout for object procs starting with MIDL 3.3.129, // introduced for the async_uuid() support in dcom but generated for ony object // interface, regardless of the compiler mode and interface being async. // Handle is always autohandle and so there never is explicit handle descriptor. // RpcFlags are always present to make the layout fixed. typedef struct _NDR_DCOM_OI2_PROC_HEADER { unsigned char HandleType; // The old Oi header INTERPRETER_FLAGS OldOiFlags; // unsigned short RpcFlagsLow; // unsigned short RpcFlagsHi; // unsigned short ProcNum; // unsigned short StackSize; // // expl handle descr is never generated // unsigned short ClientBufferSize; // The Oi2 header unsigned short ServerBufferSize; // INTERPRETER_OPT_FLAGS Oi2Flags; // unsigned char NumberParams; // } NDR_DCOM_OI2_PROC_HEADER, *PNDR_DCOM_OI2_PROC_HEADER; // These are extended Oi2 interpreter proc flags. // They have been introduced for NT5 beta2. typedef struct { unsigned char HasNewCorrDesc : 1; // 0x01 unsigned char ClientCorrCheck : 1; // 0x02 unsigned char ServerCorrCheck : 1; // 0x04 unsigned char HasNotify : 1; // 0x08 unsigned char HasNotify2 : 1; // 0x10 unsigned char Unused : 3; } INTERPRETER_OPT_FLAGS2, *PINTERPRETER_OPT_FLAGS2; // This is the layout of the proc header extensions introduced for denial of // attacks for NT5 beta2, MIDL version 3.3.129. // The extensions would be announced by the HasExtensions Oi2 flag and would // follow directly after the ParameterCount field of Oi2 header. typedef struct { unsigned char Size; // size as the extension version INTERPRETER_OPT_FLAGS2 Flags2; unsigned short ClientCorrHint; unsigned short ServerCorrHint; unsigned short NotifyIndex; } NDR_PROC_HEADER_EXTS, *PNDR_PROC_HEADER_EXTS; typedef struct { unsigned char Size; // size as the extension version INTERPRETER_OPT_FLAGS2 Flags2; unsigned short ClientCorrHint; unsigned short ServerCorrHint; unsigned short NotifyIndex; unsigned short FloatArgMask; } NDR_PROC_HEADER_EXTS64, *PNDR_PROC_HEADER_EXTS64; // Context handle flags typedef struct { unsigned char CannotBeNull : 1; // 0x01 unsigned char Serialize : 1; // 0x02 unsigned char NoSerialize : 1; // 0x04 unsigned char IsStrict : 1; // 0x08 unsigned char IsReturn : 1; // 0x10 unsigned char IsOut : 1; // 0x20 unsigned char IsIn : 1; // 0x40 unsigned char IsViaPtr : 1; // 0x80 } NDR_CONTEXT_HANDLE_FLAGS, *PNDR_CONTEXT_HANDLE_FLAGS; // Type pickling flags typedef struct _MIDL_TYPE_PICKLING_FLAGS { unsigned long Oicf : 1; unsigned long HasNewCorrDesc : 1; unsigned long Unused : 30; } MIDL_TYPE_PICKLING_FLAGS, *PMIDL_TYPE_PICKLING_FLAGS; #else // now Mac defs: bits are flipped on Mac. typedef struct { unsigned char Unused : 3; unsigned char HasNotify2 : 1; // 0x10 unsigned char HasNotify : 1; // 0x08 unsigned char ServerCorrCheck : 1; // 0x04 unsigned char ClientCorrCheck : 1; // 0x02 unsigned char HasNewCorrDec : 1; // 0x01 } INTERPRETER_OPT_FLAGS2, *PINTERPRETER_OPT_FLAGS2; typedef struct { unsigned char Unused : 1; unsigned char UseNewInitRoutines : 1; // 0x40 unsigned char HasCommOrFault : 1; // 0x20 unsigned char IgnoreObjectException : 1; // 0x10 unsigned char HasRpcFlags : 1; // 0x08 unsigned char ObjectProc : 1; // 0x04 unsigned char RpcSsAllocUsed : 1; // 0x02 unsigned char FullPtrUsed : 1; // 0x01 } INTERPRETER_FLAGS, *PINTERPRETER_FLAGS; typedef struct { unsigned char HasAsyncHandle : 1; // 0x80 unsigned char HasExtensions : 1; // 0x40 unsigned char Unused : 2; unsigned char HasPipes : 1; // 0x08 unsigned char HasReturn : 1; // 0x04 unsigned char ClientMustSize : 1; // 0x02 unsigned char ServerMustSize : 1; // 0x01 } INTERPRETER_OPT_FLAGS, *PINTERPRETER_OPT_FLAGS; typedef struct { unsigned short ServerAllocSize : 3; // 0xe000 unsigned short Unused : 2; unsigned short SaveForAsyncFinish : 1; // 0x0400 unsigned short IsDontCallFreeInst : 1; // 0x0200 unsigned short IsSimpleRef : 1; // 0x0100 // unsigned short IsByValue : 1; // 0x0080 unsigned short IsBasetype : 1; // 0x0040 unsigned short IsReturn : 1; // 0x0020 unsigned short IsOut : 1; // 0x0010 unsigned short IsIn : 1; // 0x0008 unsigned short IsPipe : 1; // 0x0004 unsigned short MustFree : 1; // 0x0002 unsigned short MustSize : 1; // 0x0001 } PARAM_ATTRIBUTES, *PPARAM_ATTRIBUTES; #endif #define MAX_INTERPRETER_OUT_SIZE 128 #define MAX_INTERPRETER_PARAM_OUT_SIZE 7 * 8 #define INTERPRETER_THUNK_PARAM_SIZE_THRESHOLD (sizeof(long) * 32) #define INTERPRETER_PROC_STACK_FRAME_SIZE_THRESHOLD ( ( 64 * 1024 ) - 1 ) #define FC_NORMAL_CONFORMANCE (unsigned char) 0x00 #define FC_POINTER_CONFORMANCE (unsigned char) 0x10 #define FC_TOP_LEVEL_CONFORMANCE (unsigned char) 0x20 #define FC_CONSTANT_CONFORMANCE (unsigned char) 0x40 #define FC_TOP_LEVEL_MULTID_CONFORMANCE (unsigned char) 0x80 #define FC_NORMAL_VARIANCE FC_NORMAL_CONFORMANCE #define FC_POINTER_VARIANCE FC_POINTER_CONFORMANCE #define FC_TOP_LEVEL_VARIANCE FC_TOP_LEVEL_CONFORMANCE #define FC_CONSTANT_VARIANCE FC_CONSTANT_CONFORMANCE #define FC_TOP_LEVEL_MULTID_VARIANCE FC_TOP_LEVEL_MULTID_CONFORMANCE #define FC_NORMAL_SWITCH_IS FC_NORMAL_CONFORMANCE #define FC_POINTER_SWITCH_IS FC_POINTER_CONFORMANCE #define FC_TOP_LEVEL_SWITCH_IS FC_TOP_LEVEL_CONFORMANCE #define FC_CONSTANT_SWITCH_IS FC_CONSTANT_CONFORMANCE typedef struct _NDR_CORRELATION_FLAGS { unsigned char Early : 1; unsigned char Split : 1; unsigned char IsIidIs : 1; unsigned char DontCheck: 1; unsigned char Unused : 4; } NDR_CORRELATION_FLAGS; #define FC_EARLY_CORRELATION (unsigned char) 0x01 #define FC_SPLIT_CORRELATION (unsigned char) 0x02 #define FC_IID_CORRELATION (unsigned char) 0x04 #define FC_NOCHECK_CORRELATION (unsigned char) 0x08 // // Pointer attributes. // #define FC_ALLOCATE_ALL_NODES 0x01 #define FC_DONT_FREE 0x02 #define FC_ALLOCED_ON_STACK 0x04 #define FC_SIMPLE_POINTER 0x08 #define FC_POINTER_DEREF 0x10 #define LOW_NIBBLE(Byte) (((unsigned char)Byte) & 0x0f) #define HIGH_NIBBLE(Byte) (((unsigned char)Byte) >> 4) #define INVALID_RUNDOWN_ROUTINE_INDEX 255 // // internal bits to represent operation bits // #define OPERATION_MAYBE 0x0001 #define OPERATION_BROADCAST 0x0002 #define OPERATION_IDEMPOTENT 0x0004 #define OPERATION_INPUT_SYNC 0x0008 #define OPERATION_ASYNC 0x0010 #define OPERATION_MESSAGE 0x0020 // // Transmit as / Represent as flag field flags. // // Lower nibble of this byte has an alignment of the transmitted type. // Upper nibble keeps flags. // #define PRESENTED_TYPE_NO_FLAG_SET 0x00 #define PRESENTED_TYPE_IS_ARRAY 0x10 #define PRESENTED_TYPE_ALIGN_4 0x20 #define PRESENTED_TYPE_ALIGN_8 0x40 // // User marshal flags #define USER_MARSHAL_POINTER 0xc0 /* unique or ref */ #define USER_MARSHAL_UNIQUE 0x80 #define USER_MARSHAL_REF 0x40 #define USER_MARSHAL_IID 0x20 /* user marshal has optional info */ // // Handle flags. // // Lower nibble of this byte may have a generic handle size. // Upper nibble keeps flags. ALL FLAGS ARE NOW USED. // #define HANDLE_PARAM_IS_VIA_PTR 0x80 #define HANDLE_PARAM_IS_IN 0x40 #define HANDLE_PARAM_IS_OUT 0x20 #define HANDLE_PARAM_IS_RETURN 0x10 // Lower nibble of this byte may have a generic handle size. // For context handles, it is used for the following flags. #define NDR_STRICT_CONTEXT_HANDLE 0x08 /* NT5 */ #define NDR_CONTEXT_HANDLE_NOSERIALIZE 0x04 /* NT5 */ #define NDR_CONTEXT_HANDLE_SERIALIZE 0x02 /* NT5 */ #define NDR_CONTEXT_HANDLE_CANNOT_BE_NULL 0x01 /* NT5 */ // These are old interpreter flags. // Oi and pickling per procedure flags. // #define Oi_FULL_PTR_USED 0x01 #define Oi_RPCSS_ALLOC_USED 0x02 #define Oi_OBJECT_PROC 0x04 #define Oi_HAS_RPCFLAGS 0x08 // // Bits 5, 6 and 7 are overloaded for use by both pickling and // non-pickling conditions. // // Bit 5 (0x20) is overloaded for object interfaces to distinguish // between invocations of V1 and V2 intepreters for proxies and stubs. // Note that for backward compatibility the bit is actually set // for V1 as it is checked only when NDR version is 2 or later. // #define Oi_IGNORE_OBJECT_EXCEPTION_HANDLING 0x10 #define ENCODE_IS_USED 0x10 #define DECODE_IS_USED 0x20 #define PICKLING_HAS_COMM_OR_FAULT 0x40 // In -Oicf mode only #define Oi_HAS_COMM_OR_FAULT 0x20 #define Oi_OBJ_USE_V2_INTERPRETER 0x20 #define Oi_USE_NEW_INIT_ROUTINES 0x40 #define Oi_UNUSED 0x80 // The new -Oicf interpreter flags #define Oif_HAS_ASYNC_UUID 0x20 // Extended new interpreter flags // // Union arm description types. // #define UNION_CONSECUTIVE_ARMS 1 #define UNION_SMALL_ARMS 2 #define UNION_LARGE_ARMS 3 // Pipe flags #define FC_BIG_PIPE 0x80 #define FC_OBJECT_PIPE 0x40 #define FC_PIPE_HAS_RANGE 0x20 // Black Hole flags #define BLKHOLE_BASETYPE 0x01 #define BLKHOLE_FUNCTION 0x02 #define BLKHOLE_XURTYPE 0x04 // Xmit Usermarshal or Represent-as TYPE // // Union ex. magic union byte, now short // #define MAGIC_UNION_SHORT ((unsigned short) 0x8000) #define NDR_DEFAULT_CORR_CACHE_SIZE 400 #ifdef __cplusplus } #endif #endif