Annotation of mstools/h/rpcndr.h, revision 1.1.1.4

1.1.1.2   root        1: /*++
                      2: 
                      3: Copyright (c) 1992 Microsoft Corporation
                      4: 
                      5: Module Name:
                      6: 
1.1.1.4 ! root        7:     rpcndr.h
1.1.1.2   root        8: 
                      9: Abstract:
                     10: 
                     11:     Float and double conversion routines.
                     12: 
                     13: Author:
                     14: 
1.1.1.4 ! root       15:     DonnaLi (01-01-91)
1.1.1.2   root       16: 
                     17: Environment:
                     18: 
                     19:     This code should execute in all environments supported by RPC
                     20:     (DOS, Win 3.X, and Win/NT as well as OS2).
                     21: 
                     22: Revision History:
                     23: 
                     24:    DONNALI  08-29-91     Start recording history
                     25:    donnali  09-11-91     change conversion macros
                     26:    donnali  09-18-91     check in files for moving
                     27:    STEVEZ   10-15-91     Merge with NT tree
                     28:    donnali  10-28-91     add prototype
                     29:    donnali  11-19-91     bugfix for strings
                     30:    MIKEMON  12-17-91     DCE runtime API conversion
                     31:    donnali  03-24-92     change rpc public header f
                     32:    STEVEZ   04-04-92     add nsi include
                     33:    mikemon  04-18-92     security support and misc
                     34:    DovhH    04-24-24     Changed signature of <int>_from_ndr
                     35:                          (to unsigned <int>)
                     36:                          Added <base_type>_array_from_ndr routines
                     37: 
                     38: --*/
1.1       root       39: 
                     40: #ifndef __RPCNDR_H__
                     41: #define __RPCNDR_H__
                     42: 
1.1.1.4 ! root       43: // Set the packing level for RPC structures for Dos and Windows.
        !            44: 
        !            45: #if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
        !            46: #pragma pack(2)
        !            47: #endif
        !            48: 
1.1.1.2   root       49: #include "rpcnsip.h"
                     50: 
                     51: #ifdef __cplusplus
                     52: extern "C" {
                     53: #endif
                     54: 
                     55: /*
                     56: 
                     57:      Network Computing Architecture (NCA) definition:
                     58: 
                     59:      Network Data Representation: (NDR) Label format:
                     60:      An unsigned long (32 bits) with the following layout:
                     61: 
                     62:      3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
                     63:      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
                     64:     +---------------+---------------+---------------+-------+-------+
                     65:     |   Reserved    |   Reserved    |Floating point | Int   | Char  |
                     66:     |               |               |Representation | Rep.  | Rep.  |
                     67:     +---------------+---------------+---------------+-------+-------+
                     68: 
                     69:      Where
                     70: 
                     71:          Reserved:
                     72: 
                     73:              Must be zero (0) for NCA 1.5 and NCA 2.0.
                     74: 
                     75:          Floating point Representation is:
                     76: 
                     77:              0 - IEEE
                     78:              1 - VAX
                     79:              2 - Cray
                     80:              3 - IBM
                     81: 
                     82:          Int Rep. is Integer Representation:
                     83: 
                     84:              0 - Big Endian
                     85:              1 - Little Endian
                     86: 
                     87:          Char Rep. is Character Representation:
                     88: 
                     89:              0 - ASCII
                     90:              1 - EBCDIC
                     91: 
                     92:      The Microsoft Local Data Representation (for all platforms which are
                     93:      of interest currently is edefined below:
                     94: 
1.1       root       95: */
                     96: 
1.1.1.2   root       97: #define NDR_CHAR_REP_MASK               (unsigned long)0X0000000FL
                     98: #define NDR_INT_REP_MASK                (unsigned long)0X000000F0L
                     99: #define NDR_FLOAT_REP_MASK              (unsigned long)0X0000FF00L
                    100: 
                    101: #define NDR_LITTLE_ENDIAN               (unsigned long)0X00000010L
                    102: #define NDR_BIG_ENDIAN                  (unsigned long)0X00000000L
                    103: 
                    104: #define NDR_IEEE_FLOAT                  (unsigned long)0X00000000L
                    105: #define NDR_VAX_FLOAT                   (unsigned long)0X00000100L
                    106: 
                    107: #define NDR_ASCII_CHAR                  (unsigned long)0X00000000L
                    108: #define NDR_EBCDIC_CHAR                 (unsigned long)0X00000001L
                    109: 
                    110: #define NDR_LOCAL_DATA_REPRESENTATION   (unsigned long)0X00000010L
                    111: 
                    112: /*
1.1.1.4 ! root      113:  *  Other MIDL base types / predefined types:
        !           114:  */
        !           115: 
        !           116: typedef unsigned char byte;
        !           117: typedef unsigned char boolean;
        !           118: 
        !           119: #ifndef _WCHAR_T_DEFINED
        !           120: typedef unsigned short wchar_t;
        !           121: #define _WCHAR_T_DEFINED
        !           122: #endif
        !           123: 
        !           124: #ifndef _SIZE_T_DEFINED
        !           125: typedef unsigned int size_t;
        !           126: #define _SIZE_T_DEFINED
        !           127: #endif
        !           128: 
        !           129: #ifdef __RPC_DOS__
        !           130: #define __RPC_CALLEE       __far __pascal
        !           131: #endif
        !           132: 
        !           133: #ifdef __RPC_WIN16__
        !           134: #define __RPC_CALLEE       __far __pascal __export
        !           135: #endif
        !           136: 
        !           137: #ifdef __RPC_WIN32__
        !           138: #if   (_MSC_VER >= 800)
        !           139: #define __RPC_CALLEE       __stdcall
        !           140: #else
        !           141: #define __RPC_CALLEE
        !           142: #endif
        !           143: #endif
        !           144: 
        !           145: #ifdef __RPC_OS2_1X__
        !           146: #define __RPC_CALLEE_STUB  __far __pascal __loadds
        !           147: #endif
        !           148: 
        !           149: #ifndef __MIDL_USER_DEFINED
        !           150: #define midl_user_allocate MIDL_user_allocate
        !           151: #define midl_user_free     MIDL_user_free
        !           152: #define __MIDL_USER_DEFINED
        !           153: #endif
        !           154: 
        !           155: 
        !           156: /*
1.1.1.2   root      157:  * Context related definitions:
                    158:  *
                    159:  * Client and Server Contexts.  Just enough of the structure is exposed
                    160:  * to allow access to some public fields
                    161:  *
                    162:  */
                    163: 
1.1.1.4 ! root      164: typedef void __RPC_FAR * NDR_CCONTEXT;
1.1       root      165: typedef struct {void * pad[2]; void * userContext; } * NDR_SCONTEXT;
                    166: 
                    167: #define NDRSContextValue(hContext) (&(hContext)->userContext)
                    168: 
                    169: #define cbNDRContext 20         /* size of context on WIRE */
                    170: 
1.1.1.4 ! root      171: typedef void (__RPC_USER __RPC_FAR * NDR_RUNDOWN)(void __RPC_FAR * context);
1.1       root      172: 
1.1.1.3   root      173: RPC_BINDING_HANDLE RPC_ENTRY
                    174: NDRCContextBinding (
                    175:     IN NDR_CCONTEXT CContext
                    176:     );
                    177: 
1.1       root      178: void RPC_ENTRY
                    179: NDRCContextMarshall (
                    180:         IN  NDR_CCONTEXT CContext,
1.1.1.4 ! root      181:         OUT void __RPC_FAR *pBuff
1.1       root      182:         );
                    183: 
                    184: void RPC_ENTRY
                    185: NDRCContextUnmarshall (
1.1.1.4 ! root      186:         OUT NDR_CCONTEXT __RPC_FAR *pCContext,
1.1.1.2   root      187:         IN  RPC_BINDING_HANDLE hBinding,
1.1.1.4 ! root      188:         IN  void __RPC_FAR *pBuff,
1.1.1.2   root      189:         IN  unsigned long DataRepresentation
1.1       root      190:         );
                    191: 
                    192: void RPC_ENTRY
                    193: NDRSContextMarshall (
                    194:         IN  NDR_SCONTEXT CContext,
1.1.1.4 ! root      195:         OUT void __RPC_FAR *pBuff,
1.1       root      196:         IN  NDR_RUNDOWN userRunDownIn
                    197:         );
                    198: 
                    199: NDR_SCONTEXT RPC_ENTRY
                    200: NDRSContextUnmarshall (
1.1.1.4 ! root      201:     IN  void __RPC_FAR *pBuff,
1.1.1.2   root      202:     IN  unsigned long DataRepresentation
                    203:     );
1.1       root      204: 
                    205: void RPC_ENTRY
                    206: NDRcopy (
1.1.1.4 ! root      207:     IN void __RPC_FAR *pTarget,
        !           208:     IN void __RPC_FAR *pSource,
1.1.1.2   root      209:     IN unsigned int size
                    210:     );
                    211: 
                    212: 
                    213: /*
                    214:  *
                    215:  *  Base type conversion macros:
                    216:  *
                    217:  */
                    218: 
                    219: #define byte_from_ndr(source, target) \
                    220:     { \
1.1.1.4 ! root      221:     *target = *(*(char __RPC_FAR * __RPC_FAR *)&source->Buffer)++; \
1.1.1.2   root      222:     }
                    223: 
1.1.1.3   root      224: #define byte_array_from_ndr(Source, LowerIndex, UpperIndex, Target) \
                    225:     { \
                    226:     NDRcopy ( \
1.1.1.4 ! root      227:                (((char __RPC_FAR *)Target)+LowerIndex), \
1.1.1.3   root      228:                Source->Buffer, \
                    229:                (unsigned int)(UpperIndex-LowerIndex)); \
1.1.1.4 ! root      230:     *(unsigned long __RPC_FAR *)&Source->Buffer += (UpperIndex-LowerIndex); \
1.1.1.3   root      231:     }
                    232: 
1.1.1.2   root      233: #define boolean_from_ndr(source, target) \
                    234:     { \
1.1.1.4 ! root      235:     *target = *(*(char __RPC_FAR * __RPC_FAR *)&source->Buffer)++; \
1.1.1.2   root      236:     }
                    237: 
1.1.1.3   root      238: #define boolean_array_from_ndr(Source, LowerIndex, UpperIndex, Target) \
                    239:     { \
                    240:     NDRcopy ( \
1.1.1.4 ! root      241:                (((char __RPC_FAR *)Target)+LowerIndex), \
1.1.1.3   root      242:                Source->Buffer, \
                    243:                (unsigned int)(UpperIndex-LowerIndex)); \
1.1.1.4 ! root      244:     *(unsigned long __RPC_FAR *)&Source->Buffer += (UpperIndex-LowerIndex); \
1.1.1.3   root      245:     }
                    246: 
1.1.1.2   root      247: #define small_from_ndr(source, target) \
                    248:     { \
1.1.1.4 ! root      249:     *target = *(*(char __RPC_FAR * __RPC_FAR *)&source->Buffer)++; \
        !           250:     }
        !           251: 
        !           252: #define small_from_ndr_temp(source, target, format) \
        !           253:     { \
        !           254:     *target = *(*(char __RPC_FAR * __RPC_FAR *)source)++; \
1.1.1.2   root      255:     }
                    256: 
1.1.1.3   root      257: #define small_array_from_ndr(Source, LowerIndex, UpperIndex, Target) \
                    258:     { \
                    259:     NDRcopy ( \
1.1.1.4 ! root      260:                (((char __RPC_FAR *)Target)+LowerIndex), \
1.1.1.3   root      261:                Source->Buffer, \
                    262:                (unsigned int)(UpperIndex-LowerIndex)); \
1.1.1.4 ! root      263:     *(unsigned long __RPC_FAR *)&Source->Buffer += (UpperIndex-LowerIndex); \
1.1.1.3   root      264:     }
                    265: 
1.1.1.2   root      266: /*
                    267:  *
                    268:  *  Character and string support routines:
                    269:  *
                    270:  */
                    271: 
1.1.1.4 ! root      272: size_t RPC_ENTRY
1.1.1.2   root      273: MIDL_wchar_strlen (
1.1.1.4 ! root      274:     IN wchar_t __RPC_FAR *   s
1.1.1.2   root      275:     );
                    276: 
                    277: void RPC_ENTRY
                    278: MIDL_wchar_strcpy (
1.1.1.4 ! root      279:     OUT void __RPC_FAR *     t,
        !           280:     IN wchar_t __RPC_FAR *   s
1.1.1.2   root      281:     );
                    282: 
                    283: /*
                    284:  *
                    285:  *  Base type conversion routines:
                    286:  *
                    287:  */
                    288: 
                    289: void RPC_ENTRY
                    290: char_from_ndr (
1.1.1.4 ! root      291:     IN OUT PRPC_MESSAGE                           SourceMessage,
        !           292:     OUT unsigned char __RPC_FAR *                 Target
1.1.1.2   root      293:     );
                    294: 
                    295: void RPC_ENTRY
                    296: char_array_from_ndr (
1.1.1.4 ! root      297:     IN OUT PRPC_MESSAGE                           SourceMessage,
        !           298:     IN unsigned long                              LowerIndex,
        !           299:     IN unsigned long                              UpperIndex,
        !           300:     OUT unsigned char __RPC_FAR *                 Target
1.1.1.2   root      301:     );
                    302: 
                    303: void RPC_ENTRY
                    304: short_from_ndr (
1.1.1.4 ! root      305:     IN OUT PRPC_MESSAGE                           source,
        !           306:     OUT unsigned short __RPC_FAR *                target
1.1.1.2   root      307:     );
                    308: 
                    309: void RPC_ENTRY
                    310: short_array_from_ndr(
1.1.1.4 ! root      311:     IN OUT PRPC_MESSAGE                           SourceMessage,
        !           312:     IN unsigned long                              LowerIndex,
        !           313:     IN unsigned long                              UpperIndex,
        !           314:     OUT unsigned short __RPC_FAR *                Target
1.1.1.2   root      315:     );
                    316: 
                    317: void RPC_ENTRY
                    318: short_from_ndr_temp (
1.1.1.4 ! root      319:     IN OUT unsigned char __RPC_FAR * __RPC_FAR *  source,
        !           320:     OUT unsigned short __RPC_FAR *                target,
        !           321:     IN unsigned long                              format
1.1.1.2   root      322:     );
                    323: 
                    324: void RPC_ENTRY
                    325: long_from_ndr (
1.1.1.4 ! root      326:     IN OUT PRPC_MESSAGE                           source,
        !           327:     OUT unsigned long __RPC_FAR *                 target
1.1.1.2   root      328:     );
                    329: 
                    330: void RPC_ENTRY
                    331: long_array_from_ndr(
1.1.1.4 ! root      332:     IN OUT PRPC_MESSAGE                           SourceMessage,
        !           333:     IN unsigned long                              LowerIndex,
        !           334:     IN unsigned long                              UpperIndex,
        !           335:     OUT unsigned long __RPC_FAR *                 Target
1.1.1.2   root      336:     );
                    337: 
                    338: void RPC_ENTRY
                    339: long_from_ndr_temp (
1.1.1.4 ! root      340:     IN OUT unsigned char __RPC_FAR * __RPC_FAR *  source,
        !           341:     OUT unsigned long __RPC_FAR *                 target,
        !           342:     IN unsigned long                              format
1.1.1.2   root      343:     );
                    344: 
                    345: void RPC_ENTRY
                    346: enum_from_ndr(
1.1.1.4 ! root      347:     IN OUT PRPC_MESSAGE                           SourceMessage,
        !           348:     OUT unsigned int __RPC_FAR *                  Target
1.1.1.2   root      349:     );
                    350: 
                    351: void RPC_ENTRY
                    352: float_from_ndr (
1.1.1.4 ! root      353:     IN OUT PRPC_MESSAGE                           SourceMessage,
        !           354:     OUT void __RPC_FAR *                          Target
1.1.1.2   root      355:     );
                    356: 
                    357: void RPC_ENTRY
                    358: float_array_from_ndr (
1.1.1.4 ! root      359:     IN OUT PRPC_MESSAGE                           SourceMessage,
        !           360:     IN unsigned long                              LowerIndex,
        !           361:     IN unsigned long                              UpperIndex,
        !           362:     OUT void __RPC_FAR *                          Target
1.1.1.2   root      363:     );
                    364: 
                    365: void RPC_ENTRY
                    366: double_from_ndr (
1.1.1.4 ! root      367:     IN OUT PRPC_MESSAGE                           SourceMessage,
        !           368:     OUT void __RPC_FAR *                          Target
1.1.1.2   root      369:     );
                    370: 
                    371: void RPC_ENTRY
                    372: double_array_from_ndr (
1.1.1.4 ! root      373:     IN OUT PRPC_MESSAGE                           SourceMessage,
        !           374:     IN unsigned long                              LowerIndex,
        !           375:     IN unsigned long                              UpperIndex,
        !           376:     OUT void __RPC_FAR *                          Target
1.1.1.2   root      377:     );
                    378: 
                    379: /*
                    380:  *
                    381:  *  Other data conversion / unmarshalling routines:
                    382:  *
                    383:  */
                    384: 
                    385: void RPC_ENTRY
                    386: data_from_ndr (
1.1.1.4 ! root      387:     PRPC_MESSAGE                                  source,
        !           388:     void __RPC_FAR *                              target,
        !           389:     char __RPC_FAR *                              format,
        !           390:     unsigned char                                 MscPak
1.1.1.2   root      391:     );
                    392: 
                    393: void RPC_ENTRY
1.1.1.3   root      394: data_into_ndr (
1.1.1.4 ! root      395:     void __RPC_FAR *                              source,
        !           396:     PRPC_MESSAGE                                  target,
        !           397:     char __RPC_FAR *                              format,
        !           398:     unsigned char                                 MscPak
1.1.1.3   root      399:     );
                    400: 
                    401: void RPC_ENTRY
1.1.1.2   root      402: tree_into_ndr (
1.1.1.4 ! root      403:     void __RPC_FAR *                              source,
        !           404:     PRPC_MESSAGE                                  target,
        !           405:     char __RPC_FAR *                              format,
        !           406:     unsigned char                                 MscPak
1.1.1.2   root      407:     );
                    408: 
                    409: void RPC_ENTRY
1.1.1.3   root      410: data_size_ndr (
1.1.1.4 ! root      411:     void __RPC_FAR *                              source,
        !           412:     PRPC_MESSAGE                                  target,
        !           413:     char __RPC_FAR *                              format,
        !           414:     unsigned char                                 MscPak
1.1.1.3   root      415:     );
                    416: 
                    417: void RPC_ENTRY
1.1.1.2   root      418: tree_size_ndr (
1.1.1.4 ! root      419:     void __RPC_FAR *                              source,
        !           420:     PRPC_MESSAGE                                  target,
        !           421:     char __RPC_FAR *                              format,
        !           422:     unsigned char                                 MscPak
1.1.1.2   root      423:     );
                    424: 
                    425: void RPC_ENTRY
                    426: tree_peek_ndr (
1.1.1.4 ! root      427:     PRPC_MESSAGE                                  source,
        !           428:     unsigned char __RPC_FAR * __RPC_FAR *         buffer,
        !           429:     char __RPC_FAR *                              format,
        !           430:     unsigned char                                 MscPak
1.1.1.2   root      431:     );
                    432: 
1.1.1.4 ! root      433: void __RPC_FAR * RPC_ENTRY
1.1.1.2   root      434: midl_allocate (
                    435:     size_t      size
                    436:     );
                    437: 
1.1.1.4 ! root      438: #ifdef __RPC_DOS__
        !           439: #define MIDL_ascii_strlen(string) \
        !           440:     _fstrlen(string)
        !           441: #define MIDL_ascii_strcpy(target,source) \
        !           442:     _fstrcpy(target,source)
        !           443: #define MIDL_memset(s,c,n) \
        !           444:     _fmemset(s,c,n)
        !           445: #endif
        !           446: 
        !           447: #ifdef __RPC_WIN16__
        !           448: #define MIDL_ascii_strlen(string) \
        !           449:     _fstrlen(string)
        !           450: #define MIDL_ascii_strcpy(target,source) \
        !           451:     _fstrcpy(target,source)
        !           452: #define MIDL_memset(s,c,n) \
        !           453:     _fmemset(s,c,n)
        !           454: #endif
        !           455: 
        !           456: #ifdef __RPC_WIN32__
        !           457: #define MIDL_ascii_strlen(string) \
        !           458:     strlen(string)
        !           459: #define MIDL_ascii_strcpy(target,source) \
        !           460:     strcpy(target,source)
        !           461: #define MIDL_memset(s,c,n) \
        !           462:     memset(s,c,n)
        !           463: #endif
        !           464: 
        !           465: #ifdef __RPC_OS2_1X__
        !           466: #define MIDL_ascii_strlen(string) \
        !           467:     _fstrlen(string)
        !           468: #define MIDL_ascii_strcpy(target,source) \
        !           469:     _fstrcpy(target,source)
        !           470: #define MIDL_memset(s,c,n) \
        !           471:     _fmemset(s,c,n)
        !           472: #endif
        !           473: 
        !           474: 
        !           475: void RPC_ENTRY
        !           476: RpcSsDestroyClientContext (
        !           477:     IN void __RPC_FAR * __RPC_FAR * ContextHandle
        !           478:     );
        !           479: 
1.1.1.2   root      480: #ifdef __cplusplus
                    481: }
                    482: #endif
1.1       root      483: 
1.1.1.4 ! root      484: // Reset the packing level for DOS and Windows.
        !           485: 
        !           486: #if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
        !           487: #pragma pack()
        !           488: #endif
        !           489: 
1.1.1.2   root      490: #endif /* __RPCNDR_H__ */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.