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

rpcndr.h
Go to the documentation of this file.
00001 /*
00002  * Copyright (C) 2000 Francois Gouget
00003  *
00004  * This library is free software; you can redistribute it and/or
00005  * modify it under the terms of the GNU Lesser General Public
00006  * License as published by the Free Software Foundation; either
00007  * version 2.1 of the License, or (at your option) any later version.
00008  *
00009  * This library is distributed in the hope that it will be useful,
00010  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012  * Lesser General Public License for more details.
00013  *
00014  * You should have received a copy of the GNU Lesser General Public
00015  * License along with this library; if not, write to the Free Software
00016  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
00017  */
00018 
00019 #ifndef __RPCNDR_H_VERSION__
00020 #define __RPCNDR_H_VERSION__ ( 500 )
00021 #endif
00022 
00023 #ifndef __WINE_RPCNDR_H
00024 #define __WINE_RPCNDR_H
00025 
00026 #include <basetsd.h>
00027 
00028 #ifdef __cplusplus
00029 extern "C" {
00030 #endif
00031 
00032 #ifdef _MSC_VER
00033 #pragma warning(push)
00034 #pragma warning(disable:4201)
00035 #pragma warning(disable:4255)
00036 #pragma warning(disable:4820)
00037 #endif
00038 #undef CONST_VTBL
00039 #ifdef CONST_VTABLE
00040 # define CONST_VTBL const
00041 #else
00042 # define CONST_VTBL
00043 #endif
00044 
00045 /* stupid #if can't handle casts... this __stupidity
00046    is just a workaround for that limitation */
00047 
00048 #define __NDR_CHAR_REP_MASK  0x000fL
00049 #define __NDR_INT_REP_MASK   0x00f0L
00050 #define __NDR_FLOAT_REP_MASK 0xff00L
00051 
00052 #define __NDR_IEEE_FLOAT     0x0000L
00053 #define __NDR_VAX_FLOAT      0x0100L
00054 #define __NDR_IBM_FLOAT      0x0300L
00055 
00056 #define __NDR_ASCII_CHAR     0x0000L
00057 #define __NDR_EBCDIC_CHAR    0x0001L
00058 
00059 #define __NDR_LITTLE_ENDIAN  0x0010L
00060 #define __NDR_BIG_ENDIAN     0x0000L
00061 
00062 /* Mac's are special */
00063 #if defined(__RPC_MAC__)
00064 # define __NDR_LOCAL_DATA_REPRESENTATION \
00065     (__NDR_IEEE_FLOAT | __NDR_ASCII_CHAR | __NDR_BIG_ENDIAN)
00066 #else
00067 # define __NDR_LOCAL_DATA_REPRESENTATION \
00068     (__NDR_IEEE_FLOAT | __NDR_ASCII_CHAR | __NDR_LITTLE_ENDIAN)
00069 #endif
00070 
00071 #define __NDR_LOCAL_ENDIAN \
00072   (__NDR_LOCAL_DATA_REPRESENTATION & __NDR_INT_REP_MASK)
00073 
00074 /* for convenience, define NDR_LOCAL_IS_BIG_ENDIAN iff it is */
00075 #if __NDR_LOCAL_ENDIAN == __NDR_BIG_ENDIAN
00076 # define NDR_LOCAL_IS_BIG_ENDIAN
00077 #elif __NDR_LOCAL_ENDIAN == __NDR_LITTLE_ENDIAN
00078 # undef NDR_LOCAL_IS_BIG_ENDIAN
00079 #else
00080 # error alien NDR_LOCAL_ENDIAN - Greg botched the defines again, please report
00081 #endif
00082 
00083 /* finally, do the casts like Microsoft */
00084 
00085 #define NDR_CHAR_REP_MASK             ((ULONG) __NDR_CHAR_REP_MASK)
00086 #define NDR_INT_REP_MASK              ((ULONG) __NDR_INT_REP_MASK)
00087 #define NDR_FLOAT_REP_MASK            ((ULONG) __NDR_FLOAT_REP_MASK)
00088 #define NDR_IEEE_FLOAT                ((ULONG) __NDR_IEEE_FLOAT)
00089 #define NDR_VAX_FLOAT                 ((ULONG) __NDR_VAX_FLOAT)
00090 #define NDR_IBM_FLOAT                 ((ULONG) __NDR_IBM_FLOAT)
00091 #define NDR_ASCII_CHAR                ((ULONG) __NDR_ASCII_CHAR)
00092 #define NDR_EBCDIC_CHAR               ((ULONG) __NDR_EBCDIC_CHAR)
00093 #define NDR_LITTLE_ENDIAN             ((ULONG) __NDR_LITTLE_ENDIAN)
00094 #define NDR_BIG_ENDIAN                ((ULONG) __NDR_BIG_ENDIAN)
00095 #define NDR_LOCAL_DATA_REPRESENTATION ((ULONG) __NDR_LOCAL_DATA_REPRESENTATION)
00096 #define NDR_LOCAL_ENDIAN              ((ULONG) __NDR_LOCAL_ENDIAN)
00097 
00098 
00099 #define TARGET_IS_NT50_OR_LATER 1
00100 #define TARGET_IS_NT40_OR_LATER 1
00101 #define TARGET_IS_NT351_OR_WIN95_OR_LATER 1
00102 
00103 #define small char
00104 typedef unsigned char byte;
00105 typedef INT64 hyper;
00106 typedef UINT64 MIDL_uhyper;
00107 typedef unsigned char boolean;
00108 
00109 #define __RPC_CALLEE WINAPI
00110 #define RPC_VAR_ENTRY __cdecl
00111 #define NDR_SHAREABLE static
00112 
00113 #define MIDL_ascii_strlen(s) strlen(s)
00114 #define MIDL_ascii_strcpy(d,s) strcpy(d,s)
00115 #define MIDL_memset(d,v,n) memset(d,v,n)
00116 #define midl_user_free MIDL_user_free
00117 #define midl_user_allocate MIDL_user_allocate
00118 
00119 void * __RPC_USER MIDL_user_allocate(SIZE_T);
00120 void __RPC_USER MIDL_user_free(void *);
00121 
00122 #define NdrFcShort(s) (unsigned char)(s & 0xff), (unsigned char)(s >> 8)
00123 #define NdrFcLong(s)  (unsigned char)(s & 0xff), (unsigned char)((s & 0x0000ff00) >> 8), \
00124   (unsigned char)((s & 0x00ff0000) >> 16), (unsigned char)(s >> 24)
00125 
00126 #define RPC_BAD_STUB_DATA_EXCEPTION_FILTER  \
00127   ((RpcExceptionCode() == STATUS_ACCESS_VIOLATION) || \
00128    (RpcExceptionCode() == STATUS_DATATYPE_MISALIGNMENT) || \
00129    (RpcExceptionCode() == RPC_X_BAD_STUB_DATA) || \
00130    (RpcExceptionCode() == RPC_S_INVALID_BOUND))
00131 
00132 typedef struct tagNDR_SCONTEXT
00133 {
00134   void *pad[2];
00135   void *userContext;
00136 } *NDR_SCONTEXT;
00137 
00138 #define NDRSContextValue(hContext) (&(hContext)->userContext)
00139 #define cbNDRContext 20
00140 
00141 typedef void (__RPC_USER *NDR_RUNDOWN)(void *context);
00142 typedef void (__RPC_USER *NDR_NOTIFY_ROUTINE)(void);
00143 typedef void (__RPC_USER *NDR_NOTIFY2_ROUTINE)(boolean flag);
00144 
00145 #define DECLSPEC_UUID(x)
00146 #define MIDL_INTERFACE(x)   struct
00147 
00148 struct _MIDL_STUB_MESSAGE;
00149 struct _MIDL_STUB_DESC;
00150 struct _FULL_PTR_XLAT_TABLES;
00151 struct NDR_ALLOC_ALL_NODES_CONTEXT;
00152 struct NDR_POINTER_QUEUE_STATE;
00153 
00154 typedef unsigned char *RPC_BUFPTR;
00155 typedef ULONG RPC_LENGTH;
00156 typedef void (__RPC_USER *EXPR_EVAL)(struct _MIDL_STUB_MESSAGE *);
00157 typedef const unsigned char *PFORMAT_STRING;
00158 
00159 typedef struct
00160 {
00161   LONG Dimension;
00162   ULONG *BufferConformanceMark;
00163   ULONG *BufferVarianceMark;
00164   ULONG *MaxCountArray;
00165   ULONG *OffsetArray;
00166   ULONG *ActualCountArray;
00167 } ARRAY_INFO, *PARRAY_INFO;
00168 
00169 typedef struct
00170 {
00171   ULONG WireCodeset;
00172   ULONG DesiredReceivingCodeset;
00173   void *CSArrayInfo;
00174 } CS_STUB_INFO;
00175 
00176 typedef struct _NDR_PIPE_DESC *PNDR_PIPE_DESC;
00177 typedef struct _NDR_PIPE_MESSAGE *PNDR_PIPE_MESSAGE;
00178 typedef struct _NDR_ASYNC_MESSAGE *PNDR_ASYNC_MESSAGE;
00179 typedef struct _NDR_CORRELATION_INFO *PNDR_CORRELATION_INFO;
00180 
00181 typedef struct _MIDL_STUB_MESSAGE
00182 {
00183   PRPC_MESSAGE RpcMsg;
00184   unsigned char *Buffer;
00185   unsigned char *BufferStart;
00186   unsigned char *BufferEnd;
00187   unsigned char *BufferMark;
00188   ULONG BufferLength;
00189   ULONG MemorySize;
00190   unsigned char *Memory;
00191   unsigned char IsClient;
00192   unsigned char Pad;
00193   unsigned short uFlags2;
00194   int ReuseBuffer;
00195   struct NDR_ALLOC_ALL_NODES_CONTEXT *pAllocAllNodesContext;
00196   struct NDR_POINTER_QUEUE_STATE *pPointerQueueState;
00197   int IgnoreEmbeddedPointers;
00198   unsigned char *PointerBufferMark;
00199   unsigned char CorrDespIncrement;
00200   unsigned char uFlags;
00201   unsigned short UniquePtrCount;
00202   ULONG_PTR MaxCount;
00203   ULONG Offset;
00204   ULONG ActualCount;
00205   void * (__WINE_ALLOC_SIZE(1) __RPC_API *pfnAllocate)(SIZE_T);
00206   void (__RPC_API *pfnFree)(void *);
00207   unsigned char *StackTop;
00208   unsigned char *pPresentedType;
00209   unsigned char *pTransmitType;
00210   handle_t SavedHandle;
00211   const struct _MIDL_STUB_DESC *StubDesc;
00212   struct _FULL_PTR_XLAT_TABLES *FullPtrXlatTables;
00213   ULONG FullPtrRefId;
00214   ULONG PointerLength;
00215   unsigned int fInDontFree:1;
00216   unsigned int fDontCallFreeInst:1;
00217   unsigned int fInOnlyParam:1;
00218   unsigned int fHasReturn:1;
00219   unsigned int fHasExtensions:1;
00220   unsigned int fHasNewCorrDesc:1;
00221   unsigned int fIsIn:1;
00222   unsigned int fIsOut:1;
00223   unsigned int fIsOicf:1;
00224   unsigned int fBufferValid:1;
00225   unsigned int fHasMemoryValidateCallback:1;
00226   unsigned int fInFree:1;
00227   unsigned int fNeedMCCP:1;
00228   int fUnused:3;
00229   int fUnused2:16;
00230   DWORD dwDestContext;
00231   void *pvDestContext;
00232   NDR_SCONTEXT *SavedContextHandles;
00233   LONG ParamNumber;
00234   struct IRpcChannelBuffer *pRpcChannelBuffer;
00235   PARRAY_INFO pArrayInfo;
00236   ULONG *SizePtrCountArray;
00237   ULONG *SizePtrOffsetArray;
00238   ULONG *SizePtrLengthArray;
00239   void *pArgQueue;
00240   DWORD dwStubPhase;
00241   void *LowStackMark;
00242   PNDR_ASYNC_MESSAGE pAsyncMsg;
00243   PNDR_CORRELATION_INFO pCorrInfo;
00244   unsigned char *pCorrMemory;
00245   void *pMemoryList;
00246   CS_STUB_INFO *pCSInfo;
00247   unsigned char *ConformanceMark;
00248   unsigned char *VarianceMark;
00249   INT_PTR Unused; /* BackingStoreLowMark on IA64 */
00250   struct _NDR_PROC_CONTEXT *pContext;
00251   void* ContextHandleHash;
00252   void* pUserMarshalList;
00253   INT_PTR Reserved51_3;
00254   INT_PTR Reserved51_4;
00255   INT_PTR Reserved51_5;
00256 } MIDL_STUB_MESSAGE, *PMIDL_STUB_MESSAGE;
00257 
00258 typedef void * (__RPC_API * GENERIC_BINDING_ROUTINE)(void *);
00259 typedef void (__RPC_API * GENERIC_UNBIND_ROUTINE)(void *, unsigned char *);
00260 
00261 typedef struct _GENERIC_BINDING_ROUTINE_PAIR
00262 {
00263   GENERIC_BINDING_ROUTINE pfnBind;
00264   GENERIC_UNBIND_ROUTINE pfnUnbind;
00265 } GENERIC_BINDING_ROUTINE_PAIR, *PGENERIC_BINDING_ROUTINE_PAIR;
00266 
00267 typedef struct __GENERIC_BINDING_INFO
00268 {
00269   void *pObj;
00270   unsigned int Size;
00271   GENERIC_BINDING_ROUTINE pfnBind;
00272   GENERIC_UNBIND_ROUTINE pfnUnbind;
00273 } GENERIC_BINDING_INFO, *PGENERIC_BINDING_INFO;
00274 
00275 typedef void (__RPC_USER *XMIT_HELPER_ROUTINE)(PMIDL_STUB_MESSAGE);
00276 
00277 typedef struct _XMIT_ROUTINE_QUINTUPLE
00278 {
00279   XMIT_HELPER_ROUTINE pfnTranslateToXmit;
00280   XMIT_HELPER_ROUTINE pfnTranslateFromXmit;
00281   XMIT_HELPER_ROUTINE pfnFreeXmit;
00282   XMIT_HELPER_ROUTINE pfnFreeInst;
00283 } XMIT_ROUTINE_QUINTUPLE, *PXMIT_ROUTINE_QUINTUPLE;
00284 
00285 typedef ULONG (__RPC_USER *USER_MARSHAL_SIZING_ROUTINE)(ULONG *, ULONG, void *);
00286 typedef unsigned char * (__RPC_USER *USER_MARSHAL_MARSHALLING_ROUTINE)(ULONG *, unsigned char *, void *);
00287 typedef unsigned char * (__RPC_USER *USER_MARSHAL_UNMARSHALLING_ROUTINE)(ULONG *, unsigned char *, void *);
00288 typedef void (__RPC_USER *USER_MARSHAL_FREEING_ROUTINE)(ULONG *, void *);
00289 
00290 typedef struct _USER_MARSHAL_ROUTINE_QUADRUPLE
00291 {
00292   USER_MARSHAL_SIZING_ROUTINE pfnBufferSize;
00293   USER_MARSHAL_MARSHALLING_ROUTINE pfnMarshall;
00294   USER_MARSHAL_UNMARSHALLING_ROUTINE pfnUnmarshall;
00295   USER_MARSHAL_FREEING_ROUTINE pfnFree;
00296 } USER_MARSHAL_ROUTINE_QUADRUPLE;
00297 
00298 /* 'USRC' */
00299 #define USER_MARSHAL_CB_SIGNATURE \
00300     ( ( (DWORD)'U' << 24 ) | ( (DWORD)'S' << 16 ) | \
00301       ( (DWORD)'R' << 8  ) | ( (DWORD)'C'       ) )
00302 
00303 typedef enum
00304 {
00305     USER_MARSHAL_CB_BUFFER_SIZE,
00306     USER_MARSHAL_CB_MARSHALL,
00307     USER_MARSHAL_CB_UNMARSHALL,
00308     USER_MARSHAL_CB_FREE
00309 } USER_MARSHAL_CB_TYPE;
00310 
00311 typedef struct _USER_MARSHAL_CB
00312 {
00313     ULONG Flags;
00314     PMIDL_STUB_MESSAGE pStubMsg;
00315     PFORMAT_STRING pReserve;
00316     ULONG Signature;
00317     USER_MARSHAL_CB_TYPE CBType;
00318     PFORMAT_STRING pFormat;
00319     PFORMAT_STRING pTypeFormat;
00320 } USER_MARSHAL_CB;
00321 
00322 #define USER_CALL_CTXT_MASK(f) ((f) & 0x00ff)
00323 #define USER_CALL_AUX_MASK(f) ((f) & 0xff00)
00324 #define GET_USER_DATA_REP(f) HIWORD(f)
00325 
00326 #define USER_CALL_IS_ASYNC 0x0100
00327 #define USER_CALL_NEW_CORRELATION_DESC 0x0200
00328 
00329 typedef struct _MALLOC_FREE_STRUCT
00330 {
00331   void * (__WINE_ALLOC_SIZE(1) __RPC_USER *pfnAllocate)(SIZE_T);
00332   void   (__RPC_USER *pfnFree)(void *);
00333 } MALLOC_FREE_STRUCT;
00334 
00335 typedef struct _COMM_FAULT_OFFSETS
00336 {
00337   short CommOffset;
00338   short FaultOffset;
00339 } COMM_FAULT_OFFSETS;
00340 
00341 typedef struct _MIDL_STUB_DESC
00342 {
00343   void *RpcInterfaceInformation;
00344   void * (__WINE_ALLOC_SIZE(1) __RPC_API *pfnAllocate)(SIZE_T);
00345   void (__RPC_API *pfnFree)(void *);
00346   union {
00347     handle_t *pAutoHandle;
00348     handle_t *pPrimitiveHandle;
00349     PGENERIC_BINDING_INFO pGenericBindingInfo;
00350   } IMPLICIT_HANDLE_INFO;
00351   const NDR_RUNDOWN *apfnNdrRundownRoutines;
00352   const GENERIC_BINDING_ROUTINE_PAIR *aGenericBindingRoutinePairs;
00353   const EXPR_EVAL *apfnExprEval;
00354   const XMIT_ROUTINE_QUINTUPLE *aXmitQuintuple;
00355   const unsigned char *pFormatTypes;
00356   int fCheckBounds;
00357   ULONG Version;
00358   MALLOC_FREE_STRUCT *pMallocFreeStruct;
00359   LONG MIDLVersion;
00360   const COMM_FAULT_OFFSETS *CommFaultOffsets;
00361   const USER_MARSHAL_ROUTINE_QUADRUPLE *aUserMarshalQuadruple;
00362   const NDR_NOTIFY_ROUTINE *NotifyRoutineTable;
00363   ULONG_PTR mFlags;
00364   ULONG_PTR Reserved3;
00365   ULONG_PTR Reserved4;
00366   ULONG_PTR Reserved5;
00367 } MIDL_STUB_DESC;
00368 typedef const MIDL_STUB_DESC *PMIDL_STUB_DESC;
00369 
00370 typedef struct _MIDL_FORMAT_STRING
00371 {
00372   short Pad;
00373 #if defined(__GNUC__)
00374   unsigned char Format[0];
00375 #else
00376   unsigned char Format[1];
00377 #endif
00378 } MIDL_FORMAT_STRING;
00379 
00380 typedef struct _MIDL_SYNTAX_INFO
00381 {
00382   RPC_SYNTAX_IDENTIFIER TransferSyntax;
00383   RPC_DISPATCH_TABLE* DispatchTable;
00384   PFORMAT_STRING ProcString;
00385   const unsigned short* FmtStringOffset;
00386   PFORMAT_STRING TypeString;
00387   const void* aUserMarshalQuadruple;
00388   ULONG_PTR pReserved1;
00389   ULONG_PTR pReserved2;
00390 } MIDL_SYNTAX_INFO, *PMIDL_SYNTAX_INFO;
00391 
00392 typedef void (__RPC_API *STUB_THUNK)( PMIDL_STUB_MESSAGE );
00393 
00394 #ifdef WINE_STRICT_PROTOTYPES
00395 typedef LONG (__RPC_API *SERVER_ROUTINE)(void);
00396 #else
00397 typedef LONG (__RPC_API *SERVER_ROUTINE)();
00398 #endif
00399 
00400 typedef struct _MIDL_SERVER_INFO_
00401 {
00402   PMIDL_STUB_DESC pStubDesc;
00403   const SERVER_ROUTINE *DispatchTable;
00404   PFORMAT_STRING ProcString;
00405   const unsigned short *FmtStringOffset;
00406   const STUB_THUNK *ThunkTable;
00407   PRPC_SYNTAX_IDENTIFIER pTransferSyntax;
00408   ULONG_PTR nCount;
00409   PMIDL_SYNTAX_INFO pSyntaxInfo;
00410 } MIDL_SERVER_INFO, *PMIDL_SERVER_INFO;
00411 
00412 typedef struct _MIDL_STUBLESS_PROXY_INFO
00413 {
00414   PMIDL_STUB_DESC pStubDesc;
00415   PFORMAT_STRING ProcFormatString;
00416   const unsigned short *FormatStringOffset;
00417   PRPC_SYNTAX_IDENTIFIER pTransferSyntax;
00418   ULONG_PTR nCount;
00419   PMIDL_SYNTAX_INFO pSyntaxInfo;
00420 } MIDL_STUBLESS_PROXY_INFO, *PMIDL_STUBLESS_PROXY_INFO;
00421 
00422 typedef union _CLIENT_CALL_RETURN
00423 {
00424   void *Pointer;
00425   LONG_PTR Simple;
00426 } CLIENT_CALL_RETURN;
00427 
00428 typedef enum {
00429   STUB_UNMARSHAL,
00430   STUB_CALL_SERVER,
00431   STUB_MARSHAL,
00432   STUB_CALL_SERVER_NO_HRESULT
00433 } STUB_PHASE;
00434 
00435 typedef enum {
00436   PROXY_CALCSIZE,
00437   PROXY_GETBUFFER,
00438   PROXY_MARSHAL,
00439   PROXY_SENDRECEIVE,
00440   PROXY_UNMARSHAL
00441 } PROXY_PHASE;
00442 
00443 typedef enum {
00444   XLAT_SERVER = 1,
00445   XLAT_CLIENT
00446 } XLAT_SIDE;
00447 
00448 typedef struct _FULL_PTR_TO_REFID_ELEMENT {
00449   struct _FULL_PTR_TO_REFID_ELEMENT *Next;
00450   void *Pointer;
00451   ULONG RefId;
00452   unsigned char State;
00453 } FULL_PTR_TO_REFID_ELEMENT, *PFULL_PTR_TO_REFID_ELEMENT;
00454 
00455 /* Full pointer translation tables */
00456 typedef struct _FULL_PTR_XLAT_TABLES {
00457   struct {
00458     void **XlatTable;
00459     unsigned char *StateTable;
00460     ULONG NumberOfEntries;
00461   } RefIdToPointer;
00462 
00463   struct {
00464     PFULL_PTR_TO_REFID_ELEMENT *XlatTable;
00465     ULONG NumberOfBuckets;
00466     ULONG HashMask;
00467   } PointerToRefId;
00468 
00469   ULONG                   NextRefId;
00470   XLAT_SIDE               XlatSide;
00471 } FULL_PTR_XLAT_TABLES,  *PFULL_PTR_XLAT_TABLES;
00472 
00473 struct IRpcStubBuffer;
00474 
00475 typedef ULONG error_status_t;
00476 typedef void  * NDR_CCONTEXT;
00477 
00478 typedef struct _SCONTEXT_QUEUE {
00479   ULONG NumberOfObjects;
00480   NDR_SCONTEXT *ArrayOfObjects;
00481 } SCONTEXT_QUEUE, *PSCONTEXT_QUEUE;
00482 
00483 typedef struct _NDR_USER_MARSHAL_INFO_LEVEL1
00484 {
00485     void *Buffer;
00486     ULONG BufferSize;
00487     void * (__WINE_ALLOC_SIZE(1) __RPC_API *pfnAllocate)(SIZE_T);
00488     void (__RPC_API *pfnFree)(void *);
00489     struct IRpcChannelBuffer *pRpcChannelBuffer;
00490     ULONG_PTR Reserved[5];
00491 } NDR_USER_MARSHAL_INFO_LEVEL1;
00492 
00493 typedef struct _NDR_USER_MARSHAL_INFO
00494 {
00495     ULONG InformationLevel;
00496     union
00497     {
00498         NDR_USER_MARSHAL_INFO_LEVEL1 Level1;
00499     } DUMMYUNIONNAME1;
00500 } NDR_USER_MARSHAL_INFO;
00501 
00502 /* Context Handles */
00503 
00504 RPCRTAPI RPC_BINDING_HANDLE RPC_ENTRY
00505   NDRCContextBinding( NDR_CCONTEXT CContext );
00506 
00507 RPCRTAPI void RPC_ENTRY
00508   NDRCContextMarshall( NDR_CCONTEXT CContext, void *pBuff );
00509 
00510 RPCRTAPI void RPC_ENTRY
00511   NDRCContextUnmarshall( NDR_CCONTEXT *pCContext, RPC_BINDING_HANDLE hBinding,
00512                          void *pBuff, ULONG DataRepresentation );
00513 
00514 RPCRTAPI void RPC_ENTRY
00515   NDRSContextMarshall( NDR_SCONTEXT CContext, void *pBuff, NDR_RUNDOWN userRunDownIn );
00516 
00517 RPCRTAPI NDR_SCONTEXT RPC_ENTRY
00518   NDRSContextUnmarshall( void *pBuff, ULONG DataRepresentation );
00519 
00520 RPCRTAPI void RPC_ENTRY
00521   NDRSContextMarshallEx( RPC_BINDING_HANDLE BindingHandle, NDR_SCONTEXT CContext,
00522                          void *pBuff, NDR_RUNDOWN userRunDownIn );
00523 
00524 RPCRTAPI void RPC_ENTRY
00525   NDRSContextMarshall2( RPC_BINDING_HANDLE BindingHandle, NDR_SCONTEXT CContext,
00526                         void *pBuff, NDR_RUNDOWN userRunDownIn, void * CtxGuard,
00527                         ULONG Flags );
00528 
00529 RPCRTAPI NDR_SCONTEXT RPC_ENTRY
00530   NDRSContextUnmarshallEx( RPC_BINDING_HANDLE BindingHandle, void *pBuff,
00531                            ULONG DataRepresentation );
00532 
00533 RPCRTAPI NDR_SCONTEXT RPC_ENTRY
00534   NDRSContextUnmarshall2( RPC_BINDING_HANDLE BindingHandle, void *pBuff,
00535                           ULONG DataRepresentation, void *CtxGuard,
00536                           ULONG Flags );
00537 
00538 RPCRTAPI void RPC_ENTRY
00539   NdrClientContextMarshall ( PMIDL_STUB_MESSAGE pStubMsg, NDR_CCONTEXT ContextHandle, int fCheck );
00540 
00541 RPCRTAPI void RPC_ENTRY
00542   NdrClientContextUnmarshall( PMIDL_STUB_MESSAGE pStubMsg, NDR_CCONTEXT* pContextHandle,
00543                               RPC_BINDING_HANDLE BindHandle );
00544 
00545 RPCRTAPI void RPC_ENTRY
00546   NdrServerContextMarshall ( PMIDL_STUB_MESSAGE pStubMsg, NDR_SCONTEXT ContextHandle, NDR_RUNDOWN RundownRoutine );
00547 
00548 RPCRTAPI NDR_SCONTEXT RPC_ENTRY
00549   NdrServerContextUnmarshall( PMIDL_STUB_MESSAGE pStubMsg );
00550 
00551 RPCRTAPI void RPC_ENTRY
00552   NdrContextHandleSize( PMIDL_STUB_MESSAGE pStubMsg, unsigned char* pMemory, PFORMAT_STRING pFormat );
00553 
00554 RPCRTAPI NDR_SCONTEXT RPC_ENTRY
00555   NdrContextHandleInitialize( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat );
00556 
00557 RPCRTAPI void RPC_ENTRY
00558   NdrServerContextNewMarshall( PMIDL_STUB_MESSAGE pStubMsg, NDR_SCONTEXT ContextHandle,
00559                                NDR_RUNDOWN RundownRoutine, PFORMAT_STRING pFormat );
00560 
00561 RPCRTAPI NDR_SCONTEXT RPC_ENTRY
00562   NdrServerContextNewUnmarshall( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat );
00563 
00564 RPCRTAPI RPC_STATUS RPC_ENTRY
00565   RpcSmDestroyClientContext( void **ContextHandle );
00566 
00567 RPCRTAPI void RPC_ENTRY
00568   RpcSsDestroyClientContext( void **ContextHandle );
00569 
00570 RPCRTAPI void RPC_ENTRY
00571   NdrSimpleTypeMarshall( PMIDL_STUB_MESSAGE pStubMsg, unsigned char* pMemory, unsigned char FormatChar );
00572 RPCRTAPI void RPC_ENTRY
00573   NdrSimpleTypeUnmarshall( PMIDL_STUB_MESSAGE pStubMsg, unsigned char* pMemory, unsigned char FormatChar );
00574 
00575 RPCRTAPI unsigned char* RPC_ENTRY
00576   NdrByteCountPointerMarshall( PMIDL_STUB_MESSAGE pStubMsg, unsigned char* pMemory, PFORMAT_STRING pFormat );
00577 RPCRTAPI unsigned char* RPC_ENTRY
00578   NdrByteCountPointerUnmarshall( PMIDL_STUB_MESSAGE pStubMsg, unsigned char** ppMemory, PFORMAT_STRING pFormat, unsigned char fMustAlloc );
00579 RPCRTAPI void RPC_ENTRY
00580   NdrByteCountPointerBufferSize( PMIDL_STUB_MESSAGE pStubMsg, unsigned char* pMemory, PFORMAT_STRING pFormat );
00581 RPCRTAPI void RPC_ENTRY
00582   NdrByteCountPointerFree( PMIDL_STUB_MESSAGE pStubMsg, unsigned char* pMemory, PFORMAT_STRING pFormat );
00583 
00584 RPCRTAPI unsigned char* RPC_ENTRY
00585   NdrRangeUnmarshall( PMIDL_STUB_MESSAGE pStubMsg, unsigned char** ppMemory, PFORMAT_STRING pFormat, unsigned char fMustAlloc );
00586 
00587 /* while MS declares each prototype separately, I prefer to use macros for this kind of thing instead */
00588 #define SIMPLE_TYPE_MARSHAL(type) \
00589 RPCRTAPI unsigned char* RPC_ENTRY \
00590   Ndr##type##Marshall( PMIDL_STUB_MESSAGE pStubMsg, unsigned char* pMemory, PFORMAT_STRING pFormat ); \
00591 RPCRTAPI unsigned char* RPC_ENTRY \
00592   Ndr##type##Unmarshall( PMIDL_STUB_MESSAGE pStubMsg, unsigned char** ppMemory, PFORMAT_STRING pFormat, unsigned char fMustAlloc ); \
00593 RPCRTAPI void RPC_ENTRY \
00594   Ndr##type##BufferSize( PMIDL_STUB_MESSAGE pStubMsg, unsigned char* pMemory, PFORMAT_STRING pFormat ); \
00595 RPCRTAPI ULONG RPC_ENTRY \
00596   Ndr##type##MemorySize( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat );
00597 
00598 #define TYPE_MARSHAL(type) \
00599   SIMPLE_TYPE_MARSHAL(type) \
00600 RPCRTAPI void RPC_ENTRY \
00601   Ndr##type##Free( PMIDL_STUB_MESSAGE pStubMsg, unsigned char* pMemory, PFORMAT_STRING pFormat );
00602 
00603 TYPE_MARSHAL(Pointer)
00604 TYPE_MARSHAL(SimpleStruct)
00605 TYPE_MARSHAL(ConformantStruct)
00606 TYPE_MARSHAL(ConformantVaryingStruct)
00607 TYPE_MARSHAL(ComplexStruct)
00608 TYPE_MARSHAL(FixedArray)
00609 TYPE_MARSHAL(ConformantArray)
00610 TYPE_MARSHAL(ConformantVaryingArray)
00611 TYPE_MARSHAL(VaryingArray)
00612 TYPE_MARSHAL(ComplexArray)
00613 TYPE_MARSHAL(EncapsulatedUnion)
00614 TYPE_MARSHAL(NonEncapsulatedUnion)
00615 TYPE_MARSHAL(XmitOrRepAs)
00616 TYPE_MARSHAL(UserMarshal)
00617 TYPE_MARSHAL(InterfacePointer)
00618 
00619 SIMPLE_TYPE_MARSHAL(ConformantString)
00620 SIMPLE_TYPE_MARSHAL(NonConformantString)
00621 
00622 #undef TYPE_MARSHAL
00623 #undef SIMPLE_TYPE_MARSHAL
00624 
00625 RPCRTAPI void RPC_ENTRY
00626   NdrCorrelationInitialize( PMIDL_STUB_MESSAGE pStubMsg, void *pMemory, ULONG CacheSize, ULONG flags );
00627 RPCRTAPI void RPC_ENTRY
00628   NdrCorrelationPass( PMIDL_STUB_MESSAGE pStubMsg );
00629 RPCRTAPI void RPC_ENTRY
00630   NdrCorrelationFree( PMIDL_STUB_MESSAGE pStubMsg );
00631 
00632 RPCRTAPI void RPC_ENTRY
00633   NdrConvert2( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat, LONG NumberParams );
00634 RPCRTAPI void RPC_ENTRY
00635   NdrConvert( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat );
00636 
00637 #define USER_MARSHAL_FC_BYTE    1
00638 #define USER_MARSHAL_FC_CHAR    2
00639 #define USER_MARSHAL_FC_SMALL   3
00640 #define USER_MARSHAL_FC_USMALL  4
00641 #define USER_MARSHAL_FC_WCHAR   5
00642 #define USER_MARSHAL_FC_SHORT   6
00643 #define USER_MARSHAL_FC_USHORT  7
00644 #define USER_MARSHAL_FC_LONG    8
00645 #define USER_MARSHAL_FC_ULONG   9
00646 #define USER_MARSHAL_FC_FLOAT   10
00647 #define USER_MARSHAL_FC_HYPER   11
00648 #define USER_MARSHAL_FC_DOUBLE  12
00649 
00650 RPCRTAPI unsigned char* RPC_ENTRY
00651   NdrUserMarshalSimpleTypeConvert( ULONG *pFlags, unsigned char *pBuffer, unsigned char FormatChar );
00652 
00653 CLIENT_CALL_RETURN RPC_VAR_ENTRY
00654   NdrClientCall2( PMIDL_STUB_DESC pStubDescriptor, PFORMAT_STRING pFormat, ... );
00655 CLIENT_CALL_RETURN RPC_VAR_ENTRY
00656   NdrClientCall( PMIDL_STUB_DESC pStubDescriptor, PFORMAT_STRING pFormat, ... );
00657 CLIENT_CALL_RETURN RPC_VAR_ENTRY
00658   NdrAsyncClientCall( PMIDL_STUB_DESC pStubDescriptor, PFORMAT_STRING pFormat, ... );
00659 CLIENT_CALL_RETURN RPC_VAR_ENTRY
00660   NdrDcomAsyncClientCall( PMIDL_STUB_DESC pStubDescriptor, PFORMAT_STRING pFormat, ... );
00661 
00662 RPCRTAPI void RPC_ENTRY
00663   NdrServerCall2( PRPC_MESSAGE pRpcMsg );
00664 RPCRTAPI void RPC_ENTRY
00665   NdrServerCall( PRPC_MESSAGE pRpcMsg );
00666 RPCRTAPI void RPC_ENTRY
00667   NdrAsyncServerCall( PRPC_MESSAGE pRpcMsg );
00668 
00669 RPCRTAPI LONG RPC_ENTRY
00670   NdrStubCall2( struct IRpcStubBuffer* pThis, struct IRpcChannelBuffer* pChannel, PRPC_MESSAGE pRpcMsg, DWORD * pdwStubPhase );
00671 RPCRTAPI LONG RPC_ENTRY
00672   NdrStubCall( struct IRpcStubBuffer* pThis, struct IRpcChannelBuffer* pChannel, PRPC_MESSAGE pRpcMsg, DWORD * pdwStubPhase );
00673 RPCRTAPI LONG RPC_ENTRY
00674   NdrAsyncStubCall( struct IRpcStubBuffer* pThis, struct IRpcChannelBuffer* pChannel, PRPC_MESSAGE pRpcMsg, DWORD * pdwStubPhase );
00675 RPCRTAPI LONG RPC_ENTRY
00676   NdrDcomAsyncStubCall( struct IRpcStubBuffer* pThis, struct IRpcChannelBuffer* pChannel, PRPC_MESSAGE pRpcMsg, DWORD * pdwStubPhase );
00677 
00678 RPCRTAPI void* RPC_ENTRY
00679   NdrAllocate( PMIDL_STUB_MESSAGE pStubMsg, SIZE_T Len ) __WINE_ALLOC_SIZE(2);
00680 
00681 RPCRTAPI void RPC_ENTRY
00682   NdrClearOutParameters( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat, void *ArgAddr );
00683 
00684 RPCRTAPI RPC_STATUS RPC_ENTRY
00685   NdrMapCommAndFaultStatus( PMIDL_STUB_MESSAGE pStubMsg, ULONG *pCommStatus,
00686                             ULONG *pFaultStatus, RPC_STATUS Status_ );
00687 
00688 RPCRTAPI void* RPC_ENTRY
00689   NdrOleAllocate( SIZE_T Size ) __WINE_ALLOC_SIZE(1);
00690 RPCRTAPI void RPC_ENTRY
00691   NdrOleFree( void* NodeToFree );
00692 
00693 RPCRTAPI void RPC_ENTRY
00694   NdrClientInitialize( PRPC_MESSAGE pRpcMessage, PMIDL_STUB_MESSAGE pStubMsg,
00695                        PMIDL_STUB_DESC pStubDesc, unsigned int ProcNum );
00696 RPCRTAPI void RPC_ENTRY
00697   NdrClientInitializeNew( PRPC_MESSAGE pRpcMessage, PMIDL_STUB_MESSAGE pStubMsg,
00698                           PMIDL_STUB_DESC pStubDesc, unsigned int ProcNum );
00699 RPCRTAPI unsigned char* RPC_ENTRY
00700   NdrServerInitialize( PRPC_MESSAGE pRpcMsg, PMIDL_STUB_MESSAGE pStubMsg, PMIDL_STUB_DESC pStubDesc );
00701 RPCRTAPI unsigned char* RPC_ENTRY
00702   NdrServerInitializeNew( PRPC_MESSAGE pRpcMsg, PMIDL_STUB_MESSAGE pStubMsg, PMIDL_STUB_DESC pStubDesc );
00703 RPCRTAPI unsigned char* RPC_ENTRY
00704   NdrServerInitializeUnmarshall( PMIDL_STUB_MESSAGE pStubMsg, PMIDL_STUB_DESC pStubDesc, PRPC_MESSAGE pRpcMsg );
00705 RPCRTAPI void RPC_ENTRY
00706   NdrServerInitializeMarshall( PRPC_MESSAGE pRpcMsg, PMIDL_STUB_MESSAGE pStubMsg  );
00707 RPCRTAPI void RPC_ENTRY
00708   NdrServerMarshall( struct IRpcStubBuffer *pThis, struct IRpcChannelBuffer *pChannel, PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat );
00709 RPCRTAPI void RPC_ENTRY
00710   NdrServerUnmarshall( struct IRpcChannelBuffer *pChannel, PRPC_MESSAGE pRpcMsg,
00711                        PMIDL_STUB_MESSAGE pStubMsg, PMIDL_STUB_DESC pStubDesc,
00712                        PFORMAT_STRING pFormat, void *pParamList );
00713 RPCRTAPI unsigned char* RPC_ENTRY
00714   NdrGetBuffer( PMIDL_STUB_MESSAGE stubmsg, ULONG buflen, RPC_BINDING_HANDLE handle );
00715 RPCRTAPI void RPC_ENTRY
00716   NdrFreeBuffer( PMIDL_STUB_MESSAGE pStubMsg );
00717 RPCRTAPI unsigned char* RPC_ENTRY
00718   NdrSendReceive( PMIDL_STUB_MESSAGE stubmsg, unsigned char *buffer );
00719 
00720 RPCRTAPI unsigned char * RPC_ENTRY
00721   NdrNsGetBuffer( PMIDL_STUB_MESSAGE pStubMsg, ULONG BufferLength, RPC_BINDING_HANDLE Handle );
00722 RPCRTAPI unsigned char * RPC_ENTRY
00723   NdrNsSendReceive( PMIDL_STUB_MESSAGE pStubMsg, unsigned char *pBufferEnd, RPC_BINDING_HANDLE *pAutoHandle );
00724 
00725 RPCRTAPI RPC_STATUS RPC_ENTRY
00726   NdrGetDcomProtocolVersion( PMIDL_STUB_MESSAGE pStubMsg, RPC_VERSION *pVersion );
00727 
00728 RPCRTAPI PFULL_PTR_XLAT_TABLES RPC_ENTRY
00729   NdrFullPointerXlatInit( ULONG NumberOfPointers, XLAT_SIDE XlatSide );
00730 RPCRTAPI void RPC_ENTRY
00731   NdrFullPointerXlatFree( PFULL_PTR_XLAT_TABLES pXlatTables );
00732 RPCRTAPI int RPC_ENTRY
00733   NdrFullPointerQueryPointer( PFULL_PTR_XLAT_TABLES pXlatTables, void *pPointer,
00734                               unsigned char QueryType, ULONG *pRefId );
00735 RPCRTAPI int RPC_ENTRY
00736   NdrFullPointerQueryRefId( PFULL_PTR_XLAT_TABLES pXlatTables, ULONG RefId,
00737                             unsigned char QueryType, void **ppPointer );
00738 RPCRTAPI void RPC_ENTRY
00739   NdrFullPointerInsertRefId( PFULL_PTR_XLAT_TABLES pXlatTables, ULONG RefId, void *pPointer );
00740 RPCRTAPI int RPC_ENTRY
00741   NdrFullPointerFree( PFULL_PTR_XLAT_TABLES pXlatTables, void *Pointer );
00742 
00743 RPCRTAPI void RPC_ENTRY
00744   NdrRpcSsEnableAllocate( PMIDL_STUB_MESSAGE pMessage );
00745 RPCRTAPI void RPC_ENTRY
00746   NdrRpcSsDisableAllocate( PMIDL_STUB_MESSAGE pMessage );
00747 RPCRTAPI void RPC_ENTRY
00748   NdrRpcSmSetClientToOsf( PMIDL_STUB_MESSAGE pMessage );
00749 RPCRTAPI void * RPC_ENTRY
00750   NdrRpcSmClientAllocate( SIZE_T Size ) __WINE_ALLOC_SIZE(1);
00751 RPCRTAPI void RPC_ENTRY
00752   NdrRpcSmClientFree( void *NodeToFree );
00753 RPCRTAPI void * RPC_ENTRY
00754   NdrRpcSsDefaultAllocate( SIZE_T Size ) __WINE_ALLOC_SIZE(1);
00755 RPCRTAPI void RPC_ENTRY
00756   NdrRpcSsDefaultFree( void *NodeToFree );
00757 
00758 RPCRTAPI RPC_STATUS RPC_ENTRY
00759   NdrGetUserMarshalInfo( ULONG *pFlags, ULONG InformationLevel, NDR_USER_MARSHAL_INFO *pMarshalInfo );
00760 
00761 #ifdef _MSC_VER
00762 #pragma warning(pop)
00763 #endif
00764 
00765 #ifdef __cplusplus
00766 }
00767 #endif
00768 #endif /*__WINE_RPCNDR_H */

Generated on Sun May 27 2012 04:32:16 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.