home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Internet 2000 May / MICD_2000_05.iso / CBuilder5 / INSTALL / DATA1.CAB / Program_Built_Files / Include / rpcndr.h < prev    next >
C/C++ Source or Header  |  2000-02-01  |  83KB  |  3,228 lines

  1. #pragma option push -b -a8 -pc -A- /*P_O_Push*/
  2.  
  3. /*++
  4.  
  5. Copyright (c) 1992-1999 Microsoft Corporation
  6.  
  7. Module Name:
  8.  
  9.     rpcndr.h
  10.  
  11. Abstract:
  12.  
  13.     Definitions for stub data structures and prototypes of helper functions.
  14.  
  15. --*/
  16.  
  17. // This version of the rpcndr.h file corresponds to MIDL version 5.0.+
  18. // used with NT5 beta1+ env from build #1700 on.
  19.  
  20.  
  21. #ifndef __RPCNDR_H_VERSION__
  22. #define __RPCNDR_H_VERSION__        ( 475 )
  23. #endif // __RPCNDR_H_VERSION__
  24.  
  25.  
  26. #ifndef __RPCNDR_H__
  27. #define __RPCNDR_H__
  28.  
  29. #if _MSC_VER > 1000
  30. #pragma once
  31. #endif
  32.  
  33. #ifdef __REQUIRED_RPCNDR_H_VERSION__
  34.     #if ( __RPCNDR_H_VERSION__ < __REQUIRED_RPCNDR_H_VERSION__ )
  35.         #error incorrect <rpcndr.h> version. Use the header that matches with the MIDL compiler.
  36.     #endif
  37. #endif
  38.  
  39.  
  40. //
  41. // Set the packing level for RPC structures for Dos, Windows and Mac.
  42. //
  43.  
  44. #if defined(__RPC_DOS__) || defined(__RPC_WIN16__) || defined(__RPC_MAC__)
  45. #pragma pack(2)
  46. #endif
  47.  
  48. #if defined(__RPC_MAC__)
  49. #define _MAC_
  50. #endif
  51.  
  52. #if defined(__RPC_WIN64__)
  53. #include <pshpack8.h>
  54. #endif
  55.  
  56. #include <basetsd.h>
  57. #include <rpcnsip.h>
  58.  
  59.  
  60. #ifdef __cplusplus
  61. extern "C" {
  62. #endif
  63.  
  64. /****************************************************************************
  65.  
  66.      Network Computing Architecture (NCA) definition:
  67.  
  68.      Network Data Representation: (NDR) Label format:
  69.      An unsigned long (32 bits) with the following layout:
  70.  
  71.      3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
  72.      1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
  73.     +---------------+---------------+---------------+-------+-------+
  74.     |   Reserved    |   Reserved    |Floating point | Int   | Char  |
  75.     |               |               |Representation | Rep.  | Rep.  |
  76.     +---------------+---------------+---------------+-------+-------+
  77.  
  78.      Where
  79.  
  80.          Reserved:
  81.  
  82.              Must be zero (0) for NCA 1.5 and NCA 2.0.
  83.  
  84.          Floating point Representation is:
  85.  
  86.              0 - IEEE
  87.              1 - VAX
  88.              2 - Cray
  89.              3 - IBM
  90.  
  91.          Int Rep. is Integer Representation:
  92.  
  93.              0 - Big Endian
  94.              1 - Little Endian
  95.  
  96.          Char Rep. is Character Representation:
  97.  
  98.              0 - ASCII
  99.              1 - EBCDIC
  100.  
  101.      The Microsoft Local Data Representation (for all platforms which are
  102.      of interest currently is edefined below:
  103.  
  104.  ****************************************************************************/
  105.  
  106. #define NDR_CHAR_REP_MASK               (unsigned long)0X0000000FL
  107. #define NDR_INT_REP_MASK                (unsigned long)0X000000F0L
  108. #define NDR_FLOAT_REP_MASK              (unsigned long)0X0000FF00L
  109.  
  110. #define NDR_LITTLE_ENDIAN               (unsigned long)0X00000010L
  111. #define NDR_BIG_ENDIAN                  (unsigned long)0X00000000L
  112.  
  113. #define NDR_IEEE_FLOAT                  (unsigned long)0X00000000L
  114. #define NDR_VAX_FLOAT                   (unsigned long)0X00000100L
  115. #define NDR_IBM_FLOAT                   (unsigned long)0X00000300L
  116.  
  117. #define NDR_ASCII_CHAR                  (unsigned long)0X00000000L
  118. #define NDR_EBCDIC_CHAR                 (unsigned long)0X00000001L
  119.  
  120. #if defined(__RPC_MAC__)
  121. #define NDR_LOCAL_DATA_REPRESENTATION   (unsigned long)0X00000000L
  122. #define NDR_LOCAL_ENDIAN                NDR_BIG_ENDIAN
  123. #else
  124. #define NDR_LOCAL_DATA_REPRESENTATION   (unsigned long)0X00000010L
  125. #define NDR_LOCAL_ENDIAN                NDR_LITTLE_ENDIAN
  126. #endif
  127.  
  128.  
  129. /****************************************************************************
  130.  *  Macros for targeted platforms
  131.  ****************************************************************************/
  132.  
  133. #if (0x500 <= _WIN32_WINNT)
  134. #define TARGET_IS_NT50_OR_LATER                   1
  135. #else
  136. #define TARGET_IS_NT50_OR_LATER                   0
  137. #endif
  138.  
  139. #if (defined(_WIN32_DCOM) || 0x400 <= _WIN32_WINNT)
  140. #define TARGET_IS_NT40_OR_LATER                   1
  141. #else
  142. #define TARGET_IS_NT40_OR_LATER                   0
  143. #endif
  144.  
  145. #if (0x400 <= WINVER)
  146. #define TARGET_IS_NT351_OR_WIN95_OR_LATER         1
  147. #else
  148. #define TARGET_IS_NT351_OR_WIN95_OR_LATER         0
  149. #endif
  150.  
  151. /****************************************************************************
  152.  *  Other MIDL base types / predefined types:
  153.  ****************************************************************************/
  154. #if defined(__BORLANDC__) /* 'small' is a poor choice for a name.  We better
  155.                               change it to something more legal. */
  156. #  define __small char
  157. #else
  158. #  define small char
  159. #endif /* __BORLANDC__ */
  160.  
  161. typedef unsigned char byte;
  162. typedef unsigned char boolean;
  163.  
  164. #ifndef _HYPER_DEFINED
  165. #define _HYPER_DEFINED
  166.  
  167. #if !defined(__RPC_DOS__) && !defined(__RPC_WIN16__) && !defined(__RPC_MAC__) && (!defined(_M_IX86) || (defined(_INTEGRAL_MAX_BITS) && _INTEGRAL_MAX_BITS >= 64))
  168. #define  hyper           __int64
  169. #define MIDL_uhyper  unsigned __int64
  170. #else
  171. typedef double  hyper;
  172. typedef double MIDL_uhyper;
  173. #endif
  174.  
  175. #endif // _HYPER_DEFINED
  176.  
  177. #ifndef _WCHAR_T_DEFINED
  178. typedef unsigned short wchar_t;
  179. #define _WCHAR_T_DEFINED
  180. #endif
  181.  
  182. #ifndef _SIZE_T_DEFINED
  183. #ifdef __RPC_WIN64__
  184. typedef unsigned __int64 size_t;
  185. #else
  186. typedef unsigned int     size_t;
  187. #endif
  188. #define _SIZE_T_DEFINED
  189. #endif
  190.  
  191. #ifdef __RPC_DOS__
  192. #define __RPC_CALLEE       __far __pascal
  193. #endif
  194.  
  195. #ifdef __RPC_WIN16__
  196. #define __RPC_CALLEE       __far __pascal __export
  197. #endif
  198.  
  199. #ifdef __RPC_WIN32__
  200. #if   (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED)
  201. #define __RPC_CALLEE       __stdcall
  202. #else
  203. #define __RPC_CALLEE
  204. #endif
  205. #endif
  206.  
  207. #ifdef __RPC_MAC__
  208. #define __RPC_CALLEE __far
  209. #endif
  210.  
  211. #ifndef __MIDL_USER_DEFINED
  212. #define midl_user_allocate MIDL_user_allocate
  213. #define midl_user_free     MIDL_user_free
  214. #define __MIDL_USER_DEFINED
  215. #endif
  216.  
  217. void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
  218. void             __RPC_USER MIDL_user_free( void __RPC_FAR * );
  219.  
  220. #ifdef __RPC_WIN16__
  221. #define RPC_VAR_ENTRY __export __cdecl
  222. #else
  223. #define RPC_VAR_ENTRY __cdecl
  224. #endif
  225.  
  226.  
  227. /* winnt only */
  228. #if defined(_M_IX86) || defined(_M_ALPHA) || defined(_M_IA64)
  229. #define __MIDL_DECLSPEC_DLLIMPORT   __declspec(dllimport)
  230. #define __MIDL_DECLSPEC_DLLEXPORT   __declspec(dllexport)
  231. #else
  232. #define __MIDL_DECLSPEC_DLLIMPORT
  233. #define __MIDL_DECLSPEC_DLLEXPORT
  234. #endif
  235.  
  236.  
  237.  
  238.  
  239. /****************************************************************************
  240.  * Context handle management related definitions:
  241.  *
  242.  * Client and Server Contexts.
  243.  *
  244.  ****************************************************************************/
  245.  
  246. typedef void __RPC_FAR * NDR_CCONTEXT;
  247.  
  248. typedef struct
  249.     {
  250.     void __RPC_FAR * pad[2];
  251.     void __RPC_FAR * userContext;
  252.     } __RPC_FAR * NDR_SCONTEXT;
  253.  
  254. #define NDRSContextValue(hContext) (&(hContext)->userContext)
  255.  
  256. #define cbNDRContext 20         /* size of context on WIRE */
  257.  
  258. typedef void (__RPC_USER __RPC_FAR * NDR_RUNDOWN)(void __RPC_FAR * context);
  259.  
  260. typedef void (__RPC_USER __RPC_FAR * NDR_NOTIFY_ROUTINE)(void);
  261. typedef void (__RPC_USER __RPC_FAR * NDR_NOTIFY2_ROUTINE)(boolean flag);
  262.  
  263. typedef struct _SCONTEXT_QUEUE {
  264.     unsigned long   NumberOfObjects;
  265.     NDR_SCONTEXT  * ArrayOfObjects;
  266.     } SCONTEXT_QUEUE, __RPC_FAR * PSCONTEXT_QUEUE;
  267.  
  268. RPCRTAPI
  269. RPC_BINDING_HANDLE
  270. RPC_ENTRY
  271. NDRCContextBinding (
  272.     IN NDR_CCONTEXT     CContext
  273.     );
  274.  
  275. RPCRTAPI
  276. void
  277. RPC_ENTRY
  278. NDRCContextMarshall (
  279.     IN  NDR_CCONTEXT    CContext,
  280.     OUT void __RPC_FAR *pBuff
  281.     );
  282.  
  283. RPCRTAPI
  284. void
  285. RPC_ENTRY
  286. NDRCContextUnmarshall (
  287.     OUT NDR_CCONTEXT __RPC_FAR *pCContext,
  288.     IN  RPC_BINDING_HANDLE      hBinding,
  289.     IN  void __RPC_FAR *        pBuff,
  290.     IN  unsigned long           DataRepresentation
  291.     );
  292.  
  293. RPCRTAPI
  294. void
  295. RPC_ENTRY
  296. NDRSContextMarshall (
  297.     IN  NDR_SCONTEXT    CContext,
  298.     OUT void __RPC_FAR *pBuff,
  299.     IN  NDR_RUNDOWN     userRunDownIn
  300.     );
  301.  
  302. RPCRTAPI
  303. NDR_SCONTEXT
  304. RPC_ENTRY
  305. NDRSContextUnmarshall (
  306.     IN  void __RPC_FAR *pBuff,
  307.     IN  unsigned long   DataRepresentation
  308.     );
  309.  
  310. RPCRTAPI
  311. void
  312. RPC_ENTRY
  313. NDRSContextMarshallEx (
  314.     IN  RPC_BINDING_HANDLE  BindingHandle,
  315.     IN  NDR_SCONTEXT        CContext,
  316.     OUT void __RPC_FAR     *pBuff,
  317.     IN  NDR_RUNDOWN         userRunDownIn
  318.     );
  319.  
  320. RPCRTAPI
  321. void
  322. RPC_ENTRY
  323. NDRSContextMarshall2 (
  324.     IN  RPC_BINDING_HANDLE  BindingHandle,
  325.     IN  NDR_SCONTEXT        CContext,
  326.     OUT void __RPC_FAR     *pBuff,
  327.     IN  NDR_RUNDOWN         userRunDownIn,
  328.     IN  void __RPC_FAR     *CtxGuard,
  329.     IN unsigned long Flags
  330.     );
  331.  
  332. RPCRTAPI
  333. NDR_SCONTEXT
  334. RPC_ENTRY
  335. NDRSContextUnmarshallEx (
  336.     IN  RPC_BINDING_HANDLE  BindingHandle,
  337.     IN  void __RPC_FAR     *pBuff,
  338.     IN  unsigned long       DataRepresentation
  339.     );
  340.  
  341. RPCRTAPI
  342. NDR_SCONTEXT
  343. RPC_ENTRY
  344. NDRSContextUnmarshall2(
  345.     IN  RPC_BINDING_HANDLE  BindingHandle,
  346.     IN  void __RPC_FAR     *pBuff,
  347.     IN  unsigned long       DataRepresentation,
  348.     IN  void __RPC_FAR     *CtxGuard,
  349.     IN unsigned long Flags
  350.     );
  351.  
  352. RPCRTAPI
  353. void
  354. RPC_ENTRY
  355. RpcSsDestroyClientContext (
  356.     IN void __RPC_FAR * __RPC_FAR * ContextHandle
  357.     );
  358.  
  359.  
  360. /****************************************************************************
  361.     NDR conversion related definitions.
  362.  ****************************************************************************/
  363.  
  364. #define byte_from_ndr(source, target) \
  365.     { \
  366.     *(target) = *(*(char __RPC_FAR * __RPC_FAR *)&(source)->Buffer)++; \
  367.     }
  368.  
  369. #define byte_array_from_ndr(Source, LowerIndex, UpperIndex, Target) \
  370.     { \
  371.     NDRcopy ( \
  372.         (((char __RPC_FAR *)(Target))+(LowerIndex)), \
  373.         (Source)->Buffer, \
  374.         (unsigned int)((UpperIndex)-(LowerIndex))); \
  375.     *(unsigned long __RPC_FAR *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); \
  376.     }
  377.  
  378. #define boolean_from_ndr(source, target) \
  379.     { \
  380.     *(target) = *(*(char __RPC_FAR * __RPC_FAR *)&(source)->Buffer)++; \
  381.     }
  382.  
  383. #define boolean_array_from_ndr(Source, LowerIndex, UpperIndex, Target) \
  384.     { \
  385.     NDRcopy ( \
  386.         (((char __RPC_FAR *)(Target))+(LowerIndex)), \
  387.         (Source)->Buffer, \
  388.         (unsigned int)((UpperIndex)-(LowerIndex))); \
  389.     *(unsigned long __RPC_FAR *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); \
  390.     }
  391.  
  392. #define small_from_ndr(source, target) \
  393.     { \
  394.     *(target) = *(*(char __RPC_FAR * __RPC_FAR *)&(source)->Buffer)++; \
  395.     }
  396.  
  397. #define small_from_ndr_temp(source, target, format) \
  398.     { \
  399.     *(target) = *(*(char __RPC_FAR * __RPC_FAR *)(source))++; \
  400.     }
  401.  
  402. #define small_array_from_ndr(Source, LowerIndex, UpperIndex, Target) \
  403.     { \
  404.     NDRcopy ( \
  405.         (((char __RPC_FAR *)(Target))+(LowerIndex)), \
  406.         (Source)->Buffer, \
  407.         (unsigned int)((UpperIndex)-(LowerIndex))); \
  408.     *(unsigned long __RPC_FAR *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); \
  409.     }
  410.  
  411. /****************************************************************************
  412.     Platform specific mapping of c-runtime functions.
  413.  ****************************************************************************/
  414.  
  415. #ifdef __RPC_DOS__
  416. #define MIDL_ascii_strlen(string) \
  417.     _fstrlen(string)
  418. #define MIDL_ascii_strcpy(target,source) \
  419.     _fstrcpy(target,source)
  420. #define MIDL_memset(s,c,n) \
  421.     _fmemset(s,c,n)
  422. #endif
  423.  
  424. #ifdef __RPC_WIN16__
  425. #define MIDL_ascii_strlen(string) \
  426.     _fstrlen(string)
  427. #define MIDL_ascii_strcpy(target,source) \
  428.     _fstrcpy(target,source)
  429. #define MIDL_memset(s,c,n) \
  430.     _fmemset(s,c,n)
  431. #endif
  432.  
  433. #if defined(__RPC_WIN32__) || defined(__RPC_MAC__) || defined(__RPC_WIN64__)
  434. #define MIDL_ascii_strlen(string) \
  435.     strlen(string)
  436. #define MIDL_ascii_strcpy(target,source) \
  437.     strcpy(target,source)
  438. #define MIDL_memset(s,c,n) \
  439.     memset(s,c,n)
  440. #endif
  441.  
  442. /****************************************************************************
  443.     Ndr Library helper function prototypes for MIDL 1.0 ndr functions.
  444.  ****************************************************************************/
  445.  
  446. RPCRTAPI
  447. void
  448. RPC_ENTRY
  449. NDRcopy (
  450.     IN void __RPC_FAR *pTarget,
  451.     IN void __RPC_FAR *pSource,
  452.     IN unsigned int size
  453.     );
  454.  
  455. RPCRTAPI
  456. size_t
  457. RPC_ENTRY
  458. MIDL_wchar_strlen (
  459.     IN wchar_t __RPC_FAR *   s
  460.     );
  461.  
  462. RPCRTAPI
  463. void
  464. RPC_ENTRY
  465. MIDL_wchar_strcpy (
  466.     OUT void __RPC_FAR *     t,
  467.     IN wchar_t __RPC_FAR *   s
  468.     );
  469.  
  470. RPCRTAPI
  471. void
  472. RPC_ENTRY
  473. char_from_ndr (
  474.     IN OUT PRPC_MESSAGE                           SourceMessage,
  475.     OUT unsigned char __RPC_FAR *                 Target
  476.     );
  477.  
  478. RPCRTAPI
  479. void
  480. RPC_ENTRY
  481. char_array_from_ndr (
  482.     IN OUT PRPC_MESSAGE                           SourceMessage,
  483.     IN unsigned long                              LowerIndex,
  484.     IN unsigned long                              UpperIndex,
  485.     OUT unsigned char __RPC_FAR *                 Target
  486.     );
  487.  
  488. RPCRTAPI
  489. void
  490. RPC_ENTRY
  491. short_from_ndr (
  492.     IN OUT PRPC_MESSAGE                           source,
  493.     OUT unsigned short __RPC_FAR *                target
  494.     );
  495.  
  496. RPCRTAPI
  497. void
  498. RPC_ENTRY
  499. short_array_from_ndr(
  500.     IN OUT PRPC_MESSAGE                           SourceMessage,
  501.     IN unsigned long                              LowerIndex,
  502.     IN unsigned long                              UpperIndex,
  503.     OUT unsigned short __RPC_FAR *                Target
  504.     );
  505.  
  506. RPCRTAPI
  507. void
  508. RPC_ENTRY
  509. short_from_ndr_temp (
  510.     IN OUT unsigned char __RPC_FAR * __RPC_FAR *  source,
  511.     OUT unsigned short __RPC_FAR *                target,
  512.     IN unsigned long                              format
  513.     );
  514.  
  515. RPCRTAPI
  516. void
  517. RPC_ENTRY
  518. long_from_ndr (
  519.     IN OUT PRPC_MESSAGE                           source,
  520.     OUT unsigned long __RPC_FAR *                 target
  521.     );
  522.  
  523. RPCRTAPI
  524. void
  525. RPC_ENTRY
  526. long_array_from_ndr(
  527.     IN OUT PRPC_MESSAGE                           SourceMessage,
  528.     IN unsigned long                              LowerIndex,
  529.     IN unsigned long                              UpperIndex,
  530.     OUT unsigned long __RPC_FAR *                 Target
  531.     );
  532.  
  533. RPCRTAPI
  534. void
  535. RPC_ENTRY
  536. long_from_ndr_temp (
  537.     IN OUT unsigned char __RPC_FAR * __RPC_FAR *  source,
  538.     OUT unsigned long __RPC_FAR *                 target,
  539.     IN unsigned long                              format
  540.     );
  541.  
  542. RPCRTAPI
  543. void
  544. RPC_ENTRY
  545. enum_from_ndr(
  546.     IN OUT PRPC_MESSAGE                           SourceMessage,
  547.     OUT unsigned int __RPC_FAR *                  Target
  548.     );
  549.  
  550. RPCRTAPI
  551. void
  552. RPC_ENTRY
  553. float_from_ndr (
  554.     IN OUT PRPC_MESSAGE                           SourceMessage,
  555.     OUT void __RPC_FAR *                          Target
  556.     );
  557.  
  558. RPCRTAPI
  559. void
  560. RPC_ENTRY
  561. float_array_from_ndr (
  562.     IN OUT PRPC_MESSAGE                           SourceMessage,
  563.     IN unsigned long                              LowerIndex,
  564.     IN unsigned long                              UpperIndex,
  565.     OUT void __RPC_FAR *                          Target
  566.     );
  567.  
  568. RPCRTAPI
  569. void
  570. RPC_ENTRY
  571. double_from_ndr (
  572.     IN OUT PRPC_MESSAGE                           SourceMessage,
  573.     OUT void __RPC_FAR *                          Target
  574.     );
  575.  
  576. RPCRTAPI
  577. void
  578. RPC_ENTRY
  579. double_array_from_ndr (
  580.     IN OUT PRPC_MESSAGE                           SourceMessage,
  581.     IN unsigned long                              LowerIndex,
  582.     IN unsigned long                              UpperIndex,
  583.     OUT void __RPC_FAR *                          Target
  584.     );
  585.  
  586. RPCRTAPI
  587. void
  588. RPC_ENTRY
  589. hyper_from_ndr (
  590.     IN OUT PRPC_MESSAGE                           source,
  591.     OUT    hyper __RPC_FAR *                      target
  592.     );
  593.  
  594. RPCRTAPI
  595. void
  596. RPC_ENTRY
  597. hyper_array_from_ndr(
  598.     IN OUT PRPC_MESSAGE                           SourceMessage,
  599.     IN unsigned long                              LowerIndex,
  600.     IN unsigned long                              UpperIndex,
  601.     OUT          hyper __RPC_FAR *                Target
  602.     );
  603.  
  604. RPCRTAPI
  605. void
  606. RPC_ENTRY
  607. hyper_from_ndr_temp (
  608.     IN OUT unsigned char __RPC_FAR * __RPC_FAR *  source,
  609.     OUT             hyper __RPC_FAR *             target,
  610.     IN   unsigned   long                          format
  611.     );
  612.  
  613. RPCRTAPI
  614. void
  615. RPC_ENTRY
  616. data_from_ndr (
  617.     PRPC_MESSAGE                                  source,
  618.     void __RPC_FAR *                              target,
  619.     char __RPC_FAR *                              format,
  620.     unsigned char                                 MscPak
  621.     );
  622.  
  623. RPCRTAPI
  624. void
  625. RPC_ENTRY
  626. data_into_ndr (
  627.     void __RPC_FAR *                              source,
  628.     PRPC_MESSAGE                                  target,
  629.     char __RPC_FAR *                              format,
  630.     unsigned char                                 MscPak
  631.     );
  632.  
  633. RPCRTAPI
  634. void
  635. RPC_ENTRY
  636. tree_into_ndr (
  637.     void __RPC_FAR *                              source,
  638.     PRPC_MESSAGE                                  target,
  639.     char __RPC_FAR *                              format,
  640.     unsigned char                                 MscPak
  641.     );
  642.  
  643. RPCRTAPI
  644. void
  645. RPC_ENTRY
  646. data_size_ndr (
  647.     void __RPC_FAR *                              source,
  648.     PRPC_MESSAGE                                  target,
  649.     char __RPC_FAR *                              format,
  650.     unsigned char                                 MscPak
  651.     );
  652.  
  653. RPCRTAPI
  654. void
  655. RPC_ENTRY
  656. tree_size_ndr (
  657.     void __RPC_FAR *                              source,
  658.     PRPC_MESSAGE                                  target,
  659.     char __RPC_FAR *                              format,
  660.     unsigned char                                 MscPak
  661.     );
  662.  
  663. RPCRTAPI
  664. void
  665. RPC_ENTRY
  666. tree_peek_ndr (
  667.     PRPC_MESSAGE                                  source,
  668.     unsigned char __RPC_FAR * __RPC_FAR *         buffer,
  669.     char __RPC_FAR *                              format,
  670.     unsigned char                                 MscPak
  671.     );
  672.  
  673. RPCRTAPI
  674. void __RPC_FAR *
  675. RPC_ENTRY
  676. midl_allocate (
  677.     size_t      size
  678.     );
  679.  
  680. /****************************************************************************
  681.     MIDL 2.0 ndr definitions.
  682.  ****************************************************************************/
  683.  
  684. typedef unsigned long error_status_t;
  685.  
  686. #define _midl_ma1( p, cast )    *(*( cast **)&p)++
  687. #define _midl_ma2( p, cast )    *(*( cast **)&p)++
  688. #define _midl_ma4( p, cast )    *(*( cast **)&p)++
  689. #define _midl_ma8( p, cast )    *(*( cast **)&p)++
  690.  
  691. #define _midl_unma1( p, cast )  *(( cast *)p)++
  692. #define _midl_unma2( p, cast )  *(( cast *)p)++
  693. #define _midl_unma3( p, cast )  *(( cast *)p)++
  694. #define _midl_unma4( p, cast )  *(( cast *)p)++
  695.  
  696. // Some alignment specific macros.
  697.  
  698. #define _midl_fa2( p )          (p = (RPC_BUFPTR )((ULONG_PTR)(p+1) & ~0x1))
  699. #define _midl_fa4( p )          (p = (RPC_BUFPTR )((ULONG_PTR)(p+3) & ~0x3))
  700. #define _midl_fa8( p )          (p = (RPC_BUFPTR )((ULONG_PTR)(p+7) & ~0x7))
  701.  
  702. #define _midl_addp( p, n )      (p += n)
  703.  
  704. // Marshalling macros
  705.  
  706. #define _midl_marsh_lhs( p, cast )  *(*( cast **)&p)++
  707. #define _midl_marsh_up( mp, p )     *(*(unsigned long **)&mp)++ = (unsigned long)p
  708. #define _midl_advmp( mp )           *(*(unsigned long **)&mp)++
  709. #define _midl_unmarsh_up( p )       (*(*(unsigned long **)&p)++)
  710.  
  711.  
  712. ////////////////////////////////////////////////////////////////////////////
  713. // Ndr macros.
  714. ////////////////////////////////////////////////////////////////////////////
  715.  
  716. #define NdrMarshConfStringHdr( p, s, l )    (_midl_ma4( p, unsigned long) = s, \
  717.                                             _midl_ma4( p, unsigned long) = 0, \
  718.                                             _midl_ma4( p, unsigned long) = l)
  719.  
  720. #define NdrUnMarshConfStringHdr(p, s, l)    ((s=_midl_unma4(p,unsigned long),\
  721.                                             (_midl_addp(p,4)),               \
  722.                                             (l=_midl_unma4(p,unsigned long))
  723.  
  724. #define NdrMarshCCtxtHdl(pc,p)  (NDRCContextMarshall( (NDR_CCONTEXT)pc, p ),p+20)
  725.  
  726. #define NdrUnMarshCCtxtHdl(pc,p,h,drep) \
  727.         (NDRCContextUnmarshall((NDR_CONTEXT)pc,h,p,drep), p+20)
  728.  
  729. #define NdrUnMarshSCtxtHdl(pc, p,drep)  (pc = NdrSContextUnMarshall(p,drep ))
  730.  
  731.  
  732. #define NdrMarshSCtxtHdl(pc,p,rd)   (NdrSContextMarshall((NDR_SCONTEXT)pc,p, (NDR_RUNDOWN)rd)
  733.  
  734.  
  735. #define NdrFieldOffset(s,f)     (LONG_PTR)(& (((s __RPC_FAR *)0)->f))
  736. #define NdrFieldPad(s,f,p,t)    ((unsigned long)(NdrFieldOffset(s,f) - NdrFieldOffset(s,p)) - sizeof(t))
  737.  
  738.  
  739. #if defined(__RPC_MAC__)
  740. #define NdrFcShort(s)   (unsigned char)(s >> 8), (unsigned char)(s & 0xff)
  741. #define NdrFcLong(s)    (unsigned char)(s >> 24), (unsigned char)((s & 0x00ff0000) >> 16), \
  742.                         (unsigned char)((s & 0x0000ff00) >> 8), (unsigned char)(s & 0xff)
  743. #else
  744. #define NdrFcShort(s)   (unsigned char)(s & 0xff), (unsigned char)(s >> 8)
  745. #define NdrFcLong(s)    (unsigned char)(s & 0xff), (unsigned char)((s & 0x0000ff00) >> 8), \
  746.                         (unsigned char)((s & 0x00ff0000) >> 16), (unsigned char)(s >> 24)
  747. #endif //  Mac
  748.  
  749. //
  750. // On the server side, the following exceptions are mapped to
  751. // the bad stub data exception if -error stub_data is used.
  752. //
  753.  
  754. #define RPC_BAD_STUB_DATA_EXCEPTION_FILTER  \
  755.                  ( (RpcExceptionCode() == STATUS_ACCESS_VIOLATION)  || \
  756.                    (RpcExceptionCode() == STATUS_DATATYPE_MISALIGNMENT) || \
  757.                    (RpcExceptionCode() == RPC_X_BAD_STUB_DATA) || \
  758.                    (RpcExceptionCode() == RPC_S_INVALID_BOUND) )
  759.  
  760. /////////////////////////////////////////////////////////////////////////////
  761. // Some stub helper functions.
  762. /////////////////////////////////////////////////////////////////////////////
  763.  
  764. ////////////////////////////////////////////////////////////////////////////
  765. // Stub helper structures.
  766. ////////////////////////////////////////////////////////////////////////////
  767.  
  768. struct _MIDL_STUB_MESSAGE;
  769. struct _MIDL_STUB_DESC;
  770. struct _FULL_PTR_XLAT_TABLES;
  771.  
  772. typedef unsigned char __RPC_FAR * RPC_BUFPTR;
  773. typedef unsigned long             RPC_LENGTH;
  774.  
  775. // Expression evaluation callback routine prototype.
  776. typedef void (__RPC_USER __RPC_FAR * EXPR_EVAL)( struct _MIDL_STUB_MESSAGE __RPC_FAR * );
  777.  
  778. typedef const unsigned char __RPC_FAR * PFORMAT_STRING;
  779.  
  780. /*
  781.  * Multidimensional conformant/varying array struct.
  782.  */
  783. typedef struct
  784.     {
  785.     long                            Dimension;
  786.  
  787.     /* These fields MUST be (unsigned long *) */
  788.     unsigned long __RPC_FAR *       BufferConformanceMark;
  789.     unsigned long __RPC_FAR *       BufferVarianceMark;
  790.  
  791.     /* Count arrays, used for top level arrays in -Os stubs */
  792.     unsigned long __RPC_FAR *       MaxCountArray;
  793.     unsigned long __RPC_FAR *       OffsetArray;
  794.     unsigned long __RPC_FAR *       ActualCountArray;
  795.     } ARRAY_INFO, __RPC_FAR *PARRAY_INFO;
  796.  
  797. /*
  798.  *  Pipe related definitions.
  799.  */
  800.  
  801. typedef struct _NDR_PIPE_DESC *       PNDR_PIPE_DESC;
  802. typedef struct _NDR_PIPE_MESSAGE *    PNDR_PIPE_MESSAGE;
  803.  
  804. typedef struct _NDR_ASYNC_MESSAGE *   PNDR_ASYNC_MESSAGE;
  805. typedef struct _NDR_CORRELATION_INFO *PNDR_CORRELATION_INFO;
  806.  
  807. /*
  808.  * MIDL Stub Message
  809.  */
  810. #if !defined(__RPC_DOS__) && !defined(__RPC_WIN16__) && !defined(__RPC_MAC__) && !defined(__RPC_WIN64__)
  811. #include <pshpack4.h>
  812. #endif
  813.  
  814. typedef struct _MIDL_STUB_MESSAGE
  815.     {
  816.     /* RPC message structure. */
  817.     PRPC_MESSAGE                RpcMsg;
  818.  
  819.     /* Pointer into RPC message buffer. */
  820.     unsigned char __RPC_FAR *   Buffer;
  821.  
  822.     /*
  823.      * These are used internally by the Ndr routines to mark the beginning
  824.      * and end of an incoming RPC buffer.
  825.      */
  826.     unsigned char __RPC_FAR *   BufferStart;
  827.     unsigned char __RPC_FAR *   BufferEnd;
  828.  
  829.     /*
  830.      * Used internally by the Ndr routines as a place holder in the buffer.
  831.      * On the marshalling side it's used to mark the location where conformance
  832.      * size should be marshalled.
  833.      * On the unmarshalling side it's used to mark the location in the buffer
  834.      * used during pointer unmarshalling to base pointer offsets off of.
  835.      */
  836.     unsigned char __RPC_FAR *   BufferMark;
  837.  
  838.     /* Set by the buffer sizing routines. */
  839.     unsigned long               BufferLength;
  840.  
  841.     /* Set by the memory sizing routines. */
  842.     unsigned long               MemorySize;
  843.  
  844.     /* Pointer to user memory. */
  845.     unsigned char __RPC_FAR *   Memory;
  846.  
  847.     /* Is the Ndr routine begin called from a client side stub. */
  848.     int                         IsClient;
  849.  
  850.     /* Can the buffer be re-used for memory on unmarshalling. */
  851.     int                         ReuseBuffer;
  852.  
  853.     /* Holds the current pointer to an allocate all nodes memory block. */
  854.     unsigned char __RPC_FAR *   AllocAllNodesMemory;
  855.  
  856.     /* Used for debugging asserts only, remove later. */
  857.     unsigned char __RPC_FAR *   AllocAllNodesMemoryEnd;
  858.  
  859.     /*
  860.      * Stuff needed while handling complex structures
  861.      */
  862.  
  863.     /* Ignore imbeded pointers while computing buffer or memory sizes. */
  864.     int                         IgnoreEmbeddedPointers;
  865.  
  866.     /*
  867.      * This marks the location in the buffer where pointees of a complex
  868.      * struct reside.
  869.      */
  870.     unsigned char __RPC_FAR *   PointerBufferMark;
  871.  
  872.     /*
  873.      * Used to catch errors in SendReceive.
  874.      */
  875.     unsigned char               fBufferValid;
  876.  
  877.     /*
  878.      * Obsolete unused field (formerly MaxContextHandleNumber).
  879.      */
  880.     unsigned char               uFlags;
  881.  
  882.     /*
  883.      * Used internally by the Ndr routines.  Holds the max counts for
  884.      * a conformant array.
  885.      */
  886.     ULONG_PTR                   MaxCount;
  887.  
  888.     /*
  889.      * Used internally by the Ndr routines.  Holds the offsets for a varying
  890.      * array.
  891.      */
  892.     unsigned long               Offset;
  893.  
  894.     /*
  895.      * Used internally by the Ndr routines.  Holds the actual counts for
  896.      * a varying array.
  897.      */
  898.     unsigned long               ActualCount;
  899.  
  900.     /* Allocation and Free routine to be used by the Ndr routines. */
  901.     void __RPC_FAR *    (__RPC_FAR __RPC_API * pfnAllocate)(size_t);
  902.     void                (__RPC_FAR __RPC_API * pfnFree)(void __RPC_FAR *);
  903.  
  904.     /*
  905.      * Top of parameter stack.  Used for "single call" stubs during marshalling
  906.      * to hold the beginning of the parameter list on the stack.  Needed to
  907.      * extract parameters which hold attribute values for top level arrays and
  908.      * pointers.
  909.      */
  910.     unsigned char __RPC_FAR *       StackTop;
  911.  
  912.     /*
  913.      *  Fields used for the transmit_as and represent_as objects.
  914.      *  For represent_as the mapping is: presented=local, transmit=named.
  915.      */
  916.     unsigned char __RPC_FAR *       pPresentedType;
  917.     unsigned char __RPC_FAR *       pTransmitType;
  918.  
  919.     /*
  920.      * When we first construct a binding on the client side, stick it
  921.      * in the rpcmessage and later call RpcGetBuffer, the handle field
  922.      * in the rpcmessage is changed. That's fine except that we need to
  923.      * have that original handle for use in unmarshalling context handles
  924.      * (the second argument in NDRCContextUnmarshall to be exact). So
  925.      * stash the contructed handle here and extract it when needed.
  926.      */
  927.     handle_t                        SavedHandle;
  928.  
  929.     /*
  930.      * Pointer back to the stub descriptor.  Use this to get all handle info.
  931.      */
  932.     const struct _MIDL_STUB_DESC __RPC_FAR *    StubDesc;
  933.  
  934.     /*
  935.      * Full pointer stuff.
  936.      */
  937.     struct _FULL_PTR_XLAT_TABLES __RPC_FAR *    FullPtrXlatTables;
  938.  
  939.     unsigned long                   FullPtrRefId;
  940.  
  941.     /*
  942.      * Used to be PointeeBufferLength
  943.      */
  944.     unsigned long                   ulUnused1;
  945.  
  946.     int                             fInDontFree       :1;
  947.     int                             fDontCallFreeInst :1;
  948.     int                             fInOnlyParam      :1;
  949.     int                             fHasReturn        :1;
  950.     int                             fHasExtensions    :1;
  951.     int                             fHasNewCorrDesc   :1;
  952.     int                             fUnused           :10;
  953.  
  954.  
  955.     unsigned long                   dwDestContext;
  956.     void __RPC_FAR *                pvDestContext;
  957.  
  958.     NDR_SCONTEXT *                  SavedContextHandles;
  959.  
  960.     long                            ParamNumber;
  961.  
  962.     struct IRpcChannelBuffer __RPC_FAR *    pRpcChannelBuffer;
  963.  
  964.     PARRAY_INFO                     pArrayInfo;
  965.  
  966.     /*
  967.      * This is where the Beta2 stub message ends.
  968.      */
  969.  
  970.     unsigned long __RPC_FAR *       SizePtrCountArray;
  971.     unsigned long __RPC_FAR *       SizePtrOffsetArray;
  972.     unsigned long __RPC_FAR *       SizePtrLengthArray;
  973.  
  974.     /*
  975.      * Interpreter argument queue.  Used on server side only.
  976.      */
  977.     void __RPC_FAR *                pArgQueue;
  978.  
  979.     unsigned long                   dwStubPhase;
  980.  
  981.     /*
  982.      * Pipe descriptor, defined for the 4.0 release.
  983.      */
  984.     PNDR_PIPE_DESC                  pPipeDesc;
  985.  
  986.     /*
  987.      *  Async message pointer, correlation data - NT 5.0 features.
  988.      */
  989.     PNDR_ASYNC_MESSAGE              pAsyncMsg;
  990.     PNDR_CORRELATION_INFO           pCorrInfo;
  991.     unsigned char *                 pCorrMemory;
  992.  
  993.     void *                          pMemoryList;
  994.  
  995.     /*
  996.      *  Fields up to this point present since the 3.50 release.
  997.      */
  998.  
  999.  
  1000.     /*
  1001.      *  New reserved fields introduced for Windows 2000 Beta 3
  1002.      */
  1003.  
  1004.     ULONG_PTR                       w2kReserved[5];
  1005.  
  1006.     } MIDL_STUB_MESSAGE, __RPC_FAR *PMIDL_STUB_MESSAGE;
  1007.  
  1008. #if !defined(__RPC_DOS__) && !defined(__RPC_WIN16__) && !defined(__RPC_MAC__) && !defined(__RPC_WIN64__)
  1009. #include <poppack.h>
  1010. #endif
  1011.  
  1012. /*
  1013.  * Generic handle bind/unbind routine pair.
  1014.  */
  1015. typedef void __RPC_FAR *
  1016.         (__RPC_FAR __RPC_API * GENERIC_BINDING_ROUTINE)
  1017.         (void __RPC_FAR *);
  1018. typedef void
  1019.         (__RPC_FAR __RPC_API * GENERIC_UNBIND_ROUTINE)
  1020.         (void __RPC_FAR *, unsigned char __RPC_FAR *);
  1021.  
  1022. typedef struct _GENERIC_BINDING_ROUTINE_PAIR
  1023.     {
  1024.     GENERIC_BINDING_ROUTINE     pfnBind;
  1025.     GENERIC_UNBIND_ROUTINE      pfnUnbind;
  1026.     } GENERIC_BINDING_ROUTINE_PAIR, __RPC_FAR *PGENERIC_BINDING_ROUTINE_PAIR;
  1027.  
  1028. typedef struct __GENERIC_BINDING_INFO
  1029.     {
  1030.     void __RPC_FAR *            pObj;
  1031.     unsigned int                Size;
  1032.     GENERIC_BINDING_ROUTINE     pfnBind;
  1033.     GENERIC_UNBIND_ROUTINE      pfnUnbind;
  1034.     } GENERIC_BINDING_INFO, __RPC_FAR *PGENERIC_BINDING_INFO;
  1035.  
  1036. // typedef EXPR_EVAL - see above
  1037. // typedefs for xmit_as
  1038.  
  1039. #if (defined(_MSC_VER)) && !defined(MIDL_PASS)
  1040. // a Microsoft C++ compiler
  1041. #define NDR_SHAREABLE __inline
  1042. #else
  1043. #define NDR_SHAREABLE static
  1044. #endif
  1045.  
  1046.  
  1047. typedef void (__RPC_FAR __RPC_USER * XMIT_HELPER_ROUTINE)
  1048.     ( PMIDL_STUB_MESSAGE );
  1049.  
  1050. typedef struct _XMIT_ROUTINE_QUINTUPLE
  1051.     {
  1052.     XMIT_HELPER_ROUTINE     pfnTranslateToXmit;
  1053.     XMIT_HELPER_ROUTINE     pfnTranslateFromXmit;
  1054.     XMIT_HELPER_ROUTINE     pfnFreeXmit;
  1055.     XMIT_HELPER_ROUTINE     pfnFreeInst;
  1056.     } XMIT_ROUTINE_QUINTUPLE, __RPC_FAR *PXMIT_ROUTINE_QUINTUPLE;
  1057.  
  1058. typedef unsigned long
  1059. (__RPC_FAR __RPC_USER * USER_MARSHAL_SIZING_ROUTINE)
  1060.     (unsigned long __RPC_FAR *,
  1061.      unsigned long,
  1062.      void __RPC_FAR * );
  1063.  
  1064. typedef unsigned char __RPC_FAR *
  1065. (__RPC_FAR __RPC_USER * USER_MARSHAL_MARSHALLING_ROUTINE)
  1066.     (unsigned long __RPC_FAR *,
  1067.      unsigned char  __RPC_FAR * ,
  1068.      void __RPC_FAR * );
  1069.  
  1070. typedef unsigned char __RPC_FAR *
  1071. (__RPC_FAR __RPC_USER * USER_MARSHAL_UNMARSHALLING_ROUTINE)
  1072.     (unsigned long __RPC_FAR *,
  1073.      unsigned char  __RPC_FAR * ,
  1074.      void __RPC_FAR * );
  1075.  
  1076. typedef void (__RPC_FAR __RPC_USER * USER_MARSHAL_FREEING_ROUTINE)
  1077.     (unsigned long __RPC_FAR *,
  1078.      void __RPC_FAR * );
  1079.  
  1080. typedef struct _USER_MARSHAL_ROUTINE_QUADRUPLE
  1081.     {
  1082.     USER_MARSHAL_SIZING_ROUTINE          pfnBufferSize;
  1083.     USER_MARSHAL_MARSHALLING_ROUTINE     pfnMarshall;
  1084.     USER_MARSHAL_UNMARSHALLING_ROUTINE   pfnUnmarshall;
  1085.     USER_MARSHAL_FREEING_ROUTINE         pfnFree;
  1086.     } USER_MARSHAL_ROUTINE_QUADRUPLE;
  1087.  
  1088. #define USER_MARSHAL_CB_SIGNATURE 'USRC'
  1089.  
  1090. typedef enum _USER_MARSHAL_CB_TYPE
  1091. {
  1092.     USER_MARSHAL_CB_BUFFER_SIZE,
  1093.     USER_MARSHAL_CB_MARSHALL,
  1094.     USER_MARSHAL_CB_UNMARSHALL,
  1095.     USER_MARSHAL_CB_FREE
  1096. } USER_MARSHAL_CB_TYPE;
  1097.  
  1098. typedef struct _USER_MARSHAL_CB
  1099. {
  1100.     unsigned long       Flags;
  1101.     PMIDL_STUB_MESSAGE  pStubMsg;
  1102.     PFORMAT_STRING      pReserve;
  1103.     unsigned long    Signature;
  1104.     USER_MARSHAL_CB_TYPE CBType;
  1105.     PFORMAT_STRING      pFormat;
  1106.     PFORMAT_STRING      pTypeFormat;
  1107. } USER_MARSHAL_CB;
  1108.  
  1109.  
  1110. #define USER_CALL_CTXT_MASK(f)  ((f) & 0x00ff)
  1111. #define USER_CALL_AUX_MASK(f)   ((f) & 0xff00)
  1112. #define GET_USER_DATA_REP(f)    ((f) >> 16)
  1113.  
  1114. #define USER_CALL_IS_ASYNC      0x0100      /* aux flag: in an [async] call */
  1115. #define USER_CALL_NEW_CORRELATION_DESC 0x0200 
  1116.  
  1117. typedef struct _MALLOC_FREE_STRUCT
  1118.     {
  1119.     void __RPC_FAR *    (__RPC_FAR __RPC_USER * pfnAllocate)(size_t);
  1120.     void                (__RPC_FAR __RPC_USER * pfnFree)(void __RPC_FAR *);
  1121.     } MALLOC_FREE_STRUCT;
  1122.  
  1123. typedef struct _COMM_FAULT_OFFSETS
  1124.     {
  1125.     short       CommOffset;
  1126.     short       FaultOffset;
  1127.     } COMM_FAULT_OFFSETS;
  1128.  
  1129. /*
  1130.  * MIDL Stub Descriptor
  1131.  */
  1132.  
  1133. typedef struct _MIDL_STUB_DESC
  1134.     {
  1135.  
  1136.     void __RPC_FAR *    RpcInterfaceInformation;
  1137.  
  1138.     void __RPC_FAR *    (__RPC_FAR __RPC_API * pfnAllocate)(size_t);
  1139.     void                (__RPC_FAR __RPC_API * pfnFree)(void __RPC_FAR *);
  1140.  
  1141.     union
  1142.         {
  1143.         handle_t __RPC_FAR *            pAutoHandle;
  1144.         handle_t __RPC_FAR *            pPrimitiveHandle;
  1145.         PGENERIC_BINDING_INFO           pGenericBindingInfo;
  1146.         } IMPLICIT_HANDLE_INFO;
  1147.  
  1148.     const NDR_RUNDOWN __RPC_FAR *                   apfnNdrRundownRoutines;
  1149.     const GENERIC_BINDING_ROUTINE_PAIR __RPC_FAR *  aGenericBindingRoutinePairs;
  1150.  
  1151.     const EXPR_EVAL __RPC_FAR *                     apfnExprEval;
  1152.  
  1153.     const XMIT_ROUTINE_QUINTUPLE __RPC_FAR *        aXmitQuintuple;
  1154.  
  1155.     const unsigned char __RPC_FAR *                 pFormatTypes;
  1156.  
  1157.     int                                             fCheckBounds;
  1158.  
  1159.     /* Ndr library version. */
  1160.     unsigned long                                   Version;
  1161.  
  1162.     MALLOC_FREE_STRUCT __RPC_FAR *                  pMallocFreeStruct;
  1163.  
  1164.     long                                MIDLVersion;
  1165.  
  1166.     const COMM_FAULT_OFFSETS __RPC_FAR *    CommFaultOffsets;
  1167.  
  1168.     // New fields for version 3.0+
  1169.     const USER_MARSHAL_ROUTINE_QUADRUPLE __RPC_FAR * aUserMarshalQuadruple;
  1170.  
  1171.     // Notify routines - added for NT5, MIDL 5.0
  1172.     const NDR_NOTIFY_ROUTINE __RPC_FAR *            NotifyRoutineTable;
  1173.  
  1174.     /*
  1175.      * Reserved for future use.
  1176.      */
  1177.  
  1178.     ULONG_PTR                                mFlags;
  1179.     ULONG_PTR                                Reserved3;
  1180.     ULONG_PTR                                Reserved4;
  1181.     ULONG_PTR                                Reserved5;
  1182.  
  1183.     } MIDL_STUB_DESC;
  1184.  
  1185. typedef const MIDL_STUB_DESC __RPC_FAR * PMIDL_STUB_DESC;
  1186.  
  1187. typedef void __RPC_FAR * PMIDL_XMIT_TYPE;
  1188.  
  1189. /*
  1190.  * MIDL Stub Format String.  This is a const in the stub.
  1191.  */
  1192. #if !defined( RC_INVOKED )
  1193. #if _MSC_VER >= 1200
  1194. #pragma warning(push)
  1195. #endif
  1196. #pragma warning( disable:4200 )
  1197. #endif
  1198. typedef struct _MIDL_FORMAT_STRING
  1199.     {
  1200.     short               Pad;
  1201.     unsigned char       Format[];
  1202.     } MIDL_FORMAT_STRING;
  1203. #if !defined( RC_INVOKED )
  1204. #if _MSC_VER >= 1200
  1205. #pragma warning(pop)
  1206. #else
  1207. #pragma warning( default:4200 )
  1208. #endif
  1209. #endif
  1210.  
  1211. /*
  1212.  * Stub thunk used for some interpreted server stubs.
  1213.  */
  1214. typedef void (__RPC_FAR __RPC_API * STUB_THUNK)( PMIDL_STUB_MESSAGE );
  1215.  
  1216. typedef long (__RPC_FAR __RPC_API * SERVER_ROUTINE)();
  1217.  
  1218. /*
  1219.  * Server Interpreter's information strucuture.
  1220.  */
  1221. typedef struct  _MIDL_SERVER_INFO_
  1222.     {
  1223.     PMIDL_STUB_DESC             pStubDesc;
  1224.     const SERVER_ROUTINE *      DispatchTable;
  1225.     PFORMAT_STRING              ProcString;
  1226.     const unsigned short *      FmtStringOffset;
  1227.     const STUB_THUNK *          ThunkTable;
  1228.     PFORMAT_STRING              LocalFormatTypes;
  1229.     PFORMAT_STRING              LocalProcString;
  1230.     const unsigned short *      LocalFmtStringOffset;
  1231.     } MIDL_SERVER_INFO, *PMIDL_SERVER_INFO;
  1232.  
  1233. /*
  1234.  * Stubless object proxy information structure.
  1235.  */
  1236. typedef struct _MIDL_STUBLESS_PROXY_INFO
  1237.     {
  1238.     PMIDL_STUB_DESC                     pStubDesc;
  1239.     PFORMAT_STRING                      ProcFormatString;
  1240.     const unsigned short __RPC_FAR *    FormatStringOffset;
  1241.     PFORMAT_STRING                      LocalFormatTypes;
  1242.     PFORMAT_STRING                      LocalProcString;
  1243.     const unsigned short __RPC_FAR *    LocalFmtStringOffset;
  1244.     } MIDL_STUBLESS_PROXY_INFO;
  1245.  
  1246. typedef MIDL_STUBLESS_PROXY_INFO __RPC_FAR * PMIDL_STUBLESS_PROXY_INFO;
  1247.  
  1248. /*
  1249.  * This is the return value from NdrClientCall.
  1250.  */
  1251. typedef union _CLIENT_CALL_RETURN
  1252.     {
  1253.     void __RPC_FAR *        Pointer;
  1254.     LONG_PTR                 Simple;
  1255.     } CLIENT_CALL_RETURN;
  1256.  
  1257. /*
  1258.  * Full pointer data structures.
  1259.  */
  1260.  
  1261. typedef enum
  1262.         {
  1263.         XLAT_SERVER = 1,
  1264.         XLAT_CLIENT
  1265.         } XLAT_SIDE;
  1266.  
  1267. /*
  1268.  * Stores the translation for the conversion from a full pointer into it's
  1269.  * corresponding ref id.
  1270.  */
  1271. typedef struct _FULL_PTR_TO_REFID_ELEMENT
  1272.     {
  1273.     struct _FULL_PTR_TO_REFID_ELEMENT __RPC_FAR *  Next;
  1274.  
  1275.     void __RPC_FAR *            Pointer;
  1276.     unsigned long       RefId;
  1277.     unsigned char       State;
  1278.     } FULL_PTR_TO_REFID_ELEMENT, __RPC_FAR *PFULL_PTR_TO_REFID_ELEMENT;
  1279.  
  1280. /*
  1281.  * Full pointer translation tables.
  1282.  */
  1283. typedef struct _FULL_PTR_XLAT_TABLES
  1284.     {
  1285.     /*
  1286.      * Ref id to pointer translation information.
  1287.      */
  1288.     struct
  1289.         {
  1290.         void __RPC_FAR *__RPC_FAR *             XlatTable;
  1291.         unsigned char __RPC_FAR *     StateTable;
  1292.         unsigned long       NumberOfEntries;
  1293.         } RefIdToPointer;
  1294.  
  1295.     /*
  1296.      * Pointer to ref id translation information.
  1297.      */
  1298.     struct
  1299.         {
  1300.         PFULL_PTR_TO_REFID_ELEMENT __RPC_FAR *  XlatTable;
  1301.         unsigned long                   NumberOfBuckets;
  1302.         unsigned long                   HashMask;
  1303.         } PointerToRefId;
  1304.  
  1305.     /*
  1306.      * Next ref id to use.
  1307.      */
  1308.     unsigned long           NextRefId;
  1309.  
  1310.     /*
  1311.      * Keep track of the translation size we're handling : server or client.
  1312.      * This tells us when we have to do reverse translations when we insert
  1313.      * new translations.  On the server we must insert a pointer-to-refid
  1314.      * translation whenever we insert a refid-to-pointer translation, and
  1315.      * vica versa for the client.
  1316.      */
  1317.     XLAT_SIDE               XlatSide;
  1318.     } FULL_PTR_XLAT_TABLES, __RPC_FAR *PFULL_PTR_XLAT_TABLES;
  1319.  
  1320. /***************************************************************************
  1321.  ** New MIDL 2.0 Ndr routine templates
  1322.  ***************************************************************************/
  1323.  
  1324. /*
  1325.  * Marshall routines
  1326.  */
  1327.  
  1328. RPCRTAPI
  1329. void
  1330. RPC_ENTRY
  1331. NdrSimpleTypeMarshall(
  1332.     PMIDL_STUB_MESSAGE                  pStubMsg,
  1333.     unsigned char __RPC_FAR *           pMemory,
  1334.     unsigned char                       FormatChar
  1335.     );
  1336.  
  1337. RPCRTAPI
  1338. unsigned char __RPC_FAR *
  1339. RPC_ENTRY
  1340. NdrPointerMarshall(
  1341.     PMIDL_STUB_MESSAGE                  pStubMsg,
  1342.     unsigned char __RPC_FAR *           pMemory,
  1343.     PFORMAT_STRING                      pFormat
  1344.     );
  1345.  
  1346. /* Structures */
  1347.  
  1348. RPCRTAPI
  1349. unsigned char __RPC_FAR *
  1350. RPC_ENTRY
  1351. NdrSimpleStructMarshall(
  1352.     PMIDL_STUB_MESSAGE                  pStubMsg,
  1353.     unsigned char __RPC_FAR *           pMemory,
  1354.     PFORMAT_STRING                      pFormat
  1355.     );
  1356.  
  1357. RPCRTAPI
  1358. unsigned char __RPC_FAR *
  1359. RPC_ENTRY
  1360. NdrConformantStructMarshall(
  1361.     PMIDL_STUB_MESSAGE                  pStubMsg,
  1362.     unsigned char __RPC_FAR *           pMemory,
  1363.     PFORMAT_STRING                      pFormat
  1364.     );
  1365.  
  1366. RPCRTAPI
  1367. unsigned char __RPC_FAR *
  1368. RPC_ENTRY
  1369. NdrConformantVaryingStructMarshall(
  1370.     PMIDL_STUB_MESSAGE                  pStubMsg,
  1371.     unsigned char __RPC_FAR *           pMemory,
  1372.     PFORMAT_STRING                      pFormat
  1373.     );
  1374.  
  1375. RPCRTAPI
  1376. unsigned char __RPC_FAR *
  1377. RPC_ENTRY
  1378. NdrComplexStructMarshall(
  1379.     PMIDL_STUB_MESSAGE                  pStubMsg,
  1380.     unsigned char __RPC_FAR *           pMemory,
  1381.     PFORMAT_STRING                      pFormat
  1382.     );
  1383.  
  1384. /* Arrays */
  1385.  
  1386. RPCRTAPI
  1387. unsigned char __RPC_FAR *
  1388. RPC_ENTRY
  1389. NdrFixedArrayMarshall(
  1390.     PMIDL_STUB_MESSAGE                  pStubMsg,
  1391.     unsigned char __RPC_FAR *           pMemory,
  1392.     PFORMAT_STRING                      pFormat
  1393.     );
  1394.  
  1395. RPCRTAPI
  1396. unsigned char __RPC_FAR *
  1397. RPC_ENTRY
  1398. NdrConformantArrayMarshall(
  1399.     PMIDL_STUB_MESSAGE                  pStubMsg,
  1400.     unsigned char __RPC_FAR *           pMemory,
  1401.     PFORMAT_STRING                      pFormat
  1402.     );
  1403.  
  1404. RPCRTAPI
  1405. unsigned char __RPC_FAR *
  1406. RPC_ENTRY
  1407. NdrConformantVaryingArrayMarshall(
  1408.     PMIDL_STUB_MESSAGE                  pStubMsg,
  1409.     unsigned char __RPC_FAR *           pMemory,
  1410.     PFORMAT_STRING                      pFormat
  1411.     );
  1412.  
  1413. RPCRTAPI
  1414. unsigned char __RPC_FAR *
  1415. RPC_ENTRY
  1416. NdrVaryingArrayMarshall(
  1417.     PMIDL_STUB_MESSAGE                  pStubMsg,
  1418.     unsigned char __RPC_FAR *           pMemory,
  1419.     PFORMAT_STRING                      pFormat
  1420.     );
  1421.  
  1422. RPCRTAPI
  1423. unsigned char __RPC_FAR *
  1424. RPC_ENTRY
  1425. NdrComplexArrayMarshall(
  1426.     PMIDL_STUB_MESSAGE                  pStubMsg,
  1427.     unsigned char __RPC_FAR *           pMemory,
  1428.     PFORMAT_STRING                      pFormat
  1429.     );
  1430.  
  1431. /* Strings */
  1432.  
  1433. RPCRTAPI
  1434. unsigned char __RPC_FAR *
  1435. RPC_ENTRY
  1436. NdrNonConformantStringMarshall(
  1437.     PMIDL_STUB_MESSAGE                  pStubMsg,
  1438.     unsigned char __RPC_FAR *           pMemory,
  1439.     PFORMAT_STRING                      pFormat
  1440.     );
  1441.  
  1442. RPCRTAPI
  1443. unsigned char __RPC_FAR *
  1444. RPC_ENTRY
  1445. NdrConformantStringMarshall(
  1446.     PMIDL_STUB_MESSAGE                  pStubMsg,
  1447.     unsigned char __RPC_FAR *           pMemory,
  1448.     PFORMAT_STRING                      pFormat
  1449.     );
  1450.  
  1451. /* Unions */
  1452.  
  1453. RPCRTAPI
  1454. unsigned char __RPC_FAR *
  1455. RPC_ENTRY
  1456. NdrEncapsulatedUnionMarshall(
  1457.     PMIDL_STUB_MESSAGE                  pStubMsg,
  1458.     unsigned char __RPC_FAR *           pMemory,
  1459.     PFORMAT_STRING                      pFormat
  1460.     );
  1461.  
  1462. RPCRTAPI
  1463. unsigned char __RPC_FAR *
  1464. RPC_ENTRY
  1465. NdrNonEncapsulatedUnionMarshall(
  1466.     PMIDL_STUB_MESSAGE                  pStubMsg,
  1467.     unsigned char __RPC_FAR *           pMemory,
  1468.     PFORMAT_STRING                      pFormat
  1469.     );
  1470.  
  1471. /* Byte count pointer */
  1472.  
  1473. RPCRTAPI
  1474. unsigned char __RPC_FAR *
  1475. RPC_ENTRY
  1476. NdrByteCountPointerMarshall(
  1477.     PMIDL_STUB_MESSAGE                  pStubMsg,
  1478.     unsigned char __RPC_FAR *           pMemory,
  1479.     PFORMAT_STRING                      pFormat
  1480.     );
  1481.  
  1482. /* Transmit as and represent as*/
  1483.  
  1484. RPCRTAPI
  1485. unsigned char __RPC_FAR *
  1486. RPC_ENTRY
  1487. NdrXmitOrRepAsMarshall(
  1488.     PMIDL_STUB_MESSAGE                  pStubMsg,
  1489.     unsigned char __RPC_FAR *           pMemory,
  1490.     PFORMAT_STRING                      pFormat
  1491.     );
  1492.  
  1493. /* User_marshal */
  1494.  
  1495. RPCRTAPI
  1496. unsigned char __RPC_FAR *
  1497. RPC_ENTRY
  1498. NdrUserMarshalMarshall(
  1499.     PMIDL_STUB_MESSAGE                  pStubMsg,
  1500.     unsigned char __RPC_FAR *           pMemory,
  1501.     PFORMAT_STRING                      pFormat
  1502.     );
  1503.  
  1504. /* Cairo interface pointer */
  1505.  
  1506. RPCRTAPI
  1507. unsigned char __RPC_FAR *
  1508. RPC_ENTRY
  1509. NdrInterfacePointerMarshall(
  1510.     PMIDL_STUB_MESSAGE                  pStubMsg,
  1511.     unsigned char __RPC_FAR *           pMemory,
  1512.     PFORMAT_STRING                      pFormat
  1513.     );
  1514.  
  1515. /* Context handles */
  1516.  
  1517. RPCRTAPI
  1518. void
  1519. RPC_ENTRY
  1520. NdrClientContextMarshall(
  1521.     PMIDL_STUB_MESSAGE    pStubMsg,
  1522.     NDR_CCONTEXT          ContextHandle,
  1523.     int                   fCheck
  1524.     );
  1525.  
  1526. RPCRTAPI
  1527. void
  1528. RPC_ENTRY
  1529. NdrServerContextMarshall(
  1530.     PMIDL_STUB_MESSAGE    pStubMsg,
  1531.     NDR_SCONTEXT          ContextHandle,
  1532.     NDR_RUNDOWN           RundownRoutine
  1533.     );
  1534.  
  1535. RPCRTAPI
  1536. void
  1537. RPC_ENTRY
  1538. NdrServerContextNewMarshall(
  1539.     PMIDL_STUB_MESSAGE    pStubMsg,
  1540.     NDR_SCONTEXT          ContextHandle,
  1541.     NDR_RUNDOWN           RundownRoutine,
  1542.     PFORMAT_STRING        pFormat
  1543.     );
  1544.  
  1545. /*
  1546.  * Unmarshall routines
  1547.  */
  1548.  
  1549. RPCRTAPI
  1550. void
  1551. RPC_ENTRY
  1552. NdrSimpleTypeUnmarshall(
  1553.     PMIDL_STUB_MESSAGE                  pStubMsg,
  1554.     unsigned char __RPC_FAR *           pMemory,
  1555.     unsigned char                       FormatChar
  1556.     );
  1557.  
  1558. RPCRTAPI
  1559. unsigned char * RPC_ENTRY
  1560. NdrRangeUnmarshall(
  1561.     PMIDL_STUB_MESSAGE  pStubMsg,
  1562.     unsigned char **    ppMemory,
  1563.     PFORMAT_STRING      pFormat,
  1564.     unsigned char       fMustAlloc
  1565.     );
  1566.  
  1567. RPCRTAPI
  1568. void
  1569. RPC_ENTRY
  1570. NdrCorrelationInitialize(
  1571.     PMIDL_STUB_MESSAGE                  pStubMsg,
  1572.     unsigned long *                     pMemory,
  1573.     unsigned long                       CacheSize,
  1574.     unsigned long                       flags
  1575.     );
  1576.  
  1577. RPCRTAPI
  1578. void
  1579. RPC_ENTRY
  1580. NdrCorrelationPass(
  1581.     PMIDL_STUB_MESSAGE                  pStubMsg
  1582.     );
  1583.  
  1584. RPCRTAPI
  1585. void
  1586. RPC_ENTRY
  1587. NdrCorrelationFree(
  1588.     PMIDL_STUB_MESSAGE                  pStubMsg
  1589.     );
  1590.  
  1591. RPCRTAPI
  1592. unsigned char __RPC_FAR *
  1593. RPC_ENTRY
  1594. NdrPointerUnmarshall(
  1595.     PMIDL_STUB_MESSAGE                      pStubMsg,
  1596.     unsigned char __RPC_FAR * __RPC_FAR *   ppMemory,
  1597.     PFORMAT_STRING                          pFormat,
  1598.     unsigned char                           fMustAlloc
  1599.     );
  1600.  
  1601. /* Structures */
  1602.  
  1603. RPCRTAPI
  1604. unsigned char __RPC_FAR *
  1605. RPC_ENTRY
  1606. NdrSimpleStructUnmarshall(
  1607.     PMIDL_STUB_MESSAGE                      pStubMsg,
  1608.     unsigned char __RPC_FAR * __RPC_FAR *   ppMemory,
  1609.     PFORMAT_STRING                          pFormat,
  1610.     unsigned char                           fMustAlloc
  1611.     );
  1612.  
  1613. RPCRTAPI
  1614. unsigned char __RPC_FAR *
  1615. RPC_ENTRY
  1616. NdrConformantStructUnmarshall(
  1617.     PMIDL_STUB_MESSAGE                      pStubMsg,
  1618.     unsigned char __RPC_FAR * __RPC_FAR *   ppMemory,
  1619.     PFORMAT_STRING                          pFormat,
  1620.     unsigned char                           fMustAlloc
  1621.     );
  1622.  
  1623. RPCRTAPI
  1624. unsigned char __RPC_FAR *
  1625. RPC_ENTRY
  1626. NdrConformantVaryingStructUnmarshall(
  1627.     PMIDL_STUB_MESSAGE                      pStubMsg,
  1628.     unsigned char __RPC_FAR * __RPC_FAR *   ppMemory,
  1629.     PFORMAT_STRING                          pFormat,
  1630.     unsigned char                           fMustAlloc
  1631.     );
  1632.  
  1633. RPCRTAPI
  1634. unsigned char __RPC_FAR *
  1635. RPC_ENTRY
  1636. NdrComplexStructUnmarshall(
  1637.     PMIDL_STUB_MESSAGE                      pStubMsg,
  1638.     unsigned char __RPC_FAR * __RPC_FAR *   ppMemory,
  1639.     PFORMAT_STRING                          pFormat,
  1640.     unsigned char                           fMustAlloc
  1641.     );
  1642.  
  1643. /* Arrays */
  1644.  
  1645. RPCRTAPI
  1646. unsigned char __RPC_FAR *
  1647. RPC_ENTRY
  1648. NdrFixedArrayUnmarshall(
  1649.     PMIDL_STUB_MESSAGE                      pStubMsg,
  1650.     unsigned char __RPC_FAR * __RPC_FAR *   ppMemory,
  1651.     PFORMAT_STRING                          pFormat,
  1652.     unsigned char                           fMustAlloc
  1653.     );
  1654.  
  1655. RPCRTAPI
  1656. unsigned char __RPC_FAR *
  1657. RPC_ENTRY
  1658. NdrConformantArrayUnmarshall(
  1659.     PMIDL_STUB_MESSAGE                      pStubMsg,
  1660.     unsigned char __RPC_FAR * __RPC_FAR *   ppMemory,
  1661.     PFORMAT_STRING                          pFormat,
  1662.     unsigned char                           fMustAlloc
  1663.     );
  1664.  
  1665. RPCRTAPI
  1666. unsigned char __RPC_FAR *
  1667. RPC_ENTRY
  1668. NdrConformantVaryingArrayUnmarshall(
  1669.     PMIDL_STUB_MESSAGE                      pStubMsg,
  1670.     unsigned char __RPC_FAR * __RPC_FAR *   ppMemory,
  1671.     PFORMAT_STRING                          pFormat,
  1672.     unsigned char                           fMustAlloc
  1673.     );
  1674.  
  1675. RPCRTAPI
  1676. unsigned char __RPC_FAR *
  1677. RPC_ENTRY
  1678. NdrVaryingArrayUnmarshall(
  1679.     PMIDL_STUB_MESSAGE                      pStubMsg,
  1680.     unsigned char __RPC_FAR * __RPC_FAR *   ppMemory,
  1681.     PFORMAT_STRING                          pFormat,
  1682.     unsigned char                           fMustAlloc
  1683.     );
  1684.  
  1685. RPCRTAPI
  1686. unsigned char __RPC_FAR *
  1687. RPC_ENTRY
  1688. NdrComplexArrayUnmarshall(
  1689.     PMIDL_STUB_MESSAGE                      pStubMsg,
  1690.     unsigned char __RPC_FAR * __RPC_FAR *   ppMemory,
  1691.     PFORMAT_STRING                          pFormat,
  1692.     unsigned char                           fMustAlloc
  1693.     );
  1694.  
  1695. /* Strings */
  1696.  
  1697. RPCRTAPI
  1698. unsigned char __RPC_FAR *
  1699. RPC_ENTRY
  1700. NdrNonConformantStringUnmarshall(
  1701.     PMIDL_STUB_MESSAGE                      pStubMsg,
  1702.     unsigned char __RPC_FAR * __RPC_FAR *   ppMemory,
  1703.     PFORMAT_STRING                          pFormat,
  1704.     unsigned char                           fMustAlloc
  1705.     );
  1706.  
  1707. RPCRTAPI
  1708. unsigned char __RPC_FAR *
  1709. RPC_ENTRY
  1710. NdrConformantStringUnmarshall(
  1711.     PMIDL_STUB_MESSAGE                      pStubMsg,
  1712.     unsigned char __RPC_FAR * __RPC_FAR *   ppMemory,
  1713.     PFORMAT_STRING                          pFormat,
  1714.     unsigned char                           fMustAlloc
  1715.     );
  1716.  
  1717. /* Unions */
  1718.  
  1719. RPCRTAPI
  1720. unsigned char __RPC_FAR *
  1721. RPC_ENTRY
  1722. NdrEncapsulatedUnionUnmarshall(
  1723.     PMIDL_STUB_MESSAGE                      pStubMsg,
  1724.     unsigned char __RPC_FAR * __RPC_FAR *   ppMemory,
  1725.     PFORMAT_STRING                          pFormat,
  1726.     unsigned char                           fMustAlloc
  1727.     );
  1728.  
  1729. RPCRTAPI
  1730. unsigned char __RPC_FAR *
  1731. RPC_ENTRY
  1732. NdrNonEncapsulatedUnionUnmarshall(
  1733.     PMIDL_STUB_MESSAGE                      pStubMsg,
  1734.     unsigned char __RPC_FAR * __RPC_FAR *   ppMemory,
  1735.     PFORMAT_STRING                          pFormat,
  1736.     unsigned char                           fMustAlloc
  1737.     );
  1738.  
  1739. /* Byte count pointer */
  1740.  
  1741. RPCRTAPI
  1742. unsigned char __RPC_FAR *
  1743. RPC_ENTRY
  1744. NdrByteCountPointerUnmarshall(
  1745.     PMIDL_STUB_MESSAGE                      pStubMsg,
  1746.     unsigned char __RPC_FAR * __RPC_FAR *   ppMemory,
  1747.     PFORMAT_STRING                          pFormat,
  1748.     unsigned char                           fMustAlloc
  1749.     );
  1750.  
  1751. /* Transmit as and represent as*/
  1752.  
  1753. RPCRTAPI
  1754. unsigned char __RPC_FAR *
  1755. RPC_ENTRY
  1756. NdrXmitOrRepAsUnmarshall(
  1757.     PMIDL_STUB_MESSAGE                      pStubMsg,
  1758.     unsigned char __RPC_FAR * __RPC_FAR *   ppMemory,
  1759.     PFORMAT_STRING                          pFormat,
  1760.     unsigned char                           fMustAlloc
  1761.     );
  1762.  
  1763. /* User_marshal */
  1764.  
  1765. RPCRTAPI
  1766. unsigned char __RPC_FAR *
  1767. RPC_ENTRY
  1768. NdrUserMarshalUnmarshall(
  1769.     PMIDL_STUB_MESSAGE                      pStubMsg,
  1770.     unsigned char __RPC_FAR * __RPC_FAR *   ppMemory,
  1771.     PFORMAT_STRING                          pFormat,
  1772.     unsigned char                           fMustAlloc
  1773.     );
  1774.  
  1775. /* Cairo interface pointer */
  1776.  
  1777. RPCRTAPI
  1778. unsigned char __RPC_FAR *
  1779. RPC_ENTRY
  1780. NdrInterfacePointerUnmarshall(
  1781.     PMIDL_STUB_MESSAGE                      pStubMsg,
  1782.     unsigned char __RPC_FAR * __RPC_FAR *   ppMemory,
  1783.     PFORMAT_STRING                          pFormat,
  1784.     unsigned char                           fMustAlloc
  1785.     );
  1786.  
  1787. /* Context handles */
  1788.  
  1789. RPCRTAPI
  1790. void
  1791. RPC_ENTRY
  1792. NdrClientContextUnmarshall(
  1793.     PMIDL_STUB_MESSAGE          pStubMsg,
  1794.     NDR_CCONTEXT __RPC_FAR *    pContextHandle,
  1795.     RPC_BINDING_HANDLE          BindHandle
  1796.     );
  1797.  
  1798. RPCRTAPI
  1799. NDR_SCONTEXT
  1800. RPC_ENTRY
  1801. NdrServerContextUnmarshall(
  1802.     PMIDL_STUB_MESSAGE          pStubMsg
  1803.     );
  1804.  
  1805. /* New context handle flavors */
  1806.  
  1807. RPCRTAPI
  1808. NDR_SCONTEXT
  1809. RPC_ENTRY
  1810. NdrContextHandleInitialize(
  1811.     IN  PMIDL_STUB_MESSAGE  pStubMsg,
  1812.     IN  PFORMAT_STRING      pFormat
  1813.     );
  1814.  
  1815. RPCRTAPI
  1816. NDR_SCONTEXT
  1817. RPC_ENTRY
  1818. NdrServerContextNewUnmarshall(
  1819.     IN  PMIDL_STUB_MESSAGE  pStubMsg,
  1820.     IN  PFORMAT_STRING      pFormat
  1821.     );
  1822.  
  1823. /*
  1824.  * Buffer sizing routines
  1825.  */
  1826.  
  1827. RPCRTAPI
  1828. void
  1829. RPC_ENTRY
  1830. NdrPointerBufferSize(
  1831.     PMIDL_STUB_MESSAGE                  pStubMsg,
  1832.     unsigned char __RPC_FAR *           pMemory,
  1833.     PFORMAT_STRING                      pFormat
  1834.     );
  1835.  
  1836. /* Structures */
  1837.  
  1838. RPCRTAPI
  1839. void
  1840. RPC_ENTRY
  1841. NdrSimpleStructBufferSize(
  1842.     PMIDL_STUB_MESSAGE                  pStubMsg,
  1843.     unsigned char __RPC_FAR *           pMemory,
  1844.     PFORMAT_STRING                      pFormat
  1845.     );
  1846.  
  1847. RPCRTAPI
  1848. void
  1849. RPC_ENTRY
  1850. NdrConformantStructBufferSize(
  1851.     PMIDL_STUB_MESSAGE                  pStubMsg,
  1852.     unsigned char __RPC_FAR *           pMemory,
  1853.     PFORMAT_STRING                      pFormat
  1854.     );
  1855.  
  1856. RPCRTAPI
  1857. void
  1858. RPC_ENTRY
  1859. NdrConformantVaryingStructBufferSize(
  1860.     PMIDL_STUB_MESSAGE                  pStubMsg,
  1861.     unsigned char __RPC_FAR *           pMemory,
  1862.     PFORMAT_STRING                      pFormat
  1863.     );
  1864.  
  1865. RPCRTAPI
  1866. void
  1867. RPC_ENTRY
  1868. NdrComplexStructBufferSize(
  1869.     PMIDL_STUB_MESSAGE                  pStubMsg,
  1870.     unsigned char __RPC_FAR *           pMemory,
  1871.     PFORMAT_STRING                      pFormat
  1872.     );
  1873.  
  1874. /* Arrays */
  1875.  
  1876. RPCRTAPI
  1877. void
  1878. RPC_ENTRY
  1879. NdrFixedArrayBufferSize(
  1880.     PMIDL_STUB_MESSAGE                  pStubMsg,
  1881.     unsigned char __RPC_FAR *           pMemory,
  1882.     PFORMAT_STRING                      pFormat
  1883.     );
  1884.  
  1885. RPCRTAPI
  1886. void
  1887. RPC_ENTRY
  1888. NdrConformantArrayBufferSize(
  1889.     PMIDL_STUB_MESSAGE                  pStubMsg,
  1890.     unsigned char __RPC_FAR *           pMemory,
  1891.     PFORMAT_STRING                      pFormat
  1892.     );
  1893.  
  1894. RPCRTAPI
  1895. void
  1896. RPC_ENTRY
  1897. NdrConformantVaryingArrayBufferSize(
  1898.     PMIDL_STUB_MESSAGE                  pStubMsg,
  1899.     unsigned char __RPC_FAR *           pMemory,
  1900.     PFORMAT_STRING                      pFormat
  1901.     );
  1902.  
  1903. RPCRTAPI
  1904. void
  1905. RPC_ENTRY
  1906. NdrVaryingArrayBufferSize(
  1907.     PMIDL_STUB_MESSAGE                  pStubMsg,
  1908.     unsigned char __RPC_FAR *           pMemory,
  1909.     PFORMAT_STRING                      pFormat
  1910.     );
  1911.  
  1912. RPCRTAPI
  1913. void
  1914. RPC_ENTRY
  1915. NdrComplexArrayBufferSize(
  1916.     PMIDL_STUB_MESSAGE                  pStubMsg,
  1917.     unsigned char __RPC_FAR *           pMemory,
  1918.     PFORMAT_STRING                      pFormat
  1919.     );
  1920.  
  1921. /* Strings */
  1922.  
  1923. RPCRTAPI
  1924. void
  1925. RPC_ENTRY
  1926. NdrConformantStringBufferSize(
  1927.     PMIDL_STUB_MESSAGE                  pStubMsg,
  1928.     unsigned char __RPC_FAR *           pMemory,
  1929.     PFORMAT_STRING                      pFormat
  1930.     );
  1931.  
  1932. RPCRTAPI
  1933. void
  1934. RPC_ENTRY
  1935. NdrNonConformantStringBufferSize(
  1936.     PMIDL_STUB_MESSAGE                  pStubMsg,
  1937.     unsigned char __RPC_FAR *           pMemory,
  1938.     PFORMAT_STRING                      pFormat
  1939.     );
  1940.  
  1941. /* Unions */
  1942.  
  1943. RPCRTAPI
  1944. void
  1945. RPC_ENTRY
  1946. NdrEncapsulatedUnionBufferSize(
  1947.     PMIDL_STUB_MESSAGE                  pStubMsg,
  1948.     unsigned char __RPC_FAR *           pMemory,
  1949.     PFORMAT_STRING                      pFormat
  1950.     );
  1951.  
  1952. RPCRTAPI
  1953. void
  1954. RPC_ENTRY
  1955. NdrNonEncapsulatedUnionBufferSize(
  1956.     PMIDL_STUB_MESSAGE                  pStubMsg,
  1957.     unsigned char __RPC_FAR *           pMemory,
  1958.     PFORMAT_STRING                      pFormat
  1959.     );
  1960.  
  1961. /* Byte count pointer */
  1962.  
  1963. RPCRTAPI
  1964. void
  1965. RPC_ENTRY
  1966. NdrByteCountPointerBufferSize(
  1967.     PMIDL_STUB_MESSAGE                  pStubMsg,
  1968.     unsigned char __RPC_FAR *           pMemory,
  1969.     PFORMAT_STRING                      pFormat
  1970.     );
  1971.  
  1972. /* Transmit as and represent as*/
  1973.  
  1974. RPCRTAPI
  1975. void
  1976. RPC_ENTRY
  1977. NdrXmitOrRepAsBufferSize(
  1978.     PMIDL_STUB_MESSAGE                  pStubMsg,
  1979.     unsigned char __RPC_FAR *           pMemory,
  1980.     PFORMAT_STRING                      pFormat
  1981.     );
  1982.  
  1983. /* User_marshal */
  1984.  
  1985. RPCRTAPI
  1986. void
  1987. RPC_ENTRY
  1988. NdrUserMarshalBufferSize(
  1989.     PMIDL_STUB_MESSAGE                  pStubMsg,
  1990.     unsigned char __RPC_FAR *           pMemory,
  1991.     PFORMAT_STRING                      pFormat
  1992.     );
  1993.  
  1994. /* Cairo Interface pointer */
  1995.  
  1996. RPCRTAPI
  1997. void
  1998. RPC_ENTRY
  1999. NdrInterfacePointerBufferSize(
  2000.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2001.     unsigned char __RPC_FAR *           pMemory,
  2002.     PFORMAT_STRING                      pFormat
  2003.     );
  2004.  
  2005. // Context Handle size
  2006. //
  2007. RPCRTAPI
  2008. void
  2009. RPC_ENTRY
  2010. NdrContextHandleSize(
  2011.     PMIDL_STUB_MESSAGE          pStubMsg,
  2012.     unsigned char __RPC_FAR *           pMemory,
  2013.     PFORMAT_STRING                      pFormat
  2014.     );
  2015.  
  2016. /*
  2017.  * Memory sizing routines
  2018.  */
  2019.  
  2020. RPCRTAPI
  2021. unsigned long
  2022. RPC_ENTRY
  2023. NdrPointerMemorySize(
  2024.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2025.     PFORMAT_STRING                      pFormat
  2026.     );
  2027.  
  2028. /* Structures */
  2029.  
  2030. RPCRTAPI
  2031. unsigned long
  2032. RPC_ENTRY
  2033. NdrSimpleStructMemorySize(
  2034.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2035.     PFORMAT_STRING                      pFormat
  2036.     );
  2037.  
  2038. RPCRTAPI
  2039. unsigned long
  2040. RPC_ENTRY
  2041. NdrConformantStructMemorySize(
  2042.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2043.     PFORMAT_STRING                      pFormat
  2044.     );
  2045.  
  2046. RPCRTAPI
  2047. unsigned long
  2048. RPC_ENTRY
  2049. NdrConformantVaryingStructMemorySize(
  2050.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2051.     PFORMAT_STRING                      pFormat
  2052.     );
  2053.  
  2054. RPCRTAPI
  2055. unsigned long
  2056. RPC_ENTRY
  2057. NdrComplexStructMemorySize(
  2058.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2059.     PFORMAT_STRING                      pFormat
  2060.     );
  2061.  
  2062. /* Arrays */
  2063.  
  2064. RPCRTAPI
  2065. unsigned long
  2066. RPC_ENTRY
  2067. NdrFixedArrayMemorySize(
  2068.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2069.     PFORMAT_STRING                      pFormat
  2070.     );
  2071.  
  2072. RPCRTAPI
  2073. unsigned long
  2074. RPC_ENTRY
  2075. NdrConformantArrayMemorySize(
  2076.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2077.     PFORMAT_STRING                      pFormat
  2078.     );
  2079.  
  2080. RPCRTAPI
  2081. unsigned long
  2082. RPC_ENTRY
  2083. NdrConformantVaryingArrayMemorySize(
  2084.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2085.     PFORMAT_STRING                      pFormat
  2086.     );
  2087.  
  2088. RPCRTAPI
  2089. unsigned long
  2090. RPC_ENTRY
  2091. NdrVaryingArrayMemorySize(
  2092.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2093.     PFORMAT_STRING                      pFormat
  2094.     );
  2095.  
  2096. RPCRTAPI
  2097. unsigned long
  2098. RPC_ENTRY
  2099. NdrComplexArrayMemorySize(
  2100.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2101.     PFORMAT_STRING                      pFormat
  2102.     );
  2103.  
  2104. /* Strings */
  2105.  
  2106. RPCRTAPI
  2107. unsigned long
  2108. RPC_ENTRY
  2109. NdrConformantStringMemorySize(
  2110.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2111.     PFORMAT_STRING                      pFormat
  2112.     );
  2113.  
  2114. RPCRTAPI
  2115. unsigned long
  2116. RPC_ENTRY
  2117. NdrNonConformantStringMemorySize(
  2118.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2119.     PFORMAT_STRING                      pFormat
  2120.     );
  2121.  
  2122. /* Unions */
  2123.  
  2124. RPCRTAPI
  2125. unsigned long
  2126. RPC_ENTRY
  2127. NdrEncapsulatedUnionMemorySize(
  2128.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2129.     PFORMAT_STRING                      pFormat
  2130.     );
  2131.  
  2132. RPCRTAPI
  2133. unsigned long
  2134. RPC_ENTRY
  2135. NdrNonEncapsulatedUnionMemorySize(
  2136.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2137.     PFORMAT_STRING                      pFormat
  2138.     );
  2139.  
  2140. /* Transmit as and represent as*/
  2141.  
  2142. RPCRTAPI
  2143. unsigned long
  2144. RPC_ENTRY
  2145. NdrXmitOrRepAsMemorySize(
  2146.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2147.     PFORMAT_STRING                      pFormat
  2148.     );
  2149.  
  2150. /* User_marshal */
  2151.  
  2152. RPCRTAPI
  2153. unsigned long
  2154. RPC_ENTRY
  2155. NdrUserMarshalMemorySize(
  2156.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2157.     PFORMAT_STRING                      pFormat
  2158.     );
  2159.  
  2160. /* Cairo Interface pointer */
  2161.  
  2162. RPCRTAPI
  2163. unsigned long
  2164. RPC_ENTRY
  2165. NdrInterfacePointerMemorySize(
  2166.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2167.     PFORMAT_STRING                      pFormat
  2168.     );
  2169.  
  2170. /*
  2171.  * Freeing routines
  2172.  */
  2173.  
  2174. RPCRTAPI
  2175. void
  2176. RPC_ENTRY
  2177. NdrPointerFree(
  2178.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2179.     unsigned char __RPC_FAR *           pMemory,
  2180.     PFORMAT_STRING                      pFormat
  2181.     );
  2182.  
  2183. /* Structures */
  2184.  
  2185. RPCRTAPI
  2186. void
  2187. RPC_ENTRY
  2188. NdrSimpleStructFree(
  2189.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2190.     unsigned char __RPC_FAR *           pMemory,
  2191.     PFORMAT_STRING                      pFormat
  2192.     );
  2193.  
  2194. RPCRTAPI
  2195. void
  2196. RPC_ENTRY
  2197. NdrConformantStructFree(
  2198.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2199.     unsigned char __RPC_FAR *           pMemory,
  2200.     PFORMAT_STRING                      pFormat
  2201.     );
  2202.  
  2203. RPCRTAPI
  2204. void
  2205. RPC_ENTRY
  2206. NdrConformantVaryingStructFree(
  2207.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2208.     unsigned char __RPC_FAR *           pMemory,
  2209.     PFORMAT_STRING                      pFormat
  2210.     );
  2211.  
  2212. RPCRTAPI
  2213. void
  2214. RPC_ENTRY
  2215. NdrComplexStructFree(
  2216.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2217.     unsigned char __RPC_FAR *           pMemory,
  2218.     PFORMAT_STRING                      pFormat
  2219.     );
  2220.  
  2221. /* Arrays */
  2222.  
  2223. RPCRTAPI
  2224. void
  2225. RPC_ENTRY
  2226. NdrFixedArrayFree(
  2227.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2228.     unsigned char __RPC_FAR *           pMemory,
  2229.     PFORMAT_STRING                      pFormat
  2230.     );
  2231.  
  2232. RPCRTAPI
  2233. void
  2234. RPC_ENTRY
  2235. NdrConformantArrayFree(
  2236.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2237.     unsigned char __RPC_FAR *           pMemory,
  2238.     PFORMAT_STRING                      pFormat
  2239.     );
  2240.  
  2241. RPCRTAPI
  2242. void
  2243. RPC_ENTRY
  2244. NdrConformantVaryingArrayFree(
  2245.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2246.     unsigned char __RPC_FAR *           pMemory,
  2247.     PFORMAT_STRING                      pFormat
  2248.     );
  2249.  
  2250. RPCRTAPI
  2251. void
  2252. RPC_ENTRY
  2253. NdrVaryingArrayFree(
  2254.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2255.     unsigned char __RPC_FAR *           pMemory,
  2256.     PFORMAT_STRING                      pFormat
  2257.     );
  2258.  
  2259. RPCRTAPI
  2260. void
  2261. RPC_ENTRY
  2262. NdrComplexArrayFree(
  2263.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2264.     unsigned char __RPC_FAR *           pMemory,
  2265.     PFORMAT_STRING                      pFormat
  2266.     );
  2267.  
  2268. /* Unions */
  2269.  
  2270. RPCRTAPI
  2271. void
  2272. RPC_ENTRY
  2273. NdrEncapsulatedUnionFree(
  2274.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2275.     unsigned char __RPC_FAR *           pMemory,
  2276.     PFORMAT_STRING                      pFormat
  2277.     );
  2278.  
  2279. RPCRTAPI
  2280. void
  2281. RPC_ENTRY
  2282. NdrNonEncapsulatedUnionFree(
  2283.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2284.     unsigned char __RPC_FAR *           pMemory,
  2285.     PFORMAT_STRING                      pFormat
  2286.     );
  2287.  
  2288. /* Byte count */
  2289.  
  2290. RPCRTAPI
  2291. void
  2292. RPC_ENTRY
  2293. NdrByteCountPointerFree(
  2294.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2295.     unsigned char __RPC_FAR *           pMemory,
  2296.     PFORMAT_STRING                      pFormat
  2297.     );
  2298.  
  2299. /* Transmit as and represent as*/
  2300.  
  2301. RPCRTAPI
  2302. void
  2303. RPC_ENTRY
  2304. NdrXmitOrRepAsFree(
  2305.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2306.     unsigned char __RPC_FAR *           pMemory,
  2307.     PFORMAT_STRING                      pFormat
  2308.     );
  2309.  
  2310. /* User_marshal */
  2311.  
  2312. RPCRTAPI
  2313. void
  2314. RPC_ENTRY
  2315. NdrUserMarshalFree(
  2316.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2317.     unsigned char __RPC_FAR *           pMemory,
  2318.     PFORMAT_STRING                      pFormat
  2319.     );
  2320.  
  2321. /* Cairo Interface pointer */
  2322.  
  2323. RPCRTAPI
  2324. void
  2325. RPC_ENTRY
  2326. NdrInterfacePointerFree(
  2327.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2328.     unsigned char __RPC_FAR *           pMemory,
  2329.     PFORMAT_STRING                      pFormat
  2330.     );
  2331.  
  2332. /*
  2333.  * Endian conversion routine.
  2334.  */
  2335.  
  2336. RPCRTAPI
  2337. void
  2338. RPC_ENTRY
  2339. NdrConvert2(
  2340.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2341.     PFORMAT_STRING                      pFormat,
  2342.     long                                NumberParams
  2343.     );
  2344.  
  2345. RPCRTAPI
  2346. void
  2347. RPC_ENTRY
  2348. NdrConvert(
  2349.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2350.     PFORMAT_STRING                      pFormat
  2351.     );
  2352.  
  2353. #define USER_MARSHAL_FC_BYTE         1
  2354. #define USER_MARSHAL_FC_CHAR         2
  2355. #define USER_MARSHAL_FC_SMALL        3
  2356. #define USER_MARSHAL_FC_USMALL       4
  2357. #define USER_MARSHAL_FC_WCHAR        5
  2358. #define USER_MARSHAL_FC_SHORT        6
  2359. #define USER_MARSHAL_FC_USHORT       7
  2360. #define USER_MARSHAL_FC_LONG         8
  2361. #define USER_MARSHAL_FC_ULONG        9
  2362. #define USER_MARSHAL_FC_FLOAT       10
  2363. #define USER_MARSHAL_FC_HYPER       11
  2364. #define USER_MARSHAL_FC_DOUBLE      12
  2365.  
  2366. RPCRTAPI
  2367. unsigned char __RPC_FAR *
  2368. RPC_ENTRY
  2369. NdrUserMarshalSimpleTypeConvert(
  2370.     unsigned long * pFlags,
  2371.     unsigned char * pBuffer,
  2372.     unsigned char   FormatChar
  2373.     );
  2374.  
  2375. /*
  2376.  * Auxilary routines
  2377.  */
  2378.  
  2379. RPCRTAPI
  2380. void
  2381. RPC_ENTRY
  2382. NdrClientInitializeNew(
  2383.     PRPC_MESSAGE                        pRpcMsg,
  2384.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2385.     PMIDL_STUB_DESC                     pStubDescriptor,
  2386.     unsigned int                        ProcNum
  2387.     );
  2388.  
  2389. RPCRTAPI
  2390. unsigned char __RPC_FAR *
  2391. RPC_ENTRY
  2392. NdrServerInitializeNew(
  2393.     PRPC_MESSAGE                        pRpcMsg,
  2394.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2395.     PMIDL_STUB_DESC                     pStubDescriptor
  2396.     );
  2397.  
  2398. RPCRTAPI
  2399. void
  2400. RPC_ENTRY
  2401. NdrServerInitializePartial(
  2402.     PRPC_MESSAGE                        pRpcMsg,
  2403.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2404.     PMIDL_STUB_DESC                     pStubDescriptor,
  2405.     unsigned long                       RequestedBufferSize
  2406.     );
  2407.  
  2408. RPCRTAPI
  2409. void
  2410. RPC_ENTRY
  2411. NdrClientInitialize(
  2412.     PRPC_MESSAGE                        pRpcMsg,
  2413.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2414.     PMIDL_STUB_DESC                     pStubDescriptor,
  2415.     unsigned int                        ProcNum
  2416.     );
  2417.  
  2418. RPCRTAPI
  2419. unsigned char __RPC_FAR *
  2420. RPC_ENTRY
  2421. NdrServerInitialize(
  2422.     PRPC_MESSAGE                        pRpcMsg,
  2423.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2424.     PMIDL_STUB_DESC                     pStubDescriptor
  2425.     );
  2426.  
  2427. RPCRTAPI
  2428. unsigned char __RPC_FAR *
  2429. RPC_ENTRY
  2430. NdrServerInitializeUnmarshall (
  2431.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2432.     PMIDL_STUB_DESC                     pStubDescriptor,
  2433.     PRPC_MESSAGE                        pRpcMsg
  2434.     );
  2435.  
  2436. RPCRTAPI
  2437. void
  2438. RPC_ENTRY
  2439. NdrServerInitializeMarshall (
  2440.     PRPC_MESSAGE                        pRpcMsg,
  2441.     PMIDL_STUB_MESSAGE                  pStubMsg
  2442.     );
  2443.  
  2444. RPCRTAPI
  2445. unsigned char __RPC_FAR *
  2446. RPC_ENTRY
  2447. NdrGetBuffer(
  2448.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2449.     unsigned long                       BufferLength,
  2450.     RPC_BINDING_HANDLE                  Handle
  2451.     );
  2452.  
  2453. RPCRTAPI
  2454. unsigned char __RPC_FAR *
  2455. RPC_ENTRY
  2456. NdrNsGetBuffer(
  2457.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2458.     unsigned long                       BufferLength,
  2459.     RPC_BINDING_HANDLE                  Handle
  2460.     );
  2461.  
  2462. RPCRTAPI
  2463. unsigned char __RPC_FAR *
  2464. RPC_ENTRY
  2465. NdrGetPipeBuffer(
  2466.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2467.     unsigned long                       BufferLength,
  2468.     RPC_BINDING_HANDLE                  Handle );
  2469.  
  2470. RPCRTAPI
  2471. void
  2472. RPC_ENTRY
  2473. NdrGetPartialBuffer(
  2474.     PMIDL_STUB_MESSAGE                  pStubMsg );
  2475.  
  2476. RPCRTAPI
  2477. unsigned char __RPC_FAR *
  2478. RPC_ENTRY
  2479. NdrSendReceive(
  2480.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2481.     unsigned char __RPC_FAR*            pBufferEnd
  2482.     );
  2483.  
  2484. RPCRTAPI
  2485. unsigned char __RPC_FAR *
  2486. RPC_ENTRY
  2487. NdrNsSendReceive(
  2488.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2489.     unsigned char __RPC_FAR *           pBufferEnd,
  2490.     RPC_BINDING_HANDLE __RPC_FAR *      pAutoHandle
  2491.     );
  2492.  
  2493. RPCRTAPI
  2494. void
  2495. RPC_ENTRY
  2496. NdrPipeSendReceive(
  2497.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2498.     PNDR_PIPE_DESC                      pPipeDesc
  2499.     );
  2500.  
  2501. RPCRTAPI
  2502. void
  2503. RPC_ENTRY
  2504. NdrFreeBuffer(
  2505.     PMIDL_STUB_MESSAGE                  pStubMsg
  2506.     );
  2507.  
  2508. RPCRTAPI
  2509. RPC_STATUS
  2510. RPC_ENTRY
  2511. NdrGetDcomProtocolVersion(
  2512.     PMIDL_STUB_MESSAGE   pStubMsg,
  2513.     RPC_VERSION *        pVersion );
  2514.  
  2515.  
  2516. /*
  2517.  * Pipe specific calls
  2518.  */
  2519.  
  2520. RPCRTAPI
  2521. void
  2522. RPC_ENTRY
  2523. NdrPipesInitialize(
  2524.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2525.     PFORMAT_STRING                      pParamDesc,
  2526.     PNDR_PIPE_DESC                      pPipeDesc,
  2527.     PNDR_PIPE_MESSAGE                   pPipeMsg,
  2528.     char             __RPC_FAR *        pStackTop,
  2529.     unsigned long                       NumberParams );
  2530.  
  2531. RPCRTAPI
  2532. void
  2533. RPC_ENTRY
  2534. NdrPipePull(
  2535.     char          __RPC_FAR *           pState,
  2536.     void          __RPC_FAR *           buf,
  2537.     unsigned long                       esize,
  2538.     unsigned long __RPC_FAR *           ecount );
  2539.  
  2540. RPCRTAPI
  2541. void
  2542. RPC_ENTRY
  2543. NdrPipePush(
  2544.     char          __RPC_FAR *           pState,
  2545.     void          __RPC_FAR *           buf,
  2546.     unsigned long                       ecount );
  2547.  
  2548. RPCRTAPI
  2549. void
  2550. RPC_ENTRY
  2551. NdrIsAppDoneWithPipes(
  2552.     PNDR_PIPE_DESC                      pPipeDesc
  2553.     );
  2554.  
  2555. RPCRTAPI
  2556. void
  2557. RPC_ENTRY
  2558. NdrPipesDone(
  2559.     PMIDL_STUB_MESSAGE                  pStubMsg
  2560.     );
  2561.  
  2562.  
  2563. /*
  2564.  * Interpeter calls.
  2565.  */
  2566.  
  2567. /* client */
  2568.  
  2569. CLIENT_CALL_RETURN RPC_VAR_ENTRY
  2570. NdrClientCall2(
  2571.     PMIDL_STUB_DESC                     pStubDescriptor,
  2572.     PFORMAT_STRING                      pFormat,
  2573.     ...
  2574.     );
  2575.  
  2576. CLIENT_CALL_RETURN RPC_VAR_ENTRY
  2577. NdrClientCall(
  2578.     PMIDL_STUB_DESC                     pStubDescriptor,
  2579.     PFORMAT_STRING                      pFormat,
  2580.     ...
  2581.     );
  2582.  
  2583. CLIENT_CALL_RETURN RPC_VAR_ENTRY
  2584. NdrAsyncClientCall(
  2585.     PMIDL_STUB_DESC     pStubDescriptor,
  2586.     PFORMAT_STRING      pFormat,
  2587.     ...
  2588.     );
  2589.  
  2590. CLIENT_CALL_RETURN RPC_VAR_ENTRY
  2591. NdrDcomAsyncClientCall(
  2592.     PMIDL_STUB_DESC     pStubDescriptor,
  2593.     PFORMAT_STRING      pFormat,
  2594.     ...
  2595.     );
  2596.  
  2597. /* server */
  2598. typedef enum {
  2599.     STUB_UNMARSHAL,
  2600.     STUB_CALL_SERVER,
  2601.     STUB_MARSHAL,
  2602.     STUB_CALL_SERVER_NO_HRESULT
  2603. }STUB_PHASE;
  2604.  
  2605. typedef enum {
  2606.     PROXY_CALCSIZE,
  2607.     PROXY_GETBUFFER,
  2608.     PROXY_MARSHAL,
  2609.     PROXY_SENDRECEIVE,
  2610.     PROXY_UNMARSHAL
  2611. }PROXY_PHASE;
  2612.  
  2613. struct IRpcStubBuffer;      // Forward declaration
  2614.  
  2615. // Raw RPC only
  2616. RPCRTAPI
  2617. void
  2618. RPC_ENTRY
  2619. NdrAsyncServerCall(
  2620.     PRPC_MESSAGE                        pRpcMsg
  2621.     );
  2622.  
  2623. // old dcom async scheme
  2624. RPCRTAPI
  2625. long
  2626. RPC_ENTRY
  2627. NdrAsyncStubCall(
  2628.     struct IRpcStubBuffer *             pThis,
  2629.     struct IRpcChannelBuffer *          pChannel,
  2630.     PRPC_MESSAGE                        pRpcMsg,
  2631.     unsigned long *                     pdwStubPhase
  2632.     );
  2633.  
  2634. // async uuid
  2635. RPCRTAPI
  2636. long
  2637. RPC_ENTRY
  2638. NdrDcomAsyncStubCall(
  2639.     struct IRpcStubBuffer            *  pThis,
  2640.     struct IRpcChannelBuffer         *  pChannel,
  2641.     PRPC_MESSAGE                        pRpcMsg,
  2642.     unsigned long                    *  pdwStubPhase
  2643.     );
  2644.  
  2645. RPCRTAPI
  2646. long
  2647. RPC_ENTRY
  2648. NdrStubCall2(
  2649.     struct IRpcStubBuffer __RPC_FAR *    pThis,
  2650.     struct IRpcChannelBuffer __RPC_FAR * pChannel,
  2651.     PRPC_MESSAGE                         pRpcMsg,
  2652.     unsigned long __RPC_FAR *            pdwStubPhase
  2653.     );
  2654.  
  2655. RPCRTAPI
  2656. void
  2657. RPC_ENTRY
  2658. NdrServerCall2(
  2659.     PRPC_MESSAGE                        pRpcMsg
  2660.     );
  2661.  
  2662. RPCRTAPI
  2663. long
  2664. RPC_ENTRY
  2665. NdrStubCall (
  2666.     struct IRpcStubBuffer __RPC_FAR *    pThis,
  2667.     struct IRpcChannelBuffer __RPC_FAR * pChannel,
  2668.     PRPC_MESSAGE                         pRpcMsg,
  2669.     unsigned long __RPC_FAR *            pdwStubPhase
  2670.     );
  2671.  
  2672. RPCRTAPI
  2673. void
  2674. RPC_ENTRY
  2675. NdrServerCall(
  2676.     PRPC_MESSAGE                        pRpcMsg
  2677.     );
  2678.  
  2679. RPCRTAPI
  2680. int
  2681. RPC_ENTRY
  2682. NdrServerUnmarshall(
  2683.     struct IRpcChannelBuffer __RPC_FAR * pChannel,
  2684.     PRPC_MESSAGE                         pRpcMsg,
  2685.     PMIDL_STUB_MESSAGE                   pStubMsg,
  2686.     PMIDL_STUB_DESC                      pStubDescriptor,
  2687.     PFORMAT_STRING                       pFormat,
  2688.     void __RPC_FAR *                     pParamList
  2689.     );
  2690.  
  2691. RPCRTAPI
  2692. void
  2693. RPC_ENTRY
  2694. NdrServerMarshall(
  2695.     struct IRpcStubBuffer __RPC_FAR *    pThis,
  2696.     struct IRpcChannelBuffer __RPC_FAR * pChannel,
  2697.     PMIDL_STUB_MESSAGE                   pStubMsg,
  2698.     PFORMAT_STRING                       pFormat
  2699.     );
  2700.  
  2701. /* Comm and Fault status */
  2702.  
  2703. RPCRTAPI
  2704. RPC_STATUS
  2705. RPC_ENTRY
  2706. NdrMapCommAndFaultStatus(
  2707.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2708.     unsigned long __RPC_FAR *                       pCommStatus,
  2709.     unsigned long __RPC_FAR *                       pFaultStatus,
  2710.     RPC_STATUS                          Status
  2711.     );
  2712.  
  2713. /* Helper routines */
  2714.  
  2715. RPCRTAPI
  2716. int
  2717. RPC_ENTRY
  2718. NdrSH_UPDecision(
  2719.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2720.     unsigned char           __RPC_FAR *__RPC_FAR *          pPtrInMem,
  2721.     RPC_BUFPTR                          pBuffer
  2722.     );
  2723.  
  2724. RPCRTAPI
  2725. int
  2726. RPC_ENTRY
  2727. NdrSH_TLUPDecision(
  2728.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2729.     unsigned char           __RPC_FAR *__RPC_FAR *          pPtrInMem
  2730.     );
  2731.  
  2732. RPCRTAPI
  2733. int
  2734. RPC_ENTRY
  2735. NdrSH_TLUPDecisionBuffer(
  2736.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2737.     unsigned char           __RPC_FAR *__RPC_FAR *          pPtrInMem
  2738.     );
  2739.  
  2740. RPCRTAPI
  2741. int
  2742. RPC_ENTRY
  2743. NdrSH_IfAlloc(
  2744.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2745.     unsigned char           __RPC_FAR *__RPC_FAR *          pPtrInMem,
  2746.     unsigned long                       Count
  2747.     );
  2748.  
  2749. RPCRTAPI
  2750. int
  2751. RPC_ENTRY
  2752. NdrSH_IfAllocRef(
  2753.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2754.     unsigned char           __RPC_FAR *__RPC_FAR *          pPtrInMem,
  2755.     unsigned long                       Count
  2756.     );
  2757.  
  2758. RPCRTAPI
  2759. int
  2760. RPC_ENTRY
  2761. NdrSH_IfAllocSet(
  2762.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2763.     unsigned char           __RPC_FAR *__RPC_FAR *          pPtrInMem,
  2764.     unsigned long                       Count
  2765.     );
  2766.  
  2767. RPCRTAPI
  2768. RPC_BUFPTR
  2769. RPC_ENTRY
  2770. NdrSH_IfCopy(
  2771.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2772.     unsigned char           __RPC_FAR *__RPC_FAR *          pPtrInMem,
  2773.     unsigned long                       Count
  2774.     );
  2775.  
  2776. RPCRTAPI
  2777. RPC_BUFPTR
  2778. RPC_ENTRY
  2779. NdrSH_IfAllocCopy(
  2780.     PMIDL_STUB_MESSAGE                  pStubMsg,
  2781.     unsigned char           __RPC_FAR *__RPC_FAR *          pPtrInMem,
  2782.     unsigned long                       Count
  2783.     );
  2784.  
  2785. RPCRTAPI
  2786. unsigned long
  2787. RPC_ENTRY
  2788. NdrSH_Copy(
  2789.     unsigned char           __RPC_FAR *         pStubMsg,
  2790.     unsigned char           __RPC_FAR *         pPtrInMem,
  2791.     unsigned long                       Count
  2792.     );
  2793.  
  2794. RPCRTAPI
  2795. void
  2796. RPC_ENTRY
  2797. NdrSH_IfFree(
  2798.     PMIDL_STUB_MESSAGE                  pMessage,
  2799.     unsigned char           __RPC_FAR *         pPtr );
  2800.  
  2801.  
  2802. RPCRTAPI
  2803. RPC_BUFPTR
  2804. RPC_ENTRY
  2805. NdrSH_StringMarshall(
  2806.     PMIDL_STUB_MESSAGE                  pMessage,
  2807.     unsigned char           __RPC_FAR *         pMemory,
  2808.     unsigned long                       Count,
  2809.     int                                 Size );
  2810.  
  2811. RPCRTAPI
  2812. RPC_BUFPTR
  2813. RPC_ENTRY
  2814. NdrSH_StringUnMarshall(
  2815.     PMIDL_STUB_MESSAGE                  pMessage,
  2816.     unsigned char           __RPC_FAR *__RPC_FAR *          pMemory,
  2817.     int                                 Size );
  2818.  
  2819. /****************************************************************************
  2820.     MIDL 2.0 memory package: rpc_ss_* rpc_sm_*
  2821.  ****************************************************************************/
  2822.  
  2823. typedef void __RPC_FAR * RPC_SS_THREAD_HANDLE;
  2824.  
  2825. typedef void __RPC_FAR * __RPC_API
  2826. RPC_CLIENT_ALLOC (
  2827.     IN size_t Size
  2828.     );
  2829.  
  2830. typedef void __RPC_API
  2831. RPC_CLIENT_FREE (
  2832.     IN void __RPC_FAR * Ptr
  2833.     );
  2834.  
  2835. /*++
  2836.      RpcSs* package
  2837. --*/
  2838.  
  2839. RPCRTAPI
  2840. void __RPC_FAR *
  2841. RPC_ENTRY
  2842. RpcSsAllocate (
  2843.     IN size_t Size
  2844.     );
  2845.  
  2846. RPCRTAPI
  2847. void
  2848. RPC_ENTRY
  2849. RpcSsDisableAllocate (
  2850.     void
  2851.     );
  2852.  
  2853. RPCRTAPI
  2854. void
  2855. RPC_ENTRY
  2856. RpcSsEnableAllocate (
  2857.     void
  2858.     );
  2859.  
  2860. RPCRTAPI
  2861. void
  2862. RPC_ENTRY
  2863. RpcSsFree (
  2864.     IN void __RPC_FAR * NodeToFree
  2865.     );
  2866.  
  2867. RPCRTAPI
  2868. RPC_SS_THREAD_HANDLE
  2869. RPC_ENTRY
  2870. RpcSsGetThreadHandle (
  2871.     void
  2872.     );
  2873.  
  2874. RPCRTAPI
  2875. void
  2876. RPC_ENTRY
  2877. RpcSsSetClientAllocFree (
  2878.     IN RPC_CLIENT_ALLOC __RPC_FAR * ClientAlloc,
  2879.     IN RPC_CLIENT_FREE __RPC_FAR * ClientFree
  2880.     );
  2881.  
  2882. RPCRTAPI
  2883. void
  2884. RPC_ENTRY
  2885. RpcSsSetThreadHandle (
  2886.     IN RPC_SS_THREAD_HANDLE Id
  2887.     );
  2888.  
  2889. RPCRTAPI
  2890. void
  2891. RPC_ENTRY
  2892. RpcSsSwapClientAllocFree (
  2893.     IN RPC_CLIENT_ALLOC __RPC_FAR * ClientAlloc,
  2894.     IN RPC_CLIENT_FREE __RPC_FAR * ClientFree,
  2895.     OUT RPC_CLIENT_ALLOC __RPC_FAR * __RPC_FAR * OldClientAlloc,
  2896.     OUT RPC_CLIENT_FREE __RPC_FAR * __RPC_FAR * OldClientFree
  2897.     );
  2898.  
  2899. /*++
  2900.      RpcSm* package
  2901. --*/
  2902.  
  2903. RPCRTAPI
  2904. void __RPC_FAR *
  2905. RPC_ENTRY
  2906. RpcSmAllocate (
  2907.     IN  size_t          Size,
  2908.     OUT RPC_STATUS __RPC_FAR *    pStatus
  2909.     );
  2910.  
  2911. RPCRTAPI
  2912. RPC_STATUS
  2913. RPC_ENTRY
  2914. RpcSmClientFree (
  2915.     IN  void __RPC_FAR * pNodeToFree
  2916.     );
  2917.  
  2918. RPCRTAPI
  2919. RPC_STATUS
  2920. RPC_ENTRY
  2921. RpcSmDestroyClientContext (
  2922.     IN void __RPC_FAR * __RPC_FAR * ContextHandle
  2923.     );
  2924.  
  2925. RPCRTAPI
  2926. RPC_STATUS
  2927. RPC_ENTRY
  2928. RpcSmDisableAllocate (
  2929.     void
  2930.     );
  2931.  
  2932. RPCRTAPI
  2933. RPC_STATUS
  2934. RPC_ENTRY
  2935. RpcSmEnableAllocate (
  2936.     void
  2937.     );
  2938.  
  2939. RPCRTAPI
  2940. RPC_STATUS
  2941. RPC_ENTRY
  2942. RpcSmFree (
  2943.     IN void __RPC_FAR * NodeToFree
  2944.     );
  2945.  
  2946. RPCRTAPI
  2947. RPC_SS_THREAD_HANDLE
  2948. RPC_ENTRY
  2949. RpcSmGetThreadHandle (
  2950.     OUT RPC_STATUS __RPC_FAR *    pStatus
  2951.     );
  2952.  
  2953. RPCRTAPI
  2954. RPC_STATUS
  2955. RPC_ENTRY
  2956. RpcSmSetClientAllocFree (
  2957.     IN RPC_CLIENT_ALLOC __RPC_FAR * ClientAlloc,
  2958.     IN RPC_CLIENT_FREE __RPC_FAR * ClientFree
  2959.     );
  2960.  
  2961. RPCRTAPI
  2962. RPC_STATUS
  2963. RPC_ENTRY
  2964. RpcSmSetThreadHandle (
  2965.     IN RPC_SS_THREAD_HANDLE Id
  2966.     );
  2967.  
  2968. RPCRTAPI
  2969. RPC_STATUS
  2970. RPC_ENTRY
  2971. RpcSmSwapClientAllocFree (
  2972.     IN RPC_CLIENT_ALLOC __RPC_FAR * ClientAlloc,
  2973.     IN RPC_CLIENT_FREE __RPC_FAR * ClientFree,
  2974.     OUT RPC_CLIENT_ALLOC __RPC_FAR * __RPC_FAR * OldClientAlloc,
  2975.     OUT RPC_CLIENT_FREE __RPC_FAR * __RPC_FAR * OldClientFree
  2976.     );
  2977.  
  2978. /*++
  2979.      Ndr stub entry points
  2980. --*/
  2981.  
  2982. RPCRTAPI
  2983. void
  2984. RPC_ENTRY
  2985. NdrRpcSsEnableAllocate(
  2986.     PMIDL_STUB_MESSAGE      pMessage );
  2987.  
  2988. RPCRTAPI
  2989. void
  2990. RPC_ENTRY
  2991. NdrRpcSsDisableAllocate(
  2992.     PMIDL_STUB_MESSAGE      pMessage );
  2993.  
  2994. RPCRTAPI
  2995. void
  2996. RPC_ENTRY
  2997. NdrRpcSmSetClientToOsf(
  2998.     PMIDL_STUB_MESSAGE      pMessage );
  2999.  
  3000. RPCRTAPI
  3001. void __RPC_FAR *
  3002. RPC_ENTRY
  3003. NdrRpcSmClientAllocate (
  3004.     IN size_t Size
  3005.     );
  3006.  
  3007. RPCRTAPI
  3008. void
  3009. RPC_ENTRY
  3010. NdrRpcSmClientFree (
  3011.     IN void __RPC_FAR * NodeToFree
  3012.     );
  3013.  
  3014. RPCRTAPI
  3015. void __RPC_FAR *
  3016. RPC_ENTRY
  3017. NdrRpcSsDefaultAllocate (
  3018.     IN size_t Size
  3019.     );
  3020.  
  3021. RPCRTAPI
  3022. void
  3023. RPC_ENTRY
  3024. NdrRpcSsDefaultFree (
  3025.     IN void __RPC_FAR * NodeToFree
  3026.     );
  3027.  
  3028. /****************************************************************************
  3029.     end of memory package: rpc_ss_* rpc_sm_*
  3030.  ****************************************************************************/
  3031.  
  3032. /****************************************************************************
  3033.  * Full Pointer APIs
  3034.  ****************************************************************************/
  3035.  
  3036. RPCRTAPI
  3037. PFULL_PTR_XLAT_TABLES
  3038. RPC_ENTRY
  3039. NdrFullPointerXlatInit(
  3040.     unsigned long           NumberOfPointers,
  3041.     XLAT_SIDE               XlatSide
  3042.     );
  3043.  
  3044. RPCRTAPI
  3045. void
  3046. RPC_ENTRY
  3047. NdrFullPointerXlatFree(
  3048.     PFULL_PTR_XLAT_TABLES   pXlatTables
  3049.     );
  3050.  
  3051. RPCRTAPI
  3052. int
  3053. RPC_ENTRY
  3054. NdrFullPointerQueryPointer(
  3055.     PFULL_PTR_XLAT_TABLES   pXlatTables,
  3056.     void __RPC_FAR *                    pPointer,
  3057.     unsigned char           QueryType,
  3058.     unsigned long __RPC_FAR *           pRefId
  3059.     );
  3060.  
  3061. RPCRTAPI
  3062. int
  3063. RPC_ENTRY
  3064. NdrFullPointerQueryRefId(
  3065.     PFULL_PTR_XLAT_TABLES   pXlatTables,
  3066.     unsigned long           RefId,
  3067.     unsigned char           QueryType,
  3068.     void __RPC_FAR *__RPC_FAR *                 ppPointer
  3069.     );
  3070.  
  3071. RPCRTAPI
  3072. void
  3073. RPC_ENTRY
  3074. NdrFullPointerInsertRefId(
  3075.     PFULL_PTR_XLAT_TABLES   pXlatTables,
  3076.     unsigned long           RefId,
  3077.     void __RPC_FAR *                    pPointer
  3078.     );
  3079.  
  3080. RPCRTAPI
  3081. int
  3082. RPC_ENTRY
  3083. NdrFullPointerFree(
  3084.     PFULL_PTR_XLAT_TABLES   pXlatTables,
  3085.     void __RPC_FAR *                    Pointer
  3086.     );
  3087.  
  3088. RPCRTAPI
  3089. void __RPC_FAR *
  3090. RPC_ENTRY
  3091. NdrAllocate(
  3092.     PMIDL_STUB_MESSAGE      pStubMsg,
  3093.     size_t                  Len
  3094.     );
  3095.  
  3096. RPCRTAPI
  3097. void
  3098. RPC_ENTRY
  3099. NdrClearOutParameters(
  3100.     PMIDL_STUB_MESSAGE      pStubMsg,
  3101.     PFORMAT_STRING          pFormat,
  3102.     void __RPC_FAR *        ArgAddr
  3103.     );
  3104.  
  3105.  
  3106. /****************************************************************************
  3107.  * Proxy APIs
  3108.  ****************************************************************************/
  3109.  
  3110. RPCRTAPI
  3111. void __RPC_FAR *
  3112. RPC_ENTRY
  3113. NdrOleAllocate (
  3114.     IN size_t Size
  3115.     );
  3116.  
  3117. RPCRTAPI
  3118. void
  3119. RPC_ENTRY
  3120. NdrOleFree (
  3121.     IN void __RPC_FAR * NodeToFree
  3122.     );
  3123.  
  3124. #ifdef CONST_VTABLE
  3125. #define CONST_VTBL const
  3126. #else
  3127. #define CONST_VTBL
  3128. #endif
  3129.  
  3130. /****************************************************************************
  3131.  * Special things for VC5 Com support
  3132.  ****************************************************************************/
  3133.  
  3134. #ifndef DECLSPEC_SELECTANY
  3135. #if (_MSC_VER >= 1100) || (__BORLANDC__ >= 0x0550)
  3136. #define DECLSPEC_SELECTANY __declspec(selectany)
  3137. #else
  3138. #define DECLSPEC_SELECTANY
  3139. #endif
  3140. #endif
  3141.  
  3142. #ifndef DECLSPEC_NOVTABLE
  3143. #if ((_MSC_VER >= 1100) || (__BORLANDC__ >= 0x0550)) && defined(__cplusplus)
  3144. #define DECLSPEC_NOVTABLE __declspec(novtable)
  3145. #else
  3146. #define DECLSPEC_NOVTABLE
  3147. #endif
  3148. #endif
  3149.  
  3150. #ifndef DECLSPEC_UUID
  3151. #if ((_MSC_VER >= 1100) || (__BORLANDC__ >= 0x0550)) && defined(__cplusplus)
  3152. #define DECLSPEC_UUID(x) __declspec(uuid(x))
  3153. #else
  3154. #define DECLSPEC_UUID(x)
  3155. #endif
  3156. #endif
  3157.  
  3158. #define MIDL_INTERFACE(x)   struct DECLSPEC_UUID(x) DECLSPEC_NOVTABLE
  3159.  
  3160. #if (_MSC_VER >= 1100) || (__BORLANDC__ >= 0x0550)
  3161. #define EXTERN_GUID(itf,l1,s1,s2,c1,c2,c3,c4,c5,c6,c7,c8)  \
  3162.   EXTERN_C const IID DECLSPEC_SELECTANY itf = {l1,s1,s2,{c1,c2,c3,c4,c5,c6,c7,c8}}
  3163. #else
  3164. #define EXTERN_GUID(itf,l1,s1,s2,c1,c2,c3,c4,c5,c6,c7,c8) EXTERN_C const IID itf
  3165. #endif
  3166.  
  3167. /****************************************************************************
  3168.  * UserMarshal information
  3169.  ****************************************************************************/
  3170.  
  3171. typedef struct _NDR_USER_MARSHAL_INFO_LEVEL1
  3172. {
  3173.     void *Buffer;
  3174.     unsigned long BufferSize;
  3175.     void *(__RPC_API * pfnAllocate)(size_t);
  3176.     void (__RPC_API * pfnFree)(void *);
  3177.     struct IRpcChannelBuffer * pRpcChannelBuffer;
  3178.     ULONG_PTR Reserved[5];
  3179. } NDR_USER_MARSHAL_INFO_LEVEL1;
  3180.  
  3181. #if !defined( RC_INVOKED )
  3182. #if _MSC_VER >= 1200
  3183. #pragma warning(push)
  3184. #endif
  3185. #pragma warning(disable:4201)
  3186. #endif
  3187.  
  3188. typedef struct _NDR_USER_MARSHAL_INFO 
  3189. {
  3190.     unsigned long InformationLevel;
  3191.     union {
  3192.         NDR_USER_MARSHAL_INFO_LEVEL1 Level1;
  3193.     };
  3194. } NDR_USER_MARSHAL_INFO;       
  3195.  
  3196. #if !defined( RC_INVOKED )
  3197. #if _MSC_VER >= 1200
  3198. #pragma warning(pop)
  3199. #else
  3200. #pragma warning(default:4201)
  3201. #endif
  3202. #endif
  3203.  
  3204. RPC_STATUS
  3205. RPC_ENTRY
  3206. NdrGetUserMarshalInfo (
  3207.     IN unsigned long *pFlags,
  3208.     IN unsigned long InformationLevel,
  3209.     OUT NDR_USER_MARSHAL_INFO *pMarshalInfo
  3210.     );
  3211.  
  3212. #ifdef __cplusplus
  3213. }
  3214. #endif
  3215.  
  3216. #if defined(__RPC_WIN64__)
  3217. #include <poppack.h>
  3218. #endif
  3219.  
  3220. // Reset the packing level for DOS, Windows and Mac.
  3221.  
  3222. #if defined(__RPC_DOS__) || defined(__RPC_WIN16__) || defined(__RPC_MAC__)
  3223. #pragma pack()
  3224. #endif
  3225.  
  3226. #endif /* __RPCNDR_H__ */
  3227. #pragma option pop /*P_O_Pop*/
  3228.