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

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