Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenndrtypes.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
1.7.6.1
|