Home | History | Annotate | Download | only in include
      1 /**
      2  * This file has no copyright assigned and is placed in the Public Domain.
      3  * This file is part of the mingw-w64 runtime package.
      4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
      5  */
      6 #ifndef _NDR64TYPES_H
      7 #define _NDR64TYPES_H
      8 
      9 #include <pshpack8.h>
     10 
     11 #include <guiddef.h>
     12 
     13 typedef const void *FormatInfoRef;
     14 #define INVALID_FRAGMENT_ID 0
     15 
     16 typedef unsigned __int8 NDR64_UINT8;
     17 typedef unsigned __int16 NDR64_UINT16;
     18 typedef unsigned __int32 NDR64_UINT32;
     19 __MINGW_EXTENSION typedef unsigned __int64 NDR64_UINT64;
     20 
     21 typedef __int8 NDR64_INT8;
     22 typedef __int16 NDR64_INT16;
     23 typedef __int32 NDR64_INT32;
     24 __MINGW_EXTENSION typedef __int64 NDR64_INT64;
     25 
     26 typedef NDR64_UINT8 NDR64_FORMAT_CHAR;
     27 typedef const void *PNDR64_FORMAT;
     28 typedef NDR64_UINT8 NDR64_ALIGNMENT;
     29 typedef NDR64_UINT32 NDR64_FORMAT_UINT32;
     30 
     31 #ifdef __ia64__
     32 #define Ia64Axp(a,b) (a)
     33 #elif (defined(_X86_) && !defined(__x86_64))
     34 #define Ia64Axp(a,b) (a)
     35 #elif defined(__x86_64)
     36 #define Ia64Axp(a,b) (a)
     37 #else
     38 #error Unsupported platform
     39 #endif
     40 
     41 #define NDR64_FC_EXPLICIT_HANDLE 0
     42 #define NDR64_FC_BIND_GENERIC 1
     43 #define NDR64_FC_BIND_PRIMITIVE 2
     44 #define NDR64_FC_AUTO_HANDLE 3
     45 #define NDR64_FC_CALLBACK_HANDLE 4
     46 #define NDR64_FC_NO_HANDLE 5
     47 
     48 #if defined(__RPC_WIN32__)
     49 typedef NDR64_INT32 NDR64_PTR_WIRE_TYPE;
     50 #else
     51 typedef NDR64_INT64 NDR64_PTR_WIRE_TYPE;
     52 #endif
     53 
     54 #define NDR64_PTR_WIRE_ALIGN (sizeof(NDR64_PTR_WIRE_TYPE)-1)
     55 
     56 typedef NDR64_UINT64 NDR64_WIRE_COUNT_TYPE;
     57 #define NDR64_WIRE_COUNT_ALIGN (sizeof(NDR64_WIRE_COUNT_TYPE)-1)
     58 
     59 typedef struct _NDR64_PROC_FLAGS {
     60   NDR64_UINT32 HandleType : 3;
     61   NDR64_UINT32 ProcType : 3;
     62   NDR64_UINT32 IsInterpreted : 2;
     63   NDR64_UINT32 IsObject : 1;
     64   NDR64_UINT32 IsAsync : 1;
     65   NDR64_UINT32 IsEncode : 1;
     66   NDR64_UINT32 IsDecode : 1;
     67   NDR64_UINT32 UsesFullPtrPackage : 1;
     68   NDR64_UINT32 UsesRpcSmPackage : 1;
     69   NDR64_UINT32 UsesPipes : 1;
     70   NDR64_UINT32 HandlesExceptions : 2;
     71   NDR64_UINT32 ServerMustSize : 1;
     72   NDR64_UINT32 ClientMustSize : 1;
     73   NDR64_UINT32 HasReturn : 1;
     74   NDR64_UINT32 HasComplexReturn : 1;
     75   NDR64_UINT32 ServerHasCorrelation : 1;
     76   NDR64_UINT32 ClientHasCorrelation : 1;
     77   NDR64_UINT32 HasNotify : 1;
     78   NDR64_UINT32 HasOtherExtensions : 1;
     79   NDR64_UINT32 Reserved : 7;
     80 } NDR64_PROC_FLAGS;
     81 
     82 typedef struct _NDR64_RPC_FLAGS {
     83   NDR64_UINT16 Idempotent : 1;
     84   NDR64_UINT16 Broadcast : 1;
     85   NDR64_UINT16 Maybe : 1;
     86   NDR64_UINT16 Reserved1 : 5;
     87   NDR64_UINT16 Message : 1;
     88   NDR64_UINT16 Reserved2 : 4;
     89   NDR64_UINT16 InputSynchronous : 1;
     90   NDR64_UINT16 Asynchronous : 1;
     91   NDR64_UINT16 Reserved3 : 1;
     92 } NDR64_RPC_FLAGS;
     93 
     94 typedef struct _NDR64_PROC_FORMAT {
     95   NDR64_UINT32 Flags;
     96   NDR64_UINT32 StackSize;
     97   NDR64_UINT32 ConstantClientBufferSize;
     98   NDR64_UINT32 ConstantServerBufferSize;
     99   NDR64_UINT16 RpcFlags;
    100   NDR64_UINT16 FloatDoubleMask;
    101   NDR64_UINT16 NumberOfParams;
    102   NDR64_UINT16 ExtensionSize;
    103 } NDR64_PROC_FORMAT,*PNDR64_PROC_FORMAT;
    104 
    105 typedef struct _NDR64_PARAM_FLAGS {
    106   NDR64_UINT16 MustSize : 1;
    107   NDR64_UINT16 MustFree : 1;
    108   NDR64_UINT16 IsPipe : 1;
    109   NDR64_UINT16 IsIn : 1;
    110   NDR64_UINT16 IsOut : 1;
    111   NDR64_UINT16 IsReturn : 1;
    112   NDR64_UINT16 IsBasetype : 1;
    113   NDR64_UINT16 IsByValue : 1;
    114   NDR64_UINT16 IsSimpleRef : 1;
    115   NDR64_UINT16 IsDontCallFreeInst : 1;
    116   NDR64_UINT16 SaveForAsyncFinish : 1;
    117   NDR64_UINT16 IsPartialIgnore : 1;
    118   NDR64_UINT16 IsForceAllocate : 1;
    119   NDR64_UINT16 Reserved : 2;
    120   NDR64_UINT16 UseCache : 1;
    121 } NDR64_PARAM_FLAGS;
    122 
    123 typedef struct _NDR64_PARAM_FORMAT {
    124   PNDR64_FORMAT Type;
    125   NDR64_PARAM_FLAGS Attributes;
    126   NDR64_UINT16 Reserved;
    127   NDR64_UINT32 StackOffset;
    128 } NDR64_PARAM_FORMAT,*PNDR64_PARAM_FORMAT;
    129 
    130 typedef struct _NDR64_RANGE_FORMAT {
    131   NDR64_FORMAT_CHAR FormatCode;
    132   NDR64_FORMAT_CHAR RangeType;
    133   NDR64_UINT16 Reserved;
    134   NDR64_INT64 MinValue;
    135   NDR64_INT64 MaxValue;
    136 } NDR64_RANGE_FORMAT;
    137 
    138 typedef struct _NDR64_CONTEXT_HANDLE_FLAGS {
    139   NDR64_UINT8 CannotBeNull : 1;
    140   NDR64_UINT8 Serialize : 1;
    141   NDR64_UINT8 NoSerialize : 1;
    142   NDR64_UINT8 Strict : 1;
    143   NDR64_UINT8 IsReturn : 1;
    144   NDR64_UINT8 IsOut : 1;
    145   NDR64_UINT8 IsIn : 1;
    146   NDR64_UINT8 IsViaPointer : 1;
    147 } NDR64_CONTEXT_HANDLE_FLAGS;
    148 
    149 typedef struct _NDR64_CONTEXT_HANDLE_FORMAT {
    150   NDR64_FORMAT_CHAR FormatCode;
    151   NDR64_UINT8 ContextFlags;
    152   NDR64_UINT8 RundownRoutineIndex;
    153   NDR64_UINT8 Ordinal;
    154 } NDR64_CONTEXT_HANDLE_FORMAT;
    155 
    156 typedef struct _NDR64_BIND_PRIMITIVE {
    157   NDR64_FORMAT_CHAR HandleType;
    158   NDR64_UINT8 Flags;
    159   NDR64_UINT16 StackOffset;
    160   NDR64_UINT16 Reserved;
    161 } NDR64_BIND_PRIMITIVE;
    162 
    163 typedef struct _NDR64_BIND_GENERIC {
    164   NDR64_FORMAT_CHAR HandleType;
    165   NDR64_UINT8 Flags;
    166   NDR64_UINT16 StackOffset;
    167   NDR64_UINT8 RoutineIndex;
    168   NDR64_UINT8 Size;
    169 } NDR64_BIND_GENERIC;
    170 
    171 typedef struct _NDR64_BIND_CONTEXT {
    172   NDR64_FORMAT_CHAR HandleType;
    173   NDR64_UINT8 Flags;
    174   NDR64_UINT16 StackOffset;
    175   NDR64_UINT8 RoutineIndex;
    176   NDR64_UINT8 Ordinal;
    177 } NDR64_BIND_CONTEXT;
    178 
    179 typedef union _NDR64_BINDINGS {
    180   NDR64_BIND_PRIMITIVE Primitive;
    181   NDR64_BIND_GENERIC Generic;
    182   NDR64_BIND_CONTEXT Context;
    183 } NDR64_BINDINGS;
    184 
    185 typedef struct _NDR64_BIND_AND_NOTIFY_EXTENSION {
    186   NDR64_BIND_CONTEXT Binding;
    187   NDR64_UINT16 NotifyIndex;
    188 } NDR64_BIND_AND_NOTIFY_EXTENSION;
    189 
    190 typedef struct _NDR64_POINTER_FORMAT {
    191   NDR64_FORMAT_CHAR FormatCode;
    192   NDR64_UINT8 Flags;
    193   NDR64_UINT16 Reserved;
    194   PNDR64_FORMAT Pointee;
    195 } NDR64_POINTER_FORMAT;
    196 
    197 typedef struct _NDR64_NO_REPEAT_FORMAT {
    198   NDR64_FORMAT_CHAR FormatCode;
    199   NDR64_UINT8 Flags;
    200   NDR64_UINT16 Reserved1;
    201   NDR64_UINT32 Reserved2;
    202 } NDR64_NO_REPEAT_FORMAT;
    203 
    204 typedef struct _NDR64_POINTER_INSTANCE_HEADER_FORMAT {
    205   NDR64_UINT32 Offset;
    206   NDR64_UINT32 Reserved;
    207 } NDR64_POINTER_INSTANCE_HEADER_FORMAT;
    208 
    209 typedef struct _NDR64_POINTER_REPEAT_FLAGS {
    210   NDR64_UINT8 SetCorrMark : 1;
    211   NDR64_UINT8 Reserved : 7;
    212 } NDR64_POINTER_REPEAT_FLAGS,*PNDR64_POINTER_REPEAT_FLAGS;
    213 
    214 typedef struct _NDR64_REPEAT_FORMAT {
    215   NDR64_FORMAT_CHAR FormatCode;
    216   NDR64_POINTER_REPEAT_FLAGS Flags;
    217   NDR64_UINT16 Reserved;
    218   NDR64_UINT32 Increment;
    219   NDR64_UINT32 OffsetToArray;
    220   NDR64_UINT32 NumberOfPointers;
    221 } NDR64_REPEAT_FORMAT,*PNDR64_REPEAT_FORMAT;
    222 
    223 typedef struct _NDR64_FIXED_REPEAT_FORMAT {
    224   NDR64_REPEAT_FORMAT RepeatFormat;
    225   NDR64_UINT32 Iterations;
    226   NDR64_UINT32 Reserved;
    227 } NDR64_FIXED_REPEAT_FORMAT,*PNDR64_FIXED_REPEAT_FORMAT;
    228 
    229 typedef struct _NDR64_IID_FLAGS {
    230   NDR64_UINT8 ConstantIID : 1;
    231   NDR64_UINT8 Reserved : 7;
    232 } NDR64_IID_FLAGS;
    233 
    234 typedef struct _NDR64_CONSTANT_IID_FORMAT {
    235   NDR64_FORMAT_CHAR FormatCode;
    236   NDR64_UINT8 Flags;
    237   NDR64_UINT16 Reserved;
    238   GUID Guid;
    239 } NDR64_CONSTANT_IID_FORMAT;
    240 
    241 typedef struct _NDR64_IID_FORMAT {
    242   NDR64_FORMAT_CHAR FormatCode;
    243   NDR64_UINT8 Flags;
    244   NDR64_UINT16 Reserved;
    245   PNDR64_FORMAT IIDDescriptor;
    246 } NDR64_IID_FORMAT;
    247 
    248 typedef struct _NDR64_STRUCTURE_FLAGS {
    249   NDR64_UINT8 HasPointerInfo : 1;
    250   NDR64_UINT8 HasMemberInfo : 1;
    251   NDR64_UINT8 HasConfArray : 1;
    252   NDR64_UINT8 HasOrigPointerInfo : 1;
    253   NDR64_UINT8 HasOrigMemberInfo : 1;
    254   NDR64_UINT8 Reserved1 : 1;
    255   NDR64_UINT8 Reserved2 : 1;
    256   NDR64_UINT8 Reserved3 : 1;
    257 } NDR64_STRUCTURE_FLAGS;
    258 
    259 typedef struct _NDR64_STRUCTURE_HEADER_FORMAT {
    260   NDR64_FORMAT_CHAR FormatCode;
    261   NDR64_ALIGNMENT Alignment;
    262   NDR64_STRUCTURE_FLAGS Flags;
    263   NDR64_UINT8 Reserve;
    264   NDR64_UINT32 MemorySize;
    265 } NDR64_STRUCTURE_HEADER_FORMAT;
    266 
    267 typedef struct _NDR64_CONF_STRUCTURE_HEADER_FORMAT {
    268   NDR64_FORMAT_CHAR FormatCode;
    269   NDR64_ALIGNMENT Alignment;
    270   NDR64_STRUCTURE_FLAGS Flags;
    271   NDR64_UINT8 Reserve;
    272   NDR64_UINT32 MemorySize;
    273   PNDR64_FORMAT ArrayDescription;
    274 } NDR64_CONF_STRUCTURE_HEADER_FORMAT;
    275 
    276 typedef struct _NDR64_BOGUS_STRUCTURE_HEADER_FORMAT {
    277   NDR64_FORMAT_CHAR FormatCode;
    278   NDR64_ALIGNMENT Alignment;
    279   NDR64_STRUCTURE_FLAGS Flags;
    280   NDR64_UINT8 Reserve;
    281   NDR64_UINT32 MemorySize;
    282   PNDR64_FORMAT OriginalMemberLayout;
    283   PNDR64_FORMAT OriginalPointerLayout;
    284   PNDR64_FORMAT PointerLayout;
    285 } NDR64_BOGUS_STRUCTURE_HEADER_FORMAT;
    286 
    287 typedef struct _NDR64_CONF_BOGUS_STRUCTURE_HEADER_FORMAT {
    288   NDR64_FORMAT_CHAR FormatCode;
    289   NDR64_ALIGNMENT Alignment;
    290   NDR64_STRUCTURE_FLAGS Flags;
    291   NDR64_UINT8 Dimensions;
    292   NDR64_UINT32 MemorySize;
    293   PNDR64_FORMAT OriginalMemberLayout;
    294   PNDR64_FORMAT OriginalPointerLayout;
    295   PNDR64_FORMAT PointerLayout;
    296   PNDR64_FORMAT ConfArrayDescription;
    297 } NDR64_CONF_BOGUS_STRUCTURE_HEADER_FORMAT;
    298 
    299 typedef struct _NDR64_SIMPLE_MEMBER_FORMAT {
    300   NDR64_FORMAT_CHAR FormatCode;
    301   NDR64_UINT8 Reserved1;
    302   NDR64_UINT16 Reserved2;
    303   NDR64_UINT32 Reserved3;
    304 } NDR64_SIMPLE_MEMBER_FORMAT;
    305 
    306 typedef struct _NDR64_MEMPAD_FORMAT {
    307   NDR64_FORMAT_CHAR FormatCode;
    308   NDR64_UINT8 Reserve1;
    309   NDR64_UINT16 MemPad;
    310   NDR64_UINT32 Reserved2;
    311 } NDR64_MEMPAD_FORMAT;
    312 
    313 typedef struct _NDR64_EMBEDDED_COMPLEX_FORMAT {
    314   NDR64_FORMAT_CHAR FormatCode;
    315   NDR64_UINT8 Reserve1;
    316   NDR64_UINT16 Reserve2;
    317   PNDR64_FORMAT Type;
    318 } NDR64_EMBEDDED_COMPLEX_FORMAT;
    319 
    320 typedef struct _NDR64_BUFFER_ALIGN_FORMAT {
    321   NDR64_FORMAT_CHAR FormatCode;
    322   NDR64_ALIGNMENT Alignment;
    323   NDR64_UINT16 Reserved;
    324   NDR64_UINT32 Reserved2;
    325 } NDR64_BUFFER_ALIGN_FORMAT;
    326 
    327 typedef struct _NDR64_SIMPLE_REGION_FORMAT {
    328   NDR64_FORMAT_CHAR FormatCode;
    329   NDR64_ALIGNMENT Alignment;
    330   NDR64_UINT16 RegionSize;
    331   NDR64_UINT32 Reserved;
    332 } NDR64_SIMPLE_REGION_FORMAT;
    333 
    334 typedef struct _NDR64_ENCAPSULATED_UNION {
    335   NDR64_FORMAT_CHAR FormatCode;
    336   NDR64_UINT8 Alignment;
    337   NDR64_UINT8 Flags;
    338   NDR64_FORMAT_CHAR SwitchType;
    339   NDR64_UINT32 MemoryOffset;
    340   NDR64_UINT32 MemorySize;
    341   NDR64_UINT32 Reserved;
    342 } NDR64_ENCAPSULATED_UNION;
    343 
    344 typedef struct _NDR64_NON_ENCAPSULATED_UNION {
    345   NDR64_FORMAT_CHAR FormatCode;
    346   NDR64_UINT8 Alignment;
    347   NDR64_UINT8 Flags;
    348   NDR64_FORMAT_CHAR SwitchType;
    349   NDR64_UINT32 MemorySize;
    350   PNDR64_FORMAT Switch;
    351   NDR64_UINT32 Reserved;
    352 } NDR64_NON_ENCAPSULATED_UNION;
    353 
    354 typedef struct _NDR64_UNION_ARM_SELECTOR {
    355   NDR64_UINT8 Reserved1;
    356   NDR64_UINT8 Alignment;
    357   NDR64_UINT16 Reserved2;
    358   NDR64_UINT32 Arms;
    359 } NDR64_UNION_ARM_SELECTOR;
    360 
    361 typedef struct _NDR64_UNION_ARM {
    362   NDR64_INT64 CaseValue;
    363   PNDR64_FORMAT Type;
    364   NDR64_UINT32 Reserved;
    365 } NDR64_UNION_ARM;
    366 
    367 typedef struct _NDR64_ARRAY_FLAGS {
    368   NDR64_UINT8 HasPointerInfo : 1;
    369   NDR64_UINT8 HasElementInfo : 1;
    370   NDR64_UINT8 IsMultiDimensional : 1;
    371   NDR64_UINT8 IsArrayofStrings : 1;
    372   NDR64_UINT8 Reserved1 : 1;
    373   NDR64_UINT8 Reserved2 : 1;
    374   NDR64_UINT8 Reserved3 : 1;
    375   NDR64_UINT8 Reserved4 : 1;
    376 } NDR64_ARRAY_FLAGS;
    377 
    378 typedef struct _NDR64_ARRAY_ELEMENT_INFO {
    379   NDR64_UINT32 ElementMemSize;
    380   PNDR64_FORMAT Element;
    381 } NDR64_ARRAY_ELEMENT_INFO;
    382 
    383 typedef struct _NDR64_FIX_ARRAY_HEADER_FORMAT {
    384   NDR64_FORMAT_CHAR FormatCode;
    385   NDR64_ALIGNMENT Alignment;
    386   NDR64_ARRAY_FLAGS Flags;
    387   NDR64_UINT8 Reserved;
    388   NDR64_UINT32 TotalSize;
    389 } NDR64_FIX_ARRAY_HEADER_FORMAT;
    390 
    391 typedef struct _NDR64_CONF_ARRAY_HEADER_FORMAT {
    392   NDR64_FORMAT_CHAR FormatCode;
    393   NDR64_ALIGNMENT Alignment;
    394   NDR64_ARRAY_FLAGS Flags;
    395   NDR64_UINT8 Reserved;
    396   NDR64_UINT32 ElementSize;
    397   PNDR64_FORMAT ConfDescriptor;
    398 } NDR64_CONF_ARRAY_HEADER_FORMAT;
    399 
    400 typedef struct _NDR64_CONF_VAR_ARRAY_HEADER_FORMAT {
    401   NDR64_FORMAT_CHAR FormatCode;
    402   NDR64_ALIGNMENT Alignment;
    403   NDR64_ARRAY_FLAGS Flags;
    404   NDR64_UINT8 Reserved;
    405   NDR64_UINT32 ElementSize;
    406   PNDR64_FORMAT ConfDescriptor;
    407   PNDR64_FORMAT VarDescriptor;
    408 } NDR64_CONF_VAR_ARRAY_HEADER_FORMAT;
    409 
    410 typedef struct _NDR64_VAR_ARRAY_HEADER_FORMAT {
    411   NDR64_FORMAT_CHAR FormatCode;
    412   NDR64_ALIGNMENT Alignment;
    413   NDR64_ARRAY_FLAGS Flags;
    414   NDR64_UINT8 Reserved;
    415   NDR64_UINT32 TotalSize;
    416   NDR64_UINT32 ElementSize;
    417   PNDR64_FORMAT VarDescriptor;
    418 } NDR64_VAR_ARRAY_HEADER_FORMAT;
    419 
    420 typedef struct _NDR64_BOGUS_ARRAY_HEADER_FORMAT {
    421   NDR64_FORMAT_CHAR FormatCode;
    422   NDR64_ALIGNMENT Alignment;
    423   NDR64_ARRAY_FLAGS Flags;
    424   NDR64_UINT8 NumberDims;
    425   NDR64_UINT32 NumberElements;
    426   PNDR64_FORMAT Element;
    427 } NDR64_BOGUS_ARRAY_HEADER_FORMAT;
    428 
    429 typedef struct _NDR64_CONF_VAR_BOGUS_ARRAY_HEADER_FORMAT {
    430   NDR64_BOGUS_ARRAY_HEADER_FORMAT FixedArrayFormat;
    431   PNDR64_FORMAT ConfDescription;
    432   PNDR64_FORMAT VarDescription;
    433   PNDR64_FORMAT OffsetDescription;
    434 } NDR64_CONF_VAR_BOGUS_ARRAY_HEADER_FORMAT;
    435 
    436 typedef struct _NDR64_STRING_FLAGS {
    437   NDR64_UINT8 IsSized : 1;
    438   NDR64_UINT8 Reserved2 : 1;
    439   NDR64_UINT8 Reserved3 : 1;
    440   NDR64_UINT8 Reserved4 : 1;
    441   NDR64_UINT8 Reserved5 : 1;
    442   NDR64_UINT8 Reserved6 : 1;
    443   NDR64_UINT8 Reserved7 : 1;
    444   NDR64_UINT8 Reserved8 : 1;
    445 } NDR64_STRING_FLAGS;
    446 
    447 typedef struct NDR64_STRING_HEADER_FORMAT {
    448   NDR64_FORMAT_CHAR FormatCode;
    449   NDR64_STRING_FLAGS Flags;
    450   NDR64_UINT16 ElementSize;
    451 } NDR64_STRING_HEADER_FORMAT;
    452 
    453 typedef struct _NDR64_NON_CONFORMANT_STRING_FORMAT {
    454   NDR64_STRING_HEADER_FORMAT Header;
    455   NDR64_UINT32 TotalSize;
    456 } NDR64_NON_CONFORMANT_STRING_FORMAT;
    457 
    458 typedef struct _NDR64_CONFORMANT_STRING_FORMAT {
    459   NDR64_STRING_HEADER_FORMAT Header;
    460 } NDR64_CONFORMANT_STRING_FORMAT;
    461 
    462 typedef struct NDR64_SIZED_CONFORMANT_STRING_FORMAT {
    463   NDR64_STRING_HEADER_FORMAT Header;
    464   PNDR64_FORMAT SizeDescription;
    465 } NDR64_SIZED_CONFORMANT_STRING_FORMAT;
    466 
    467 typedef enum _tagEXPR_TOKEN {
    468   FC_EXPR_START = 0,FC_EXPR_ILLEGAL = FC_EXPR_START,FC_EXPR_CONST32,FC_EXPR_CONST64,FC_EXPR_VAR,FC_EXPR_OPER,FC_EXPR_NOOP,FC_EXPR_END
    469 } EXPR_TOKEN;
    470 
    471 typedef struct _NDR64_EXPR_OPERATOR {
    472   NDR64_FORMAT_CHAR ExprType;
    473   NDR64_FORMAT_CHAR Operator;
    474   NDR64_FORMAT_CHAR CastType;
    475   NDR64_UINT8 Reserved;
    476 } NDR64_EXPR_OPERATOR;
    477 
    478 typedef struct _NDR64_EXPR_CONST32 {
    479   NDR64_FORMAT_CHAR ExprType;
    480   NDR64_FORMAT_CHAR Reserved;
    481   NDR64_UINT16 Reserved1;
    482   NDR64_UINT32 ConstValue;
    483 } NDR64_EXPR_CONST32;
    484 
    485 typedef struct _NDR64_EXPR_CONST64 {
    486   NDR64_FORMAT_CHAR ExprType;
    487   NDR64_FORMAT_CHAR Reserved;
    488   NDR64_UINT16 Reserved1;
    489   NDR64_INT64 ConstValue;
    490 } NDR64_EXPR_CONST64;
    491 
    492 typedef struct _NDR64_EXPR_VAR {
    493   NDR64_FORMAT_CHAR ExprType;
    494   NDR64_FORMAT_CHAR VarType;
    495   NDR64_UINT16 Reserved;
    496   NDR64_UINT32 Offset;
    497 } NDR64_EXPR_VAR;
    498 
    499 typedef struct _NDR64_EXPR_NOOP {
    500   NDR64_FORMAT_CHAR ExprType;
    501   NDR64_UINT8 Size;
    502   NDR64_UINT16 Reserved;
    503 } NDR64_EXPR_NOOP;
    504 
    505 typedef struct _NDR64_TRANSMIT_AS_FLAGS {
    506   NDR64_UINT8 PresentedTypeIsArray : 1;
    507   NDR64_UINT8 PresentedTypeAlign4 : 1;
    508   NDR64_UINT8 PresentedTypeAlign8 : 1;
    509   NDR64_UINT8 Reserved : 5;
    510 } NDR64_TRANSMIT_AS_FLAGS;
    511 
    512 typedef struct _NDR64_TRANSMIT_AS_FORMAT {
    513   NDR64_FORMAT_CHAR FormatCode;
    514   NDR64_UINT8 Flags;
    515   NDR64_UINT16 RoutineIndex;
    516   NDR64_UINT16 TransmittedTypeWireAlignment;
    517   NDR64_UINT16 MemoryAlignment;
    518   NDR64_UINT32 PresentedTypeMemorySize;
    519   NDR64_UINT32 TransmittedTypeBufferSize;
    520   PNDR64_FORMAT TransmittedType;
    521 } NDR64_TRANSMIT_AS_FORMAT;
    522 
    523 typedef NDR64_TRANSMIT_AS_FORMAT NDR64_REPRESENT_AS_FORMAT;
    524 
    525 typedef struct _NDR64_USER_MARSHAL_FLAGS {
    526   NDR64_UINT8 Reserved : 5;
    527   NDR64_UINT8 IID : 1;
    528   NDR64_UINT8 RefPointer : 1;
    529   NDR64_UINT8 UniquePointer : 1;
    530 } NDR64_USER_MARSHAL_FLAGS;
    531 
    532 typedef struct _NDR64_USER_MARSHAL_FORMAT {
    533   NDR64_FORMAT_CHAR FormatCode;
    534   NDR64_UINT8 Flags;
    535   NDR64_UINT16 RoutineIndex;
    536   NDR64_UINT16 TransmittedTypeWireAlignment;
    537   NDR64_UINT16 MemoryAlignment;
    538   NDR64_UINT32 UserTypeMemorySize;
    539   NDR64_UINT32 TransmittedTypeBufferSize;
    540   PNDR64_FORMAT TransmittedType;
    541 } NDR64_USER_MARSHAL_FORMAT;
    542 
    543 typedef struct NDR64_PIPE_FLAGS {
    544   NDR64_UINT8 Reserved1 : 5;
    545   NDR64_UINT8 HasRange : 1;
    546   NDR64_UINT8 BlockCopy : 1;
    547   NDR64_UINT8 Reserved2 : 1;
    548 } NDR64_PIPE_FLAGS;
    549 
    550 typedef struct _NDR64_PIPE_FORMAT {
    551   NDR64_FORMAT_CHAR FormatCode;
    552   NDR64_UINT8 Flags;
    553   NDR64_UINT8 Alignment;
    554   NDR64_UINT8 Reserved;
    555   PNDR64_FORMAT Type;
    556   NDR64_UINT32 MemorySize;
    557   NDR64_UINT32 BufferSize;
    558 } NDR64_PIPE_FORMAT;
    559 
    560 typedef struct _NDR64_RANGE_PIPE_FORMAT {
    561   NDR64_FORMAT_CHAR FormatCode;
    562   NDR64_UINT8 Flags;
    563   NDR64_UINT8 Alignment;
    564   NDR64_UINT8 Reserved;
    565   PNDR64_FORMAT Type;
    566   NDR64_UINT32 MemorySize;
    567   NDR64_UINT32 BufferSize;
    568   NDR64_UINT32 MinValue;
    569   NDR64_UINT32 MaxValue;
    570 } NDR64_RANGE_PIPE_FORMAT;
    571 
    572 #include <poppack.h>
    573 
    574 #endif
    575