Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

530 lines
17 KiB

/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Copyright (c) 1989 Microsoft Corporation
Module Name:
cgcommon.hxx
Abstract:
common definitions across back-end and analysis modules.
Notes:
History:
VibhasC Aug-15-1993 Created.
----------------------------------------------------------------------------*/
#ifndef __CGCOMMON_HXX__
#define __CGCOMMON_HXX__
// If we want temporary Oi server stubs in order to make stress failure
// debugging easier uncomment the following line
// #define TEMPORARY_OI_SERVER_STUBS
/////////////////////////////////////////////////////////////////////////////
// Code generation phase identification.
/////////////////////////////////////////////////////////////////////////////
//
// This enumeration specifies the codegen or analysis side.
//
typedef enum _side
{
C_SIDE, // client
S_SIDE, // server side
A_SIDE // aux routines
} SIDE;
//
// This enumeration identifies the code generation or analysis phase.
//
typedef enum _cgphase
{
CGPHASE_MARSHALL
,CGPHASE_UNMARSHALL
//
// This is actually the count of phases
//
,CGPHASE_COUNT
} CGPHASE;
//////////////////////////////////////////////////////////////////////////////
// Code generation side (client/server) identification.
//////////////////////////////////////////////////////////////////////////////
//
// This enumeration identifies which side code is currently being
// generated for.
//
typedef enum _cgside
{
CGSIDE_CLIENT
,CGSIDE_SERVER
,CGSIDE_AUX
} CGSIDE;
//
// The standard resource identifier is a quick means of identifying the
// resource.
//
typedef enum _standard_res_id
{
ST_LOCAL_RESOURCE_START
,ST_RES_RPC_MESSAGE_VARIABLE = ST_LOCAL_RESOURCE_START
,ST_RES_STUB_MESSAGE_VARIABLE
,ST_RES_STUB_DESC_VARIABLE
,ST_RES_BUFFER_POINTER_VARIABLE
,ST_RES_RPC_STATUS_VARIABLE
,ST_RES_LENGTH_VARIABLE
,ST_RES_BH_VARIABLE
,ST_RES_PXMIT_VARIABLE
,ST_LOCAL_RESOURCE_END
,ST_PARAM_RESOURCE_START = ST_LOCAL_RESOURCE_END
,ST_RES_PRPC_MESSAGE = ST_PARAM_RESOURCE_START
,ST_PARAM_RESOURCE_END
,ST_GLOBAL_RESOURCE_START= ST_PARAM_RESOURCE_END
,ST_RES_AUTO_BH_VARIABLE = ST_GLOBAL_RESOURCE_START
,ST_RES_FORMAT_STRING_VARIABLE
,ST_GLOBAL_RESOURCE_END
} STANDARD_RES_ID;
#define IS_STANDARD_LOCAL_RESOURCE( ResID ) \
((ResID >= ST_LOCAL_RESOURCE_START) && (ResID < ST_LOCAL_RESOURCE_END))
#define IS_STANDARD_PARAM_RESOURCE( ResID ) \
((ResID >= ST_PARAM_RESOURCE_START) && (ResID < ST_PARAM_RESOURCE_END))
#define IS_STANDARD_GLOBAL_RESOURCE( ResID ) \
((ResID >= ST_GLOBAL_RESOURCE_START) && (ResID < ST_GLOBAL_RESOURCE_END))
//////////////////////////////////////////////////////////////////////////////
// stub resource name and type name strings.
// Note:: If uou add a standard resource name here, add to the standard
// resource id enumeration list too !
//////////////////////////////////////////////////////////////////////////////
#define LOCAL_NAME_POINTER_MANGLE "_p_"
#define LOCAL_NAME_ARRAY_MANGLE "_a_"
#define PRPC_MESSAGE_TYPE_NAME "PRPC_MESSAGE"
#define PRPC_MESSAGE_VAR_NAME "_pRpcMessage"
#define RPC_MESSAGE_TYPE_NAME "RPC_MESSAGE"
#define RPC_MESSAGE_VAR_NAME "_RpcMessage"
#define RPC_MESSAGE_HANDLE_VAR_NAME RPC_MESSAGE_VAR_NAME".Handle"
#define PRPC_MESSAGE_HANDLE_VAR_NAME PRPC_MESSAGE_VAR_NAME"->Handle"
#define PRPC_MESSAGE_MANAGER_EPV_NAME PRPC_MESSAGE_VAR_NAME"->ManagerEpv"
#define RPC_MESSAGE_DATA_REP RPC_MESSAGE_VAR_NAME".DataRepresentation"
#define PRPC_MESSAGE_DATA_REP PRPC_MESSAGE_VAR_NAME"->DataRepresentation"
#define STUB_MESSAGE_TYPE_NAME "MIDL_STUB_MESSAGE"
#define STUB_MESSAGE_VAR_NAME "_StubMsg"
#define PSTUB_MESSAGE_TYPE_NAME "PMIDL_STUB_MESSAGE"
#define PSTUB_MESSAGE_VAR_NAME "_pStubMsg"
#define PSTUB_MESSAGE_PAR_NAME "pStubMsg"
#define STUB_MSG_LENGTH_VAR_NAME STUB_MESSAGE_VAR_NAME".BufferLength"
#define PSTUB_MSG_LENGTH_VAR_NAME PSTUB_MESSAGE_PAR_NAME"->BufferLength"
#define STUB_MSG_BUFFER_VAR_NAME STUB_MESSAGE_VAR_NAME".Buffer"
#define STUB_MSG_BUFFER_END_VAR_NAME STUB_MESSAGE_VAR_NAME".BufferEnd"
#define RETURN_VALUE_VAR_NAME "_RetVal"
#define STUB_DESC_STRUCT_TYPE_NAME "MIDL_STUB_DESC"
#define STUB_DESC_STRUCT_VAR_NAME "_StubDesc"
#define PSTUB_DESC_STRUCT_TYPE_NAME "PMIDL_STUB_DESC"
#define SERVER_INFO_TYPE_NAME "MIDL_SERVER_INFO"
#define SERVER_INFO_VAR_NAME "_ServerInfo"
#define SERVER_ROUTINE_TYPE_NAME "SERVER_ROUTINE"
#define SERVER_ROUTINE_TABLE_NAME "_ServerRoutineTable"
#define FORMAT_STRING_OFFSET_TABLE_NAME "_FormatStringOffsetTable"
#define LOCAL_FORMAT_STRING_OFFSET_TABLE_NAME "_LocalFormatStringOffsetTable"
#define STUB_THUNK_TYPE_NAME "STUB_THUNK"
#define STUB_THUNK_TABLE_NAME "_StubThunkTable"
#define BUFFER_POINTER_TYPE_NAME "RPC_BUFPTR"
#define BUFFER_POINTER_VAR_NAME "_pBuffer"
#define RPC_STATUS_TYPE_NAME "RPC_STATUS"
#define RPC_STATUS_VAR_NAME "_Status"
#define BH_LOCAL_VAR_TYPE_NAME "RPC_BINDING_HANDLE"
#define BH_LOCAL_VAR_NAME "_Handle"
#define LENGTH_VAR_NAME "_Length"
#define LENGTH_VAR_TYPE_NAME "RPC_LENGTH"
#define RPC_C_INT_INFO_TYPE_NAME "RPC_CLIENT_INTERFACE"
#define RPC_C_INT_INFO_STRUCT_NAME "___RpcClientInterface"
#define RPC_S_INT_INFO_TYPE_NAME "RPC_SERVER_INTERFACE"
#define RPC_S_INT_INFO_STRUCT_NAME "___RpcServerInterface"
#define FORMAT_STRING_TYPE_NAME "MIDL_TYPE_FORMAT_STRING"
#define PFORMAT_STRING_TYPE_NAME "PFORMAT_STRING"
#define FORMAT_STRING_STRUCT_NAME "__MIDL_TypeFormatString"
#define FORMAT_STRING_STRING_FIELD FORMAT_STRING_STRUCT_NAME ".Format"
#define PROC_FORMAT_STRING_TYPE_NAME "MIDL_PROC_FORMAT_STRING"
#define PPROC_FORMAT_STRING_TYPE_NAME FORMAT_STRING_TYPE_NAME
#define PROC_FORMAT_STRING_STRUCT_NAME "__MIDL_ProcFormatString"
#define PROC_FORMAT_STRING_STRING_FIELD PROC_FORMAT_STRING_STRUCT_NAME ".Format"
#define LOCAL_FORMAT_STRING_TYPE_NAME "MIDL_LOCAL_TYPE_FORMAT_STRING"
#define PLOCAL_FORMAT_STRING_TYPE_NAME "PLOCAL_FORMAT_STRING"
#define LOCAL_FORMAT_STRING_STRUCT_NAME "__MIDL_LocalTypeFormatString"
#define LOCAL_FORMAT_STRING_STRING_FIELD LOCAL_FORMAT_STRING_STRUCT_NAME ".Format"
#define LOCAL_PROC_FORMAT_STRING_TYPE_NAME "MIDL_LOCAL_PROC_FORMAT_STRING"
#define PLOCAL_PROC_FORMAT_STRING_TYPE_NAME LOCAL_FORMAT_STRING_TYPE_NAME
#define LOCAL_PROC_FORMAT_STRING_STRUCT_NAME "__MIDL_LocalProcFormatString"
#define LOCAL_PROC_FORMAT_STRING_STRING_FIELD LOCAL_PROC_FORMAT_STRING_STRUCT_NAME ".Format"
#define RUNDOWN_ROUTINE_TABLE_TYPE "NDR_RUNDOWN"
#define RUNDOWN_ROUTINE_TABLE_VAR "RundownRoutines"
#define BINDING_ROUTINE_TABLE_TYPE "GENERIC_BINDING_ROUTINE_PAIR"
#define BINDING_ROUTINE_TABLE_VAR "BindingRoutines"
#define EXPR_EVAL_ROUTINE_TABLE_TYPE "EXPR_EVAL"
#define EXPR_EVAL_ROUTINE_TABLE_VAR "ExprEvalRoutines"
#define XMIT_AS_ROUTINE_TABLE_TYPE "XMIT_ROUTINE_QUINTUPLE"
#define XMIT_AS_ROUTINE_TABLE_VAR "TransmitAsRoutines"
#define XMIT_TO_XMIT "_XmitTranslateToXmit"
#define XMIT_FROM_XMIT "_XmitTranslateFromXmit"
#define XMIT_FREE_XMIT "_XmitFreeXmit"
#define XMIT_FREE_INST "_XmitFreeInst"
#define REP_AS_ROUTINE_TABLE_TYPE "XMIT_ROUTINE_QUINTUPLE"
#define REP_AS_ROUTINE_TABLE_VAR "RepresentAsRoutines"
#define REP_FROM_LOCAL "_RepAsTranslateFromLocal"
#define REP_TO_LOCAL "_RepAsTranslateToLocal"
#define REP_FREE_INST "_RepAsFreeInst"
#define REP_FREE_LOCAL "_RepAsFreeLocal"
#define USER_MARSHAL_ROUTINE_TABLE_TYPE "USER_MARSHAL_ROUTINE_QUADRUPLE"
#define USER_MARSHAL_ROUTINE_TABLE_VAR "UserMarshalRoutines"
#define USER_MARSHAL_SIZE "_UserSize"
#define USER_MARSHAL_MARSHALL "_UserMarshal"
#define USER_MARSHAL_UNMARSHALL "_UserUnmarshal"
#define USER_MARSHAL_FREE "_UserFree"
#define FC_FIELD_OFFSET_MACRO "NdrFieldOffset"
#define FC_FIELD_PAD_MACRO "NdrFieldPad"
#define GENERIC_BINDING_ROUTINE_TYPE "GENERIC_BINDING_ROUTINE"
#define GENERIC_UNBINDING_ROUTINE_TYPE "GENERIC_UNBIND_ROUTINE"
#define GENERIC_BINDING_INFO_TYPE "GENERIC_BINDING_INFO"
#define GENERIC_BINDING_INFO_VAR "GenericBindingInfo"
#define PXMIT_VAR_NAME "_pXmit"
#define PXMIT_VAR_TYPE_NAME "PMIDL_XMIT_TYPE"
#define PARAM_STRUCT_TYPE_NAME "struct _PARAM_STRUCT"
#define MALLOC_FREE_STRUCT_TYPE_NAME "MALLOC_FREE_STRUCT"
#define MALLOC_FREE_STRUCT_VAR_NAME "_MallocFreeStruct"
/////////////////////////////////////////////////////////////////////////////
// standard routine names.
/////////////////////////////////////////////////////////////////////////////
#define FULL_POINTER_INIT_RTN_NAME "NdrFullPointerXlatInit"
#define FULL_POINTER_FREE_RTN_NAME "NdrFullPointerXlatFree"
#define RPC_SS_ENABLE_ALLOCATE_RTN_NAME "NdrRpcSsEnableAllocate"
#define RPC_SS_DISABLE_ALLOCATE_RTN_NAME "NdrRpcSsDisableAllocate"
#define RPC_SM_SET_CLIENT_TO_OSF_RTN_NAME "NdrRpcSmSetClientToOsf"
#define RPC_SS_SERVER_ALLOCATE_RTN_NAME "RpcSsAllocate"
#define RPC_SS_SERVER_FREE_RTN_NAME "RpcSsFree"
#define RPC_SM_CLIENT_ALLOCATE_RTN_NAME "NdrRpcSmClientAllocate"
#define RPC_SM_CLIENT_FREE_RTN_NAME "NdrRpcSmClientFree"
#define DEFAULT_ALLOC_OSF_RTN_NAME "NdrRpcSsDefaultAllocate"
#define DEFAULT_FREE_OSF_RTN_NAME "NdrRpcSsDefaultFree"
#define DEFAULT_ALLOC_RTN_NAME "MIDL_user_allocate"
#define DEFAULT_FREE_RTN_NAME "MIDL_user_free"
#define OLE_ALLOC_RTN_NAME "NdrOleAllocate"
#define OLE_FREE_RTN_NAME "NdrOleFree"
#define NDR_CONVERT_RTN_NAME "NdrConvert"
#define NDR_CONVERT_RTN_NAME_V2 "NdrConvert2"
#define DEFAULT_GB_RTN_NAME "I_RpcGetBuffer"
#define DEFAULT_SR_RTN_NAME "I_RpcSendReceive"
#define DEFAULT_FB_RTN_NAME "I_RpcFreeBuffer"
#define DEFAULT_NDR_SR_RTN_NAME "NdrSendReceive"
#define DEFAULT_NDR_FB_RTN_NAME "NdrFreeBuffer"
#define DEFAULT_NDR_GB_RTN_NAME "NdrGetBuffer"
#define AUTO_GB_RTN_NAME "I_RpcNsGetBuffer"
#define AUTO_SR_RTN_NAME "I_RpcNsSendReceive"
#define AUTO_FB_RTN_NAME "I_RpcFreeBuffer"
#define CALLBACK_HANDLE_RTN_NAME "I_RpcGetCurrentCallHandle"
#define AUTO_NDR_SR_RTN_NAME "NdrNsSendReceive"
#define AUTO_NDR_GB_RTN_NAME "NdrNsGetBuffer"
#define AUTO_BH_VAR_NAME "__MIDL_AutoBindHandle"
#define AUTO_BH_TYPE_NAME "RPC_BINDING_HANDLE"
#define CSTUB_INIT_RTN_NAME "NdrClientInitializeNew"
#define SSTUB_INIT_RTN_NAME "NdrServerInitializeNew"
#define S_NDR_CALL_RTN_NAME "NdrServerCall"
#define C_NDR_CALL_RTN_NAME "NdrClientCall"
#define S_NDR_CALL_RTN_NAME_V2 "NdrServerCall2"
#define C_NDR_CALL_RTN_NAME_V2 "NdrClientCall2"
#define S_OBJECT_NDR_CALL_RTN_NAME "NdrStubCall"
#define C_OBJECT_NDR_CALL_RTN_NAME "NdrClientCall"
#define S_OBJECT_NDR_CALL_RTN_NAME_V2 "NdrStubCall2"
#define C_OBJECT_NDR_CALL_RTN_NAME_V2 "NdrClientCall2"
#define S_NDR_MARSHALL_RTN_NAME "NdrServerMarshall"
#define S_NDR_UNMARSHALL_RTN_NAME "NdrServerUnmarshall"
#define C_NDR_CLEAR_OUT_PARAMS_RTN_NAME "NdrClearOutParameters"
#define AUTO_SR_NDR_RTN_NAME "NdrAHSendReceive"
#define NORMAL_SR_NDR_RTN_NAME "NdrSendReceive"
#define NORMAL_FB_NDR_RTN_NAME "NdrFreeBuffer"
#define ALIGN_2_RTN_NAME "_midl_fa2"
#define ALIGN_4_RTN_NAME "_midl_fa4"
#define ALIGN_8_RTN_NAME "_midl_fa8"
#define MARSHALL_1_RTN_NAME "_midl_ma1"
#define MARSHALL_2_RTN_NAME "_midl_ma2"
#define MARSHALL_4_RTN_NAME "_midl_ma4"
#define MARSHALL_8_RTN_NAME "_midl_ma8"
#define UNMARSHALL_1_RTN_NAME "_midl_unma1"
#define UNMARSHALL_2_RTN_NAME "_midl_unma2"
#define UNMARSHALL_4_RTN_NAME "_midl_unma4"
#define UNMARSHALL_8_RTN_NAME "_midl_unma8"
#define ADD_PTR_RTN_NAME "_midl_addp"
#define MARSHALL_UNIQUE_PTR_RTN_NAME "_midl_marsh_up"
#define CHECK_UNIQUE_PTR_IN_BUFFER "_midl_unmarsh_up"
#define RAISE_EXCEPTION_RTN_NAME "RpcRaiseException"
#define STUB_MSG_ALLOCATE_RTN_NAME STUB_MESSAGE_VAR_NAME".pfnAllocate"
#define STUB_MSG_FREE_RTN_NAME STUB_MESSAGE_VAR_NAME".pfnFree"
#define PSTUB_MSG_ALLOCATE_RTN_NAME PSTUB_MESSAGE_PAR_NAME"->pfnAllocate"
#define ENGINE_CHECKED_ALLOC_RTN_NAME "NdrAllocate"
#define MIDL_MEMSET_RTN_NAME "MIDL_memset"
/////////////////////////////////////////////////////////////////////////////
// context handle related stuff.
/////////////////////////////////////////////////////////////////////////////
#define CTXT_HDL_C_CONTEXT_TYPE_NAME "NDR_CCONTEXT"
#define CTXT_HDL_S_CONTEXT_TYPE_NAME "NDR_SCONTEXT"
#define CTXT_HDL_RUNDOWN_TYPE_NAME "NDR_RUNDOWN"
#define CTXT_HDL_BIND_RTN_NAME "NDRCContextBinding"
#define CTXT_HDL_C_MARSHALL_RTN_NAME "NDRCContextMarshall"
#define CTXT_HDL_C_UNMARSHALL_RTN_NAME "NDRCContextUnmarshall"
#define CTXT_HDL_S_UNMARSHALL_RTN_NAME "NDRSContextUnmarshall"
#define CTXT_HDL_S_MARSHALL_RTN_NAME "NDRSContextMarshall"
//
// Stuff emitted in the client and server stub files.
//
#define SIZEOF_RPC_CLIENT_INTERFACE "sizeof("RPC_C_INT_INFO_TYPE_NAME")"
#define SIZEOF_RPC_SERVER_INTERFACE "sizeof("RPC_S_INT_INFO_TYPE_NAME")"
#define PROTSEQ_EP_TYPE_NAME "RPC_PROTSEQ_ENDPOINT"
#define PROTSEQ_EP_VAR_NAME "___RpcProtseqEndpoint"
#define TRANSFER_SYNTAX_GUID_STR_1 "8A885D04"
#define TRANSFER_SYNTAX_GUID_STR_2 "1CEB"
#define TRANSFER_SYNTAX_GUID_STR_3 "11C9"
#define TRANSFER_SYNTAX_GUID_STR_4 "9FE8"
#define TRANSFER_SYNTAX_GUID_STR_5 "08002B104860"
#define RPC_DISPATCH_FUNCTION_TYPE_NAME "RPC_DISPATCH_FUNCTION"
#define RPC_DISPATCH_TABLE_TYPE_NAME "RPC_DISPATCH_TABLE"
#define STRUCT_PTR_NAME "_pStruct"
#define STRICT_VARARGS_IFDEF "#ifdef STRICT_VARARGS"
#define ALPHA_IFDEF "#if defined( _ALPHA_ )"
#define ELSE_IF_PPC_OR_MIPS "#elif defined( _PPC_ ) || defined( _MIPS_ )"
#define VA_LIST_TYPE_NAME "va_list"
#define VLIST_VAR_NAME "vlist"
#define VA_START_PROC_NAME "va_start"
#define VLIST_A0 "vlist.a0"
//
// File names of standard include files.
//
#define RPCNDR_H_INC_FILE_NAME "rpcndr.h"
#define STRING_H_INC_FILE_NAME "string.h"
#define MEMORY_H_INC_FILE_NAME "memory.h"
#define STDARG_H_INC_FILE_NAME "stdarg.h"
//
// xfer syntax version
//
#define NDR_UUID_MAJOR_VERSION 2
#define NDR_UUID_MINOR_VERSION 0
// encode / decode specific definitions.
#define NO_FREEING_FOR_PICKLING TRUE
// functions.
#define NDR_MES_TYPE_ALIGN_SIZE "NdrMesTypeAlignSize"
#define NDR_MES_TYPE_ENCODE "NdrMesTypeEncode"
#define NDR_MES_TYPE_DECODE "NdrMesTypeDecode"
#define NDR_MES_TYPE_FREE "NdrMesTypeFree"
#define PROC_ENCODE_DECODE_RTN_NAME "NdrMesProcEncodeDecode"
// types.
#define MIDL_ES_HANDLE_TYPE_NAME "handle_t"
#define MIDL_ES_HANDLE_VAR_NAME "_MidlEsHandle"
#define PTYPE_VAR_NAME "_pType"
// notify related stuff
#define NOTIFY_SUFFIX "_notify"
#define NOTIFY_FLAG_SUFFIX "_notify_flag"
#define SIZEOF_NOTIFY_FLAG_SUFFIX strlen( NOTIFY_FLAG_SUFFIX )
#define NOTIFY_FLAG_VAR_NAME "__MIDL_NotifyFlag"
//////////////////////////////////////////////////////////////////////////////
// sundry definitions
//////////////////////////////////////////////////////////////////////////////
typedef char * PNAME;
typedef char * PFILENAME;
/////////////////////////////////////////////////////////////////////////////
// Binding related definitions.
/////////////////////////////////////////////////////////////////////////////
//
// The handle usage refers to handle usage being explicit or implicit. This
// is deliberately defined as an unsigned long, so we can use a bit field.
// Otherwise it could be defined as an enum.
//
typedef unsigned long HANDLE_USAGE;
//
// binding handle usage.
//
#define HU_EXPLICIT 0x0
#define HU_IMPLICIT 0x1
/////////////////////////////////////////////////////////////////////////////
// Some definitions relating to code generation that are used only for ndr
// classes.
/////////////////////////////////////////////////////////////////////////////
//
// This definition specifies the location where the param will be allocated
// on the server stub.
//
typedef unsigned long S_STUB_ALLOC_LOCATION;
#define S_STUB_ALLOC_LOCATION_UNKNOWN 0x0
#define S_STUB_ALLOC_LOCATION_ON_STACK 0x1
#define S_STUB_ALLOC_LOCATION_IN_HEAP 0x2
#define S_STUB_ALLOC_LOCATION_NOT_NEEDED 0x3
//
// This definition specifies the actual entity allocated, whether it is a
// reference to the entity or the entity itself.
//
typedef unsigned long S_STUB_ALLOC_TYPE;
#define S_STUB_ALLOC_TYPE_NONE 0x0
#define S_STUB_ALLOC_TYPE_REFERENCE 0x1
#define S_STUB_ALLOC_TYPE_TYPE 0x2
#define S_STUB_ALLOC_TYPE_DONT_CARE 0x3
//
// This definition specifies if initialization is needed for the parameter
// on the server side before unmarshalling. This is used only for out params.
//
typedef unsigned long S_STUB_INIT_NEED;
#define S_STUB_INIT_NOT_NEEDED 0x0
#define S_STUB_INIT_NEEDED 0x1
//////////////////////////////////////////////////////////////////////////////
// other module definitions.
//////////////////////////////////////////////////////////////////////////////
// #include "optprop.hxx"
#endif // __CGCOMMON_HXX__