--- mstools/h/rpcndr.h 2018/08/09 18:20:34 1.1.1.2 +++ mstools/h/rpcndr.h 2018/08/09 18:23:10 1.1.1.4 @@ -1,11 +1,10 @@ - /*++ Copyright (c) 1992 Microsoft Corporation Module Name: - floatc.cxx + rpcndr.h Abstract: @@ -13,7 +12,7 @@ Abstract: Author: - DonnaLi (??-??-91) + DonnaLi (01-01-91) Environment: @@ -35,16 +34,18 @@ Revision History: DovhH 04-24-24 Changed signature of _from_ndr (to unsigned ) Added _array_from_ndr routines -Comments: - - This file does not belong in runtime\mtrt. Needs to move to - ndrlib directory (after code freeze). --*/ #ifndef __RPCNDR_H__ #define __RPCNDR_H__ +// Set the packing level for RPC structures for Dos and Windows. + +#if defined(__RPC_DOS__) || defined(__RPC_WIN16__) +#pragma pack(2) +#endif + #include "rpcnsip.h" #ifdef __cplusplus @@ -109,6 +110,50 @@ extern "C" { #define NDR_LOCAL_DATA_REPRESENTATION (unsigned long)0X00000010L /* + * Other MIDL base types / predefined types: + */ + +typedef unsigned char byte; +typedef unsigned char boolean; + +#ifndef _WCHAR_T_DEFINED +typedef unsigned short wchar_t; +#define _WCHAR_T_DEFINED +#endif + +#ifndef _SIZE_T_DEFINED +typedef unsigned int size_t; +#define _SIZE_T_DEFINED +#endif + +#ifdef __RPC_DOS__ +#define __RPC_CALLEE __far __pascal +#endif + +#ifdef __RPC_WIN16__ +#define __RPC_CALLEE __far __pascal __export +#endif + +#ifdef __RPC_WIN32__ +#if (_MSC_VER >= 800) +#define __RPC_CALLEE __stdcall +#else +#define __RPC_CALLEE +#endif +#endif + +#ifdef __RPC_OS2_1X__ +#define __RPC_CALLEE_STUB __far __pascal __loadds +#endif + +#ifndef __MIDL_USER_DEFINED +#define midl_user_allocate MIDL_user_allocate +#define midl_user_free MIDL_user_free +#define __MIDL_USER_DEFINED +#endif + + +/* * Context related definitions: * * Client and Server Contexts. Just enough of the structure is exposed @@ -116,93 +161,54 @@ extern "C" { * */ -typedef struct {RPC_BINDING_HANDLE hRPC;} PAPI * NDR_CCONTEXT; +typedef void __RPC_FAR * NDR_CCONTEXT; typedef struct {void * pad[2]; void * userContext; } * NDR_SCONTEXT; #define NDRSContextValue(hContext) (&(hContext)->userContext) -#define NDRCContextBinding(hContext) ((hContext)->hRPC) #define cbNDRContext 20 /* size of context on WIRE */ -typedef void (*NDR_RUNDOWN)(void * context); +typedef void (__RPC_USER __RPC_FAR * NDR_RUNDOWN)(void __RPC_FAR * context); + +RPC_BINDING_HANDLE RPC_ENTRY +NDRCContextBinding ( + IN NDR_CCONTEXT CContext + ); void RPC_ENTRY NDRCContextMarshall ( IN NDR_CCONTEXT CContext, - OUT void PAPI *pBuff + OUT void __RPC_FAR *pBuff ); void RPC_ENTRY NDRCContextUnmarshall ( - OUT NDR_CCONTEXT PAPI *pCContext, + OUT NDR_CCONTEXT __RPC_FAR *pCContext, IN RPC_BINDING_HANDLE hBinding, - IN void PAPI *pBuff, + IN void __RPC_FAR *pBuff, IN unsigned long DataRepresentation ); void RPC_ENTRY NDRSContextMarshall ( IN NDR_SCONTEXT CContext, - OUT void PAPI *pBuff, + OUT void __RPC_FAR *pBuff, IN NDR_RUNDOWN userRunDownIn ); NDR_SCONTEXT RPC_ENTRY NDRSContextUnmarshall ( - IN void PAPI *pBuff, + IN void __RPC_FAR *pBuff, IN unsigned long DataRepresentation ); void RPC_ENTRY NDRcopy ( - IN void PAPI *pTarget, - IN void PAPI *pSource, + IN void __RPC_FAR *pTarget, + IN void __RPC_FAR *pSource, IN unsigned int size ); -/* - * Other MIDL base types / predefined types: - */ - -typedef unsigned char byte; -typedef unsigned char boolean; - -#ifndef _WCHAR_T_DEFINED -typedef unsigned short wchar_t; -#define _WCHAR_T_DEFINED -#endif - -#ifndef _SIZE_T_DEFINED -typedef unsigned int size_t; -#define _SIZE_T_DEFINED -#endif - -#ifdef __RPC_DOS__ -#define __RPC_FAR _far -#define __RPC_CALLEE_STUB -#endif - -#ifdef __RPC_WIN16__ -#define __RPC_FAR _far -#define __RPC_CALLEE_STUB _export -#endif - -#ifdef __RPC_WIN32__ -#define __RPC_FAR -#define __RPC_EXPORT -#endif - -#ifdef __RPC_OS2_1X__ -#define __RPC_FAR _far -#define __RPC_CALLEE_STUB _loadds -#endif - -#ifndef __MIDL_USER_DEFINED -#define midl_user_allocate MIDL_user_allocate -#define midl_user_free MIDL_user_free -#define __MIDL_USER_DEFINED -#endif - /* * @@ -212,17 +218,49 @@ typedef unsigned int size_t; #define byte_from_ndr(source, target) \ { \ - *target = *(*(char **)&source->Buffer)++; \ + *target = *(*(char __RPC_FAR * __RPC_FAR *)&source->Buffer)++; \ + } + +#define byte_array_from_ndr(Source, LowerIndex, UpperIndex, Target) \ + { \ + NDRcopy ( \ + (((char __RPC_FAR *)Target)+LowerIndex), \ + Source->Buffer, \ + (unsigned int)(UpperIndex-LowerIndex)); \ + *(unsigned long __RPC_FAR *)&Source->Buffer += (UpperIndex-LowerIndex); \ } #define boolean_from_ndr(source, target) \ { \ - *target = *(*(char **)&source->Buffer)++; \ + *target = *(*(char __RPC_FAR * __RPC_FAR *)&source->Buffer)++; \ + } + +#define boolean_array_from_ndr(Source, LowerIndex, UpperIndex, Target) \ + { \ + NDRcopy ( \ + (((char __RPC_FAR *)Target)+LowerIndex), \ + Source->Buffer, \ + (unsigned int)(UpperIndex-LowerIndex)); \ + *(unsigned long __RPC_FAR *)&Source->Buffer += (UpperIndex-LowerIndex); \ } #define small_from_ndr(source, target) \ { \ - *target = *(*(char **)&source->Buffer)++; \ + *target = *(*(char __RPC_FAR * __RPC_FAR *)&source->Buffer)++; \ + } + +#define small_from_ndr_temp(source, target, format) \ + { \ + *target = *(*(char __RPC_FAR * __RPC_FAR *)source)++; \ + } + +#define small_array_from_ndr(Source, LowerIndex, UpperIndex, Target) \ + { \ + NDRcopy ( \ + (((char __RPC_FAR *)Target)+LowerIndex), \ + Source->Buffer, \ + (unsigned int)(UpperIndex-LowerIndex)); \ + *(unsigned long __RPC_FAR *)&Source->Buffer += (UpperIndex-LowerIndex); \ } /* @@ -231,15 +269,15 @@ typedef unsigned int size_t; * */ -int RPC_ENTRY +size_t RPC_ENTRY MIDL_wchar_strlen ( - IN wchar_t s[] + IN wchar_t __RPC_FAR * s ); void RPC_ENTRY MIDL_wchar_strcpy ( - OUT void * t, - IN wchar_t * s + OUT void __RPC_FAR * t, + IN wchar_t __RPC_FAR * s ); /* @@ -250,87 +288,92 @@ MIDL_wchar_strcpy ( void RPC_ENTRY char_from_ndr ( - IN OUT PRPC_MESSAGE SourceMessage, - OUT unsigned char * Target + IN OUT PRPC_MESSAGE SourceMessage, + OUT unsigned char __RPC_FAR * Target ); void RPC_ENTRY char_array_from_ndr ( - IN OUT PRPC_MESSAGE SourceMessage, - IN unsigned int MemberCount, - OUT unsigned char Target[] + IN OUT PRPC_MESSAGE SourceMessage, + IN unsigned long LowerIndex, + IN unsigned long UpperIndex, + OUT unsigned char __RPC_FAR * Target ); void RPC_ENTRY short_from_ndr ( - IN OUT PRPC_MESSAGE source, - OUT unsigned short * target + IN OUT PRPC_MESSAGE source, + OUT unsigned short __RPC_FAR * target ); void RPC_ENTRY short_array_from_ndr( - IN OUT PRPC_MESSAGE SourceMessage, - IN unsigned int MemberCount, - OUT unsigned short Target[] + IN OUT PRPC_MESSAGE SourceMessage, + IN unsigned long LowerIndex, + IN unsigned long UpperIndex, + OUT unsigned short __RPC_FAR * Target ); void RPC_ENTRY short_from_ndr_temp ( - IN OUT unsigned char ** source, - OUT unsigned short * target, - IN unsigned long format + IN OUT unsigned char __RPC_FAR * __RPC_FAR * source, + OUT unsigned short __RPC_FAR * target, + IN unsigned long format ); void RPC_ENTRY long_from_ndr ( - IN OUT PRPC_MESSAGE source, - OUT unsigned long * target + IN OUT PRPC_MESSAGE source, + OUT unsigned long __RPC_FAR * target ); void RPC_ENTRY long_array_from_ndr( - IN OUT PRPC_MESSAGE SourceMessage, - IN unsigned int MemberCount, - OUT unsigned long Target[] + IN OUT PRPC_MESSAGE SourceMessage, + IN unsigned long LowerIndex, + IN unsigned long UpperIndex, + OUT unsigned long __RPC_FAR * Target ); void RPC_ENTRY long_from_ndr_temp ( - IN OUT unsigned char ** source, - OUT unsigned long * target, - IN unsigned long format + IN OUT unsigned char __RPC_FAR * __RPC_FAR * source, + OUT unsigned long __RPC_FAR * target, + IN unsigned long format ); void RPC_ENTRY enum_from_ndr( - IN OUT PRPC_MESSAGE SourceMessage, - OUT unsigned int * Target + IN OUT PRPC_MESSAGE SourceMessage, + OUT unsigned int __RPC_FAR * Target ); void RPC_ENTRY float_from_ndr ( - IN OUT PRPC_MESSAGE SourceMessage, - OUT void * Target + IN OUT PRPC_MESSAGE SourceMessage, + OUT void __RPC_FAR * Target ); void RPC_ENTRY float_array_from_ndr ( - IN OUT PRPC_MESSAGE SourceMessage, - IN unsigned int MemberCount, - OUT void * Target + IN OUT PRPC_MESSAGE SourceMessage, + IN unsigned long LowerIndex, + IN unsigned long UpperIndex, + OUT void __RPC_FAR * Target ); void RPC_ENTRY double_from_ndr ( - IN OUT PRPC_MESSAGE SourceMessage, - OUT void * Target + IN OUT PRPC_MESSAGE SourceMessage, + OUT void __RPC_FAR * Target ); void RPC_ENTRY double_array_from_ndr ( - IN OUT PRPC_MESSAGE SourceMessage, - IN unsigned int MemberCount, - OUT void * Target + IN OUT PRPC_MESSAGE SourceMessage, + IN unsigned long LowerIndex, + IN unsigned long UpperIndex, + OUT void __RPC_FAR * Target ); /* @@ -341,42 +384,107 @@ double_array_from_ndr ( void RPC_ENTRY data_from_ndr ( - PRPC_MESSAGE source, - void * target, - char * format, - unsigned char MscPak + PRPC_MESSAGE source, + void __RPC_FAR * target, + char __RPC_FAR * format, + unsigned char MscPak + ); + +void RPC_ENTRY +data_into_ndr ( + void __RPC_FAR * source, + PRPC_MESSAGE target, + char __RPC_FAR * format, + unsigned char MscPak ); void RPC_ENTRY tree_into_ndr ( - void * source, - PRPC_MESSAGE target, - char * format, - unsigned char MscPak + void __RPC_FAR * source, + PRPC_MESSAGE target, + char __RPC_FAR * format, + unsigned char MscPak + ); + +void RPC_ENTRY +data_size_ndr ( + void __RPC_FAR * source, + PRPC_MESSAGE target, + char __RPC_FAR * format, + unsigned char MscPak ); void RPC_ENTRY tree_size_ndr ( - void * source, - PRPC_MESSAGE target, - char * format, - unsigned char MscPak + void __RPC_FAR * source, + PRPC_MESSAGE target, + char __RPC_FAR * format, + unsigned char MscPak ); void RPC_ENTRY tree_peek_ndr ( - PRPC_MESSAGE source, - unsigned char ** buffer, - char * format + PRPC_MESSAGE source, + unsigned char __RPC_FAR * __RPC_FAR * buffer, + char __RPC_FAR * format, + unsigned char MscPak ); -void PAPI * RPC_ENTRY +void __RPC_FAR * RPC_ENTRY midl_allocate ( size_t size ); +#ifdef __RPC_DOS__ +#define MIDL_ascii_strlen(string) \ + _fstrlen(string) +#define MIDL_ascii_strcpy(target,source) \ + _fstrcpy(target,source) +#define MIDL_memset(s,c,n) \ + _fmemset(s,c,n) +#endif + +#ifdef __RPC_WIN16__ +#define MIDL_ascii_strlen(string) \ + _fstrlen(string) +#define MIDL_ascii_strcpy(target,source) \ + _fstrcpy(target,source) +#define MIDL_memset(s,c,n) \ + _fmemset(s,c,n) +#endif + +#ifdef __RPC_WIN32__ +#define MIDL_ascii_strlen(string) \ + strlen(string) +#define MIDL_ascii_strcpy(target,source) \ + strcpy(target,source) +#define MIDL_memset(s,c,n) \ + memset(s,c,n) +#endif + +#ifdef __RPC_OS2_1X__ +#define MIDL_ascii_strlen(string) \ + _fstrlen(string) +#define MIDL_ascii_strcpy(target,source) \ + _fstrcpy(target,source) +#define MIDL_memset(s,c,n) \ + _fmemset(s,c,n) +#endif + + +void RPC_ENTRY +RpcSsDestroyClientContext ( + IN void __RPC_FAR * __RPC_FAR * ContextHandle + ); + #ifdef __cplusplus } #endif +// Reset the packing level for DOS and Windows. + +#if defined(__RPC_DOS__) || defined(__RPC_WIN16__) +#pragma pack() +#endif + #endif /* __RPCNDR_H__ */