ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

ndrtypes.h
Go to the documentation of this file.
00001 /*
00002  * NDR Types
00003  *
00004  * Copyright 2006 Robert Shearman (for CodeWeavers)
00005  *
00006  * This library is free software; you can redistribute it and/or
00007  * modify it under the terms of the GNU Lesser General Public
00008  * License as published by the Free Software Foundation; either
00009  * version 2.1 of the License, or (at your option) any later version.
00010  *
00011  * This library is distributed in the hope that it will be useful,
00012  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00013  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014  * Lesser General Public License for more details.
00015  *
00016  * You should have received a copy of the GNU Lesser General Public
00017  * License along with this library; if not, write to the Free Software
00018  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
00019  */
00020 
00021 #ifndef __NDRTYPES_H__
00022 #define __NDRTYPES_H__
00023 
00024 #include <limits.h>
00025 
00026 typedef struct
00027 {
00028     unsigned short MustSize : 1; /* 0x0001 - client interpreter MUST size this
00029      *  parameter, other parameters may be skipped, using the value in
00030      *  NDR_PROC_PARTIAL_OIF_HEADER::constant_client_buffer_size instead. */
00031     unsigned short MustFree : 1; /* 0x0002 - server interpreter MUST size this
00032      *  parameter, other parameters may be skipped, using the value in
00033      *  NDR_PROC_PARTIAL_OIF_HEADER::constant_server_buffer_size instead. */
00034     unsigned short IsPipe : 1; /* 0x0004 - The parameter is a pipe handle */
00035     unsigned short IsIn : 1; /* 0x0008 - The parameter is an input */
00036     unsigned short IsOut : 1; /* 0x0010 - The parameter is an output */
00037     unsigned short IsReturn : 1; /* 0x0020 - The parameter is to be returned */
00038     unsigned short IsBasetype : 1; /* 0x0040 - The parameter is simple and has the
00039      *  format defined by NDR_PARAM_OIF_BASETYPE rather than by
00040      *  NDR_PARAM_OIF_OTHER. */
00041     unsigned short IsByValue : 1; /* 0x0080 - Set for compound types being sent by
00042      *  value. Can be of type: structure, union, transmit_as, represent_as,
00043      *  wire_marshal and SAFEARRAY. */
00044     unsigned short IsSimpleRef : 1; /* 0x0100 - parameter that is a reference
00045      *  pointer to anything other than another pointer, and which has no
00046      *  allocate attributes. */
00047     unsigned short IsDontCallFreeInst : 1; /*  0x0200 - Used for some represent_as types
00048      *  for when the free instance routine should not be called. */
00049     unsigned short SaveForAsyncFinish : 1; /* 0x0400 - Unknown */
00050     unsigned short Unused : 2;
00051     unsigned short ServerAllocSize : 3; /* 0xe000 - If non-zero
00052      *  specifies the size of the object in numbers of 8byte blocks needed.
00053      *  It will be stored on the server's stack rather than using an allocate
00054      *  call. */
00055 } PARAM_ATTRIBUTES;
00056 
00057 typedef struct
00058 {
00059     unsigned char ServerMustSize : 1; /* 0x01 - the server must perform a
00060      *  sizing pass. */
00061     unsigned char ClientMustSize : 1; /* 0x02 - the client must perform a
00062      *  sizing pass. */
00063     unsigned char HasReturn : 1; /* 0x04 - procedure has a return value. */
00064     unsigned char HasPipes : 1; /* 0x08 - the pipe package should be used. */
00065     unsigned char Unused : 1; /* 0x10 - not used */
00066     unsigned char HasAsyncUuid : 1; /* 0x20 - indicates an asynchronous DCOM
00067      *  procedure. */
00068     unsigned char HasExtensions : 1; /* 0x40 - indicates that Win2000
00069      *  extensions are in use. */
00070     unsigned char HasAsyncHandle : 1; /* 0x80 - indicates an asynchronous RPC
00071      *  procedure. */
00072 } INTERPRETER_OPT_FLAGS, *PINTERPRETER_OPT_FLAGS;
00073 
00074 typedef struct
00075 {
00076     unsigned char HasNewCorrDesc : 1; /* 0x01 - indicates new correlation
00077      *  descriptors in use. */
00078     unsigned char ClientCorrCheck : 1; /* 0x02 - client needs correlation
00079      *  check. */
00080     unsigned char ServerCorrCheck : 1; /* 0x04 - server needs correlation
00081      *  check. */
00082     unsigned char HasNotify : 1; /* 0x08 - should call MIDL [notify]
00083      *  routine @ NotifyIndex. */
00084     unsigned char HasNotify2 : 1; /* 0x10 - should call MIDL [notify_flag] routine @ 
00085      *  NotifyIndex. */
00086     unsigned char Unused : 3;
00087 } INTERPRETER_OPT_FLAGS2, *PINTERPRETER_OPT_FLAGS2;
00088 
00089 /* Win2000 extensions */
00090 typedef struct
00091 {
00092     /* size in bytes of all following extensions */
00093     unsigned char Size;
00094 
00095     INTERPRETER_OPT_FLAGS2 Flags2;
00096 
00097     /* client cache size hint */
00098     unsigned short ClientCorrHint;
00099 
00100     /* server cache size hint */
00101     unsigned short ServerCorrHint;
00102 
00103     /* index of routine in MIDL_STUB_DESC::NotifyRoutineTable to call if
00104      * HasNotify or HasNotify2 flag set */
00105     unsigned short NotifyIndex;
00106 } NDR_PROC_HEADER_EXTS;
00107 
00108 typedef struct
00109 {
00110     /* size in bytes of all following extensions */
00111     unsigned char Size;
00112 
00113     INTERPRETER_OPT_FLAGS2 Flags2;
00114 
00115     /* client cache size hint */
00116     unsigned short ClientCorrHint;
00117 
00118     /* server cache size hint */
00119     unsigned short ServerCorrHint;
00120 
00121     /* index of routine in MIDL_STUB_DESC::NotifyRoutineTable to call if
00122      * HasNotify or HasNotify2 flag set */
00123     unsigned short NotifyIndex;
00124 
00125     /* needed only on IA64 to cope with float/register loading */
00126     unsigned short FloatArgMask;
00127 } NDR_PROC_HEADER_EXTS64;
00128 
00129 typedef enum
00130 {
00131     FC_BYTE = 0x01, /* 0x01 */
00132     FC_CHAR, /* 0x02 */
00133     FC_SMALL, /* 0x03 */
00134     FC_USMALL, /* 0x04 */
00135     FC_WCHAR, /* 0x05 */
00136     FC_SHORT, /* 0x06 */
00137     FC_USHORT, /* 0x07 */
00138     FC_LONG, /* 0x08 */
00139     FC_ULONG, /* 0x09 */
00140     FC_FLOAT, /* 0x0a */
00141     FC_HYPER, /* 0x0b */
00142     FC_DOUBLE, /* 0x0c */
00143     FC_ENUM16, /* 0x0d */
00144     FC_ENUM32, /* 0x0e */
00145     FC_IGNORE, /* 0x0f */
00146     FC_ERROR_STATUS_T, /* 0x10 */
00147 
00148     FC_RP, /* 0x11 */ /* reference pointer */
00149     FC_UP, /* 0x12 */ /* unique pointer */
00150     FC_OP, /* 0x13 */ /* object pointer */
00151     FC_FP, /* 0x14 */ /* full pointer */
00152 
00153     FC_STRUCT, /* 0x15 */ /* simple structure */
00154     FC_PSTRUCT, /* 0x16 */ /* simple structure w/ pointers */
00155     FC_CSTRUCT, /* 0x17 */ /* conformant structure */
00156     FC_CPSTRUCT, /* 0x18 */ /* conformant structure w/ pointers */
00157     FC_CVSTRUCT, /* 0x19 */ /* conformant varying struct */
00158     FC_BOGUS_STRUCT, /* 0x1a */ /* complex structure */
00159 
00160     FC_CARRAY, /* 0x1b */ /* conformant array */
00161     FC_CVARRAY, /* 0x1c */ /* conformant varying array */
00162     FC_SMFARRAY, /* 0x1d */ /* small (<64K) fixed array */
00163     FC_LGFARRAY, /* 0x1e */ /* large (>= 64k) fixed array */
00164     FC_SMVARRAY, /* 0x1f */ /* small (<64k) varying array */
00165     FC_LGVARRAY, /* 0x20 */ /* large (>= 64k) varying array */
00166     FC_BOGUS_ARRAY, /* 0x21 */ /* complex array */
00167 } FORMAT_CHARACTER;
00168 
00169 /* flags for all handle types */
00170 #define HANDLE_PARAM_IS_VIA_PTR 0x80
00171 #define HANDLE_PARAM_IS_IN      0x40
00172 #define HANDLE_PARAM_IS_OUT     0x20
00173 #define HANDLE_PARAM_IS_RETURN  0x10
00174 
00175 /* flags for context handles */
00176 #define NDR_STRICT_CONTEXT_HANDLE           0x08
00177 #define NDR_CONTEXT_HANDLE_NOSERIALIZE      0x04
00178 #define NDR_CONTEXT_HANDLE_SERIALIZE        0x02
00179 #define NDR_CONTEXT_HANDLE_CANNOT_BE_NULL   0x01
00180 
00181 #endif

Generated on Mon May 28 2012 04:31:49 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.