DCEPORT.H
/*++ 
 
Copyright 1993 - 1998 Microsoft Corporation 
 
Module Name: 
 
    dceport.h 
 
Abstract: 
 
    Include file defining types and macros which map DCE RPC APIs to 
    Microsoft RPC APIs.  Useful when porting DCE RPC applications to MS RPC. 
 
--*/ 
 
#ifndef DCEPORT_H 
#define DCEPORT_H 
 
#ifdef __cplusplus 
extern "C" { 
#endif 
 
/* 
** Define various idl types 
*/ 
#define idl_char                unsigned char 
#define idl_boolean             unsigned char 
#define idl_byte                unsigned char 
#define idl_small_int           char 
#define idl_usmall_int          unsigned char 
#define idl_short_int           signed short 
#define idl_ushort_int          unsigned short 
#define idl_long_int            long 
#define idl_ulong_int           unsigned long 
#define boolean32               unsigned long 
#define unsigned32              unsigned long 
#define unsigned16              unsigned short 
#define idl_true                1 
#define idl_false               0 
#define unsigned_char_t         unsigned char 
typedef unsigned char __RPC_FAR *unsigned_char_p_t; 
typedef void __RPC_FAR          *idl_void_p_t; 
 
#ifndef _ERROR_STATUS_T_DEFINED 
typedef unsigned long error_status_t; 
#define _ERROR_STATUS_T_DEFINED 
#endif 
 
/* 
** Define various DCE RPC types 
*/ 
#define rpc_if_handle_t             RPC_IF_HANDLE 
#define rpc_ns_handle_t             RPC_NS_HANDLE 
#define rpc_authz_handle_t          RPC_AUTHZ_HANDLE 
#define rpc_auth_identity_handle_t  RPC_AUTH_IDENTITY_HANDLE 
#define rpc_sm_thread_handle_t      RPC_SS_THREAD_HANDLE 
#define rpc_mgr_epv_t               RPC_MGR_EPV __RPC_FAR * 
#define rpc_object_inq_fn_t         RPC_OBJECT_INQ_FN __RPC_FAR * 
#define rpc_auth_key_retrieval_fn_t RPC_AUTH_KEY_RETRIEVAL_FN 
#define rpc_mgmt_authorization_fn_t RPC_MGMT_AUTHORIZATION_FN 
 
/* 
** Define rpc_binding_vector_t to match DCE 
*/ 
#ifdef rpc_binding_vector_t 
#undef rpc_binding_vector_t 
#endif 
 
typedef struct 
{ 
     unsigned long           count; 
     handle_t                binding_h[1]; 
} rpc_binding_vector_t, __RPC_FAR *rpc_binding_vector_p_t; 
 
/* 
** Define rpc_protseq_vector_t to match DCE 
*/ 
 
typedef struct 
{ 
    unsigned long           count; 
    unsigned char *         protseq[1]; 
} rpc_protseq_vector_t, __RPC_FAR *rpc_protseq_vector_p_t; 
 
/* 
** Define rpc_stats_vector_t to match DCE 
*/ 
 
typedef struct 
{ 
    unsigned long           count; 
    unsigned long           stats[1]; 
} rpc_stats_vector_t, __RPC_FAR *rpc_stats_vector_p_t; 
 
/* 
** Define uuid_t to match DCE 
*/ 
#ifdef uuid_t 
#undef uuid_t 
#endif 
 
typedef struct 
{ 
    unsigned long            time_low; 
    unsigned short           time_mid; 
    unsigned short           time_hi_and_version; 
    unsigned char            clock_seq_hi_and_reserved; 
    unsigned char            clock_seq_low; 
    unsigned char            node[6]; 
} uuid_t, __RPC_FAR *uuid_p_t; 
 
/* 
** Define uuid_vector_t to match DCE 
*/ 
#ifdef uuid_vector_t 
#undef uuid_vector_t 
#endif 
 
typedef struct 
{ 
     unsigned long           count; 
     uuid_p_t                uuid[1]; 
} uuid_vector_t, __RPC_FAR *uuid_vector_p_t; 
 
/* 
** Define rpc_if_id_t and rpc_if_id_p_t to match DCE 
*/ 
 
typedef struct 
{ 
    uuid_t                   uuid; 
    unsigned short           vers_major; 
    unsigned short           vers_minor; 
} rpc_if_id_t, __RPC_FAR *rpc_if_id_p_t; 
 
/* 
** Define rpc_if_id_vector_t to match DCE 
*/ 
 
typedef struct 
{ 
    unsigned long           count; 
    rpc_if_id_p_t           if_id[1]; 
} rpc_if_id_vector_t, __RPC_FAR *rpc_if_id_vector_p_t; 
 
/* 
** The MinThreads parameters to RpcServerListen() 
** is not part of the DCE API rpc_server_listen(). 
** This is the default value. 
*/ 
 
#define rpc_c_listen_min_threads_default 1 
 
/* 
** Define various constants 
*/ 
#define rpc_c_ns_syntax_default            RPC_C_NS_SYNTAX_DEFAULT 
#define rpc_c_ns_syntax_dce                RPC_C_SYNTAX_DCE 
#define rpc_c_ns_default_exp_age           RPC_C_DEFAULT_EXP_AGE 
#define rpc_c_protseq_max_reqs_default     RPC_C_PROTSEQ_MAX_REQS_DEFAULT 
#define rpc_c_protseq_max_calls_default    RPC_C_PROTSEQ_MAX_REQS_DEFAULT 
#define rpc_c_listen_max_calls_default     RPC_C_LISTEN_MAX_CALLS_DEFAULT 
#define rpc_c_ep_all_elts                  RPC_C_EP_ALL_ELTS 
#define rpc_c_ep_match_by_if               RPC_C_EP_MATCH_BY_IF 
#define rpc_c_ep_match_by_obj              RPC_C_EP_MATCH_BY_OBJ 
#define rpc_c_ep_match_by_both             RPC_C_EP_MATCH_BY_BOTH 
#define rpc_c_vers_all                     RPC_C_VERS_ALL 
#define rpc_c_vers_compatible              RPC_C_VERS_COMPATIBLE 
#define rpc_c_vers_exact                   RPC_C_VERS_EXACT 
#define rpc_c_vers_major_only              RPC_C_VERS_MAJOR_ONLY 
#define rpc_c_vers_upto                    RPC_C_VERS_UPTO 
#define rpc_c_profile_default_elt          RPC_C_PROFILE_DEFAULT_ELT 
#define rpc_c_profile_all_elts             RPC_C_PROFILE_ALL_ELTS 
#define rpc_c_profile_match_by_if          RPC_C_PROFILE_MATCH_BY_IF 
#define rpc_c_profile_match_by_mbr         RPC_C_PROFILE_MATCH_BY_MBR 
#define rpc_c_profile_match_by_both        RPC_C_PROFILE_MATCH_BY_BOTH 
#define rpc_c_binding_min_timeout          RPC_C_BINDING_MIN_TIMEOUT 
#define rpc_c_binding_default_timeout      RPC_C_BINDING_DEFAULT_TIMEOUT 
#define rpc_c_binding_max_timeout          RPC_C_BINDING_MAX_TIMEOUT 
#define rpc_c_binding_infinite_timeout     RPC_C_BINDING_INFINITE_TIMEOUT 
#define rpc_c_stats_calls_in               RPC_C_STATS_CALLS_IN 
#define rpc_c_stats_calls_out              RPC_C_STATS_CALLS_OUT 
#define rpc_c_stats_pkts_in                RPC_C_STATS_PKTS_IN 
#define rpc_c_stats_pkts_out               RPC_C_STATS_PKTS_OUT 
#define rpc_c_mgmt_inq_if_ids              RPC_C_MGMT_INQ_IF_IDS 
#define rpc_c_mgmt_inq_princ_name          RPC_C_MGMT_INQ_PRINC_NAME 
#define rpc_c_mgmt_inq_stats               RPC_C_MGMT_INQ_STATS 
#define rpc_c_mgmt_inq_server_listen       RPC_C_MGMT_INQ_SERVER_LISTEN 
#define rpc_c_mgmt_stop_server_listen      RPC_C_MGMT_STOP_SERVER_LISTEN 
#define rpc_c_mgmt_cancel_infinite_timeout RPC_C_CANCEL_INFINITE_TIMEOUT 
 
/* 
** Define DCE API equivalents 
*/ 
#define rpc_binding_copy(source,dest,status) \ 
                *(status) = RpcBindingCopy(source,dest) 
 
#define rpc_binding_free(binding,status) *(status) = RpcBindingFree(binding) 
 
#define rpc_binding_from_string_binding(string_binding,binding,status) \ 
                *(status) = RpcBindingFromStringBinding(string_binding,binding) 
 
#define rpc_binding_inq_auth_client(binding,privs,princ_name,protect_level, \ 
                authn_svc,authz_svc,status) \ 
                *(status) = RpcBindingInqAuthClient(binding,privs,princ_name, \ 
                protect_level,authn_svc,authz_svc) 
 
#define rpc_binding_inq_auth_info(binding,princ_name,protect_level,\ 
                authn_svc,auth_identity,authz_svc,status) \ 
                *(status) = RpcBindingInqAuthInfo(binding,princ_name, \ 
                protect_level,authn_svc,auth_identity,authz_svc) 
 
#define rpc_binding_inq_object(binding,object_uuid,status) \ 
                *(status) = RpcBindingInqObject(binding,\ 
                (UUID __RPC_FAR *)object_uuid) 
 
#define rpc_binding_reset(binding,status) *(status) = RpcBindingReset(binding) 
 
#define rpc_binding_server_from_client(cbinding,sbinding,status) \ 
                *(status) = RpcBindingServerFromClient(cbinding,sbinding) 
 
#define rpc_binding_set_auth_info(binding,princ_name,protect_level,\ 
                authn_svc,auth_identity,authz_svc,status) \ 
                *(status) = RpcBindingSetAuthInfo(binding,princ_name,\ 
                protect_level,authn_svc,auth_identity,authz_svc) 
 
#define rpc_binding_set_object(binding,object_uuid,status) \ 
                *(status) = RpcBindingSetObject(binding,\ 
                (UUID __RPC_FAR *)object_uuid) 
 
#define rpc_binding_to_string_binding(binding,string_binding,status) \ 
                *(status) = RpcBindingToStringBinding(binding,string_binding) 
 
#define rpc_binding_vector_free(binding_vector,status) \ 
                *(status) = RpcBindingVectorFree(\ 
                (RPC_BINDING_VECTOR __RPC_FAR * __RPC_FAR *)binding_vector) 
 
#define rpc_ep_register(if_spec,binding_vec,object_uuid_vec,annotation,\ 
                status)\ 
                *(status) = RpcEpRegister(if_spec,\ 
                (RPC_BINDING_VECTOR __RPC_FAR *)binding_vec, \ 
                (UUID_VECTOR __RPC_FAR *)object_uuid_vec, annotation) 
 
#define rpc_ep_register_no_replace(if_spec,binding_vec,object_uuid_vec,\ 
                annotation,status) \ 
                *(status) = RpcEpRegisterNoReplace(if_spec,\ 
                (RPC_BINDING_VECTOR __RPC_FAR *)binding_vec,\ 
                (UUID_VECTOR __RPC_FAR *)object_uuid_vec,annotation) 
 
#define rpc_ep_resolve_binding(binding_h,if_spec,status) \ 
                *(status) = RpcEpResolveBinding(binding_h,if_spec) 
 
#define rpc_ep_unregister(if_spec,binding_vec,object_uuid_vec,status) \ 
                *(status) = RpcEpUnregister(if_spec,\ 
                (RPC_BINDING_VECTOR __RPC_FAR *)binding_vec,\ 
                (UUID_VECTOR __RPC_FAR *)object_uuid_vec) 
 
#define rpc_if_id_vector_free(if_id_vector,status) \ 
                *(status) = RpcIfIdVectorFree(\ 
                (RPC_IF_ID_VECTOR __RPC_FAR * __RPC_FAR *)if_id_vector) 
 
#define rpc_if_inq_id(if_spec,if_id,status) \ 
                *(status) = RpcIfInqId(if_spec,(RPC_IF_ID __RPC_FAR *)if_id) 
 
#define rpc_if_register_auth_info(if_spec,princ_name,protect_level,\ 
                authn_svc,auth_identity,authz_svc,status) \ 
                *(status) = RpcIfRegisterAuthInfo(if_spec,princ_name,\ 
                protect_level,authn_svc,auth_identity,authz_svc) 
 
#define rpc_mgmt_ep_elt_inq_begin(ep_binding,inquiry_type,if_id,vers_option,\ 
                object_uuid,inquiry_context,status) \ 
                *(status) = RpcMgmtEpEltInqBegin(ep_binding,inquiry_type,if_id,\ 
                vers_option,object_uuid,inquiry_context) 
 
#define rpc_mgmt_ep_elt_inq_done(inquiry_context,status) \ 
                *(status) = RpcMgmtEpEltInqDone(inquiry_context) 
 
#define rpc_mgmt_ep_elt_inq_next(inquiry_context,if_id,binding,object_uuid,\ 
                annotation,status) \ 
                *(status) = RpcMgmtEpEltInqNext(inquiry_context,if_id,binding,\ 
                object_uuid,annotation) 
 
#define rpc_mgmt_ep_unregister(ep_binding,if_id,binding,object_uuid,status) \ 
                *(status) = RpcMgmtEpUnregister(ep_binding,if_id,binding,\ 
                object_uuid) 
 
#define rpc_mgmt_inq_com_timeout(binding,timeout,status) \ 
                *(status) = RpcMgmtInqComTimeout(binding,timeout) 
 
#define rpc_mgmt_inq_dflt_protect_level(authn_svc,level,status) \ 
                *(status) = RpcMgmtInqDefaultProtectLevel(authn_svc,level) 
 
#define rpc_mgmt_inq_if_ids(binding,if_id_vector,status) \ 
                *(status) = RpcMgmtInqIfIds((bindings),\ 
                (RPC_IF_ID_VECTOR __RPC_FAR * __RPC_FAR *)(if_id_vector)) 
 
#define rpc_mgmt_inq_server_princ_name(binding,authn_svc,princ_name,status) \ 
                *(status) = RpcMgmtInqServerPrincName(binding,authn_svc,\ 
                princ_name) 
 
#define rpc_mgmt_inq_stats(binding,statistics,status) \ 
                *(status) = RpcMgmtInqStats(binding,\ 
                (RPC_STATS_VECTOR __RPC_FAR * __RPC_FAR *)statistics) 
 
#define rpc_mgmt_is_server_listening(binding,status) \ 
                ( ((*(status) = RpcMgmtIsServerListening(binding)) == RPC_S_OK) \ 
                ? (1) : (*(status) == RPC_S_NOT_LISTENING) \ 
                ? (*(status) = RPS_S_OK, 0) : (0) ) 
 
#define rpc_mgmt_set_authorization_fn(authz_fn,status) \ 
                *(status) = RpcMgmtSetAuthorizathionFn(authz_fn) 
 
#define rpc_mgmt_set_cancel_timeout(seconds,status) \ 
                *(status) = RpcMgmtSetCancelTimeout(seconds) 
 
#define rpc_mgmt_set_com_timeout(binding,timeout,status) \ 
                *(status) = RpcMgmtSetComTimeout(binding,timeout) 
 
#define rpc_mgmt_set_server_stack_size(size,status) \ 
                *(status) = RpcMgmtSetServerStackSize(size) 
 
#define rpc_mgmt_stats_vector_free(stats,status) \ 
                *(status) = RpcMgmtStatsVectorFree(\ 
                (RPC_STATS_VECTOR __RPC_FAR * __RPC_FAR *)stats) 
 
#define rpc_mgmt_stop_server_listening(binding,status) \ 
                *(status) = RpcMgmtStopServerListening(binding) 
 
#define rpc_network_inq_protseqs(prots,status) \ 
                *(status) = RpcNetworkInqProtseqs(\ 
                (RPC_PROTSEQ_VECTOR __RPC_FAR * __RPC_FAR *)prots) 
 
#define rpc_network_is_protseq_valid(protseq,status) \ 
                *(status) = RpcNetworkIsProtseqValid(protseq) 
 
/* 
** Define NSI equivalents 
*/ 
#define rpc_ns_binding_export(name_syntax,entry_name,if_spec,\ 
                binding_vector, uuid_vector,status) \ 
                *(status) = RpcNsBindingExport(name_syntax,entry_name,\ 
                if_spec, (RPC_BINDING_VECTOR *)binding_vector,\ 
                (UUID_VECTOR __RPC_FAR *)uuid_vector) 
 
#define rpc_ns_binding_import_begin(name_syntax,entry_name,if_spec,\ 
                object_uuid,import_context,status) \ 
                *(status) = RpcNsBindingImportBegin(name_syntax,entry_name,\ 
                if_spec,(UUID __RPC_FAR *)object_uuid,import_context) 
 
#define rpc_ns_binding_import_done(import_context,status) \ 
                *(status) = RpcNsBindingImportDone(import_context) 
 
#define rpc_ns_binding_import_next(import_context,binding,status) \ 
                *(status) = RpcNsBindingImportNext(import_context,binding) 
 
#define rpc_ns_binding_inq_entry_name(binding,name_syntax,entry_name,status)\ 
                *(status) = RpcNsBindingInqEntryName(binding,name_syntax,\ 
                entry_name) 
 
#define rpc_ns_binding_lookup_begin(name_syntax,entry_name,if_spec,\ 
                object_uuid,max_count,lookup_context,status) \ 
                *(status) = RpcNsBindingLookupBegin(name_syntax,entry_name,\ 
                if_spec,(UUID __RPC_FAR *)object_uuid,max_count,lookup_context) 
 
#define rpc_ns_binding_lookup_done(lookup_context,status) \ 
                *(status) = RpcNsBindingLookupDone(lookup_context) 
 
#define rpc_ns_binding_lookup_next(lookup_context,binding_vector,status) \ 
                *(status) = RpcNsBindingLookupNext(lookup_context, \ 
                (RPC_BINDING_VECTOR __RPC_FAR * __RPC_FAR *)binding_vector) 
 
#define rpc_ns_binding_select(binding_vector,binding,status) \ 
                *(status) = RpcNsBindingSelect(\ 
                (RPC_BINDING_VECTOR __RPC_FAR *)binding_vector,binding) 
 
#define rpc_ns_binding_unexport(name_syntax,entry_name,if_spec,\ 
                uuid_vector,status) \ 
                *(status) = RpcNsBindingUnexport(name_syntax,entry_name,\ 
                if_spec, (UUID_VECTOR __RPC_FAR *)uuid_vector) 
 
#define rpc_ns_entry_expand_name(name_syntax,entry_name,expanded_name,\ 
                status)\ 
                *(status) = RpcNsEntryExpandName(name_syntax,entry_name,\ 
                expanded_name) 
 
#define rpc_ns_entry_object_inq_begin(name_syntax,entry_name,\ 
                inquiry_context,status)\ 
                *(status) = RpcNsEntryObjectInqBegin(name_syntax,\ 
                entry_name,inquiry_context) 
 
#define rpc_ns_entry_object_inq_done(inquiry_context,status) \ 
                *(status) = RpcNsEntryObjectInqDone(inquiry_context) 
 
#define rpc_ns_entry_object_inq_next(inquiry_context,object_uuid,status) \ 
                *(status) = RpcNsEntryObjectInqNext(inquiry_context,\ 
                (UUID __RPC_FAR *)object_uuid) 
 
#define rpc_ns_group_delete(name_syntax,group_name,status) \ 
                *(status) = RpcNsGroupDelete(name_syntax,group_name) 
 
#define rpc_ns_group_mbr_add(name_syntax,group_name,member_name_syntax,\ 
                member_name,status) \ 
                *(status) = RpcNsGroupMbrAdd(name_syntax,group_name,\ 
                member_name_syntax,member_name) 
 
#define rpc_ns_group_mbr_inq_begin(name_syntax,group_name,member_name_syntax,\ 
                inquiry_context,status) \ 
                *(status) = RpcNsGroupMbrInqBegin(name_syntax,group_name,\ 
                member_name_syntax,inquiry_context) 
 
#define rpc_ns_group_mbr_inq_done(inquiry_context,status) \ 
                *(status) = RpcNsGroupMbrInqDone(inquiry_context) 
 
#define rpc_ns_group_mbr_inq_next(inquiry_context,member_name,status) \ 
                *(status) = RpcNsGroupMbrInqNext(inquiry_context,member_name) 
 
#define rpc_ns_group_mbr_remove(name_syntax,group_name,member_name_syntax,\ 
                member_name,status) \ 
                *(status) = RpcNsGroupMbrRemove(name_syntax,group_name,\ 
                member_name_syntax,member_name) 
 
#define rpc_ns_mgmt_binding_unexport(name_syntax,entry_name,if_id,vers_option,\ 
                uuid_vector,status) \ 
                *(status) = RpcNsMgmtBindingUnexport(name_syntax,entry_name,\ 
                (RPC_IF_ID __RPC_FAR *)if_id,vers_option,\ 
                (UUID_VECTOR __RPC_FAR *)uuid_vector) 
 
#define rpc_ns_mgmt_entry_create(name_syntax,entry_name,status) \ 
                *(status) = RpcNsMgmtEntryCreate(name_syntax,entry_name) 
 
#define rpc_ns_mgmt_entry_delete(name_syntax,entry_name,status) \ 
                *(status) = RpcNsMgmtEntryDelete(name_syntax,entry_name) 
 
#define rpc_ns_mgmt_entry_inq_if_ids(name_syntax,entry_name,if_id_vector,\ 
                status) \ 
                *(status) = RpcNsMgmtEntryInqIfIds(name_syntax,entry_name,\ 
                (RPC_IF_ID_VECTOR __RPC_FAR * __RPC_FAR *)if_id_vector) 
 
#define rpc_ns_mgmt_handle_set_exp_age(ns_handle,expiration_age,status) \ 
                *(status) = RpcNsMgmtHandleSetExpAge(ns_handle,expiration_age) 
 
#define rpc_ns_mgmt_inq_exp_age(expiration_age,status) \ 
                *(status) = RpcNsMgmtInqExpAge(expiration_age) 
 
#define rpc_ns_mgmt_set_exp_age(expiration_age,status) \ 
                *(status) = RpcNsMgmtSetExpAge(expiration_age) 
 
#define rpc_ns_profile_delete(name_syntax,profile_name,status) \ 
                *(status) = RpcNsProfileDelete(name_syntax,profile_name) 
 
#define rpc_ns_profile_elt_add(name_syntax,profile_name,if_id,\ 
                member_name_syntax,member_name,priority,annotation,status) \ 
                *(status) = RpcNsProfileEltAdd(name_syntax,profile_name,\ 
                (RPC_IF_ID __RPC_FAR *)if_id,member_name_syntax,member_name,\ 
                priority,annotation) 
 
#define rpc_ns_profile_elt_inq_begin(name_syntax,profile_name,inquiry_type,\ 
                if_id,if_vers_option,member_name_syntax,\ 
                member_name,inquiry_context,status) \ 
                *(status) = RpcNsProfileEltInqBegin(name_syntax,profile_name,\ 
                inquiry_type,(RPC_IF_ID __RPC_FAR *)if_id,if_vers_option,\ 
                member_name_syntax,member_name,inquiry_context) 
 
#define rpc_ns_profile_elt_inq_done(inquiry_context,status) \ 
                *(status) = RpcNsProfileEltInqDone(inquiry_context) 
 
#define rpc_ns_profile_elt_inq_next(inquiry_context,if_id,member_name,\ 
                priority,annotation,status) \ 
                *(status) = RpcNsProfileEltInqNext(inquiry_context,\ 
                (RPC_IF_ID __RPC_FAR *)if_id,member_name,priority,annotation) 
 
#define rpc_ns_profile_elt_remove(name_syntax,profile_name,if_id,\ 
                member_name_syntax,member_name,status) \ 
                *(status) = RpcNsProfileEltRemove(name_syntax,profile_name,\ 
                (RPC_IF_ID __RPC_FAR *)if_id,member_name_syntax,member_name) 
 
#define rpc_object_inq_type(object_uuid,type_uuid,status) \ 
                *(status) = RpcObjectInqType((UUID __RPC_FAR *)object_uuid,\ 
                (UUID __RPC_FAR *)type_uuid) 
 
#define rpc_object_set_inq_fn(inq_fn,status) \ 
                *(status) = RpcObjectSetInqFn(inq_fn) 
 
#define rpc_object_set_type(object_uuid,type_uuid,status) \ 
                *(status) = RpcObjectSetType((UUID __RPC_FAR *)object_uuid,\ 
                (UUID __RPC_FAR *)type_uuid) 
 
#define rpc_protseq_vector_free(protseq_vector,status) \ 
                *(status) = RpcProtseqVectorFree( \ 
                (RPC_PROTSEQ_VECTOR __RPC_FAR * __RPC_FAR *)protseq_vector) 
 
#define rpc_server_inq_bindings(binding_vector,status) \ 
                *(status) = RpcServerInqBindings(\ 
                (RPC_BINDING_VECTOR __RPC_FAR * __RPC_FAR *)binding_vector) 
 
#define rpc_server_inq_if(if_spec,type_uuid,mgr_epv,status) \ 
                *(status) = RpcServerInqIf(if_spec,(UUID __RPC_FAR *)type_uuid,\ 
                (RPC_MGR_EPV __RPC_FAR *)mgr_epv) 
 
#define rpc_server_listen(max_calls,status) \ 
                *(status) = RpcServerListen(rpc_c_listen_min_threads_default,\ 
                max_calls,0) 
 
#define rpc_server_register_auth_info(princ_name,auth_svc,get_key_func,arg,\ 
                status) \ 
                *(status) = RpcServerRegisterAuthInfo(princ_name,auth_svc,\ 
                get_key_func,arg) 
 
#define rpc_server_register_if(if_spec,type_uuid,mgr_epv,status) \ 
                *(status) = RpcServerRegisterIf(if_spec,\ 
                (UUID __RPC_FAR *)type_uuid,(RPC_MGR_EPV __RPC_FAR *)mgr_epv) 
 
#define rpc_server_unregister_if(if_spec,type_uuid,status) \ 
                *(status) = RpcServerUnregisterIf(if_spec,(UUID *)type_uuid,0) 
 
#define rpc_server_use_all_protseqs(max_call_requests,status) \ 
                *(status) = RpcServerUseAllProtseqs(max_call_requests,0) 
 
#define rpc_server_use_all_protseqs_if(max_call_requests,if_spec,status) \ 
                *(status) = RpcServerUseAllProtseqsIf(max_call_requests,\ 
                if_spec,0) 
 
#define rpc_server_use_protseq(protseq,max_call_requests,status) \ 
                *(status) = RpcServerUseProtseq(protseq,max_call_requests,0) 
 
#define rpc_server_use_protseq_ep(protseq,max_call_requests,endpoint,status)\ 
                *(status) = RpcServerUseProtseqEp(protseq,max_call_requests,\ 
                endpoint,0) 
 
#define rpc_server_use_protseq_if(protseq,max_call_requests,if_spec,status) \ 
                *(status) = RpcServerUseProtseqIf(protseq,max_call_requests,\ 
                if_spec,0) 
 
#define rpc_sm_alloce(size,status) *(status) = RpcSmAllocate(size) 
 
#define rpc_sm_client_free(ptr,status) *(status) = RpcSmClientFree(ptr) 
 
#define rpc_sm_destroy_client_context(context,status) \ 
                *(status) = RpcSmDestroyClientContext(context) 
 
#define rpc_sm_disable_allocate(status) *(status) = RpcSmDisableAllocate() 
 
#define rpc_sm_enable_allocate(status) *(status) = RpcSmEnableAllocate() 
 
#define rpc_sm_free(ptr,status) *(status) = RpcSmFree(ptr) 
 
#define rpc_sm_get_thread_handle(status) RpcSmGetThreadHandle(status) 
 
#define rpc_sm_set_client_alloc_free(alloc,free,status) \ 
                *(status) = RpcSmSetClientAllocFree(alloc,free) 
 
#define rpc_sm_set_thread_handle(id,status) \ 
                *(status) = RpcSmSetThreadHandle(id) 
 
#define rpc_sm_swap_client_alloc_free(alloc,free,old_alloc,old_free,status) \ 
                *(status) = RpcSmSwapClientAllocFree(alloc,free \ 
                old_alloc, old_free) 
 
#define rpc_string_binding_compose(object_uuid,protseq,netaddr,endpoint,\ 
                options,binding,status) \ 
                *(status) = RpcStringBindingCompose(object_uuid,protseq,\ 
                netaddr,endpoint,options,binding) 
 
#define rpc_string_binding_parse(string_binding,object_uuid,protseq,netaddr,\ 
                endpoint,options,status) \ 
                *(status) = RpcStringBindingParse(string_binding,\ 
                object_uuid,protseq,netaddr,endpoint,options) 
 
#define rpc_string_free(string,status) *(status) = RpcStringFree(string) 
 
#define uuid_compare(uuid1,uuid2,status) \ 
                UuidCompare((UUID __RPC_FAR *)(uuid1),\ 
                            (UUID __RPC_FAR *)(uuid2),(status)) 
 
#define uuid_create(uuid,status) \ 
                *(status) = UuidCreate((UUID __RPC_FAR *)uuid) 
 
#define uuid_create_nil(uuid,status) \ 
                *(status) = UuidCreateNil((UUID __RPC_FAR *)uuid) 
 
#define uuid_equal(uuid1,uuid2,status) \ 
                UuidEqual((UUID __RPC_FAR *)(uuid1), \ 
                          (UUID __RPC_FAR *)(uuid2), (status)) 
 
#define uuid_from_string(string,uuid,status) \ 
                *(status) = UuidFromString(string,(UUID __RPC_FAR *)uuid) 
 
#define uuid_hash(uuid,status) \ 
                UuidHash((UUID __RPC_FAR *)(uuid),(status)) 
 
#define uuid_is_nil(uuid,status) \ 
                UuidIsNil((UUID __RPC_FAR *)(uuid), (status)) 
 
#define uuid_to_string(uuid,string,status)\ 
                *(status) = UuidToString((UUID __RPC_FAR *)uuid,string) 
 
 
#define true  1 
#define false 0 
 
/* 
** Define exception handling equivalents 
** 
*/ 
#if defined (__RPC_WIN16__) || defined (__RPC_DOS__) 
 
#define TRY                                       \ 
    {                                                \ 
    int _exception_mode_finally;                     \ 
    int _exception_code;                             \ 
    ExceptionBuff exception;                         \ 
    _exception_code = RpcSetException(&exception);   \ 
    if (!_exception_code)                            \ 
    { 
 
#define CATCH_ALL                                 \ 
        _exception_mode_finally = false;             \ 
        RpcLeaveException();                         \ 
        }                                            \ 
        else                                         \ 
        { 
/* 
 * #define CATCH(X)                               \ 
 *   }else if ((unsigned long)RpcExceptionCode()==(unsigned long)X) { 
 */ 
#define FINALLY                                   \ 
        _exception_mode_finally = true;              \ 
        RpcLeaveException();                         \ 
        } { 
#define ENDTRY                                    \ 
          }                                               \ 
        if (_exception_mode_finally && _exception_code)  \ 
            RpcRaiseException(_exception_code);           \ 
        } 
 
#endif /* WIN16 or DOS */ 
 
 
#if defined (__RPC_WIN32__) 
#define TRY             try { 
/* 
 * #define CATCH(X)        \ 
 *                      } except (GetExceptionCode() == X ? \ 
 *                        EXCEPTION_EXECUTE_HANDLER : \ 
 *                        EXCEPTION_CONTINUE_SEARCH) { 
 */ 
#define CATCH_ALL       } except (EXCEPTION_EXECUTE_HANDLER) { 
#define FINALLY         } finally { 
#define ENDTRY          } 
#endif /* WIN32 */ 
 
#define RAISE(v)   RpcRaiseException(v) 
#define RERAISE    RpcRaiseException(RpcExceptionCode()) 
#define THIS_CATCH RpcExceptionCode() 
 
/* 
** DCE Status code mappings 
*/ 
#ifndef rpc_s_ok 
#define rpc_s_ok                        RPC_S_OK 
#endif 
#ifndef error_status_ok 
#define error_status_ok                 RPC_S_OK 
#endif 
#define ept_s_cant_perform_op           EPT_S_CANT_PERFORM_OP 
#define ept_s_invalid_entry             EPT_S_INVALID_ENTRY 
#define ept_s_not_registered            EPT_S_NOT_REGISTERED 
#define rpc_s_already_listening         RPC_S_ALREADY_LISTENING 
#define rpc_s_already_registered        RPC_S_ALREADY_REGISTERED 
#define rpc_s_binding_has_no_auth       RPC_S_BINDING_HAS_NO_AUTH 
#define rpc_s_binding_imcomplete        RPC_S_BINDING_IMCOMPLETE 
#define rpc_s_call_cancelled            RPC_S_CALL_CANCELLED 
#define rpc_s_call_failed               RPC_S_CALL_FAILED 
#define rpc_s_cant_bind_socket          RPC_S_CANNOT_BIND 
#define rpc_s_cant_create_socket        RPC_S_CANT_CREATE_ENDPOINT 
#define rpc_s_comm_failure              RPC_S_COMM_FAILURE 
#define rpc_s_connect_no_resources      RPC_S_OUT_OF_RESOURCES 
#define rpc_s_cthread_create_failed     RPC_S_OUT_OF_THREADS 
#define rpc_s_endpoint_not_found        RPC_S_NO_ENDPOINT_FOUND 
#define rpc_s_entry_already_exists      RPC_S_ENTRY_ALREADY_EXISTS 
#define rpc_s_entry_not_found           RPC_S_ENTRY_NOT_FOUND 
#define rpc_s_fault_addr_error          RPC_S_ADDRESS_ERROR 
#define rpc_s_fault_fp_div_by_zero      RPC_S_FP_DIV_ZERO 
#define rpc_s_fault_fp_overflow         RPC_S_FP_OVERFLOW 
#define rpc_s_fault_fp_underflow        RPC_S_FP_UNDERFLOW 
#define rpc_s_fault_int_div_by_zero     RPC_S_ZERO_DIVIDE 
#define rpc_s_fault_invalid_bound       RPC_S_INVALID_BOUND 
#define rpc_s_fault_invalid_tag         RPC_S_INVALID_TAG 
#define rpc_s_fault_remote_no_memory    RPC_S_SERVER_OUT_OF_MEMORY 
#define rpc_s_fault_unspec              RPC_S_CALL_FAILED 
#define rpc_s_incomplete_name           RPC_S_INCOMPLETE_NAME 
#define rpc_s_interface_not_found       RPC_S_INTERFACE_NOT_FOUND 
#define rpc_s_internal_error            RPC_S_INTERNAL_ERROR 
#define rpc_s_inval_net_addr            RPC_S_INVALID_NET_ADDR 
#define rpc_s_invalid_arg               RPC_S_INVALID_ARG 
#define rpc_s_invalid_binding           RPC_S_INVALID_BINDING 
#define rpc_s_invalid_endpoint_format   RPC_S_INVALID_ENDPOINT_FORMAT 
#define rpc_s_invalid_naf_id            RPC_S_INVALID_NAF_IF 
#define rpc_s_invalid_name_syntax       RPC_S_INVALID_NAME_SYNTAX 
#define rpc_s_invalid_rpc_protseq       RPC_S_INVALID_RPC_PROTSEQ 
#define rpc_s_invalid_string_binding    RPC_S_INVALID_STRING_BINDING 
#define rpc_s_invalid_timeout           RPC_S_INVALID_TIMEOUT 
#define rpc_s_invalid_vers_option       RPC_S_INVALID_VERS_OPTION 
#define rpc_s_max_calls_too_small       RPC_S_MAX_CALLS_TOO_SMALL 
#define rpc_s_mgmt_op_disallowed        RPC_S_ACCESS_DENIED 
#define rpc_s_name_service_unavailable  RPC_S_NAME_SERVICE_UNAVAILABLE 
#define rpc_s_no_bindings               RPC_S_NO_BINDINGS 
#define rpc_s_no_entry_name             RPC_S_NO_ENTRY_NAME 
#define rpc_s_no_interfaces             RPC_S_NO_INTERFACES 
#define rpc_s_no_interfaces_exported    RPC_S_NO_INTERFACES_EXPORTED 
#define rpc_s_no_memory                 RPC_S_OUT_OF_MEMORY 
#define rpc_s_no_more_elements          RPC_X_NO_MORE_ENTRIES 
#define rpc_s_no_more_bindings          RPC_S_NO_MORE_BINDINGS 
#define rpc_s_no_more_members           RPC_S_NO_MORE_MEMBERS 
#define rpc_s_no_ns_permission          RPC_S_ACCESS_DENIED 
#define rpc_s_no_princ_name             RPC_S_NO_PRINC_NAME 
#define rpc_s_no_protseqs               RPC_S_NO_PROTSEQS 
#define rpc_s_no_protseqs_registered    RPC_S_NO_PROTSEQS_REGISTERED 
#define rpc_s_not_rpc_tower             RPC_S_CANNOT_SUPPORT 
#define rpc_s_not_supported             RPC_S_CANNOT_SUPPORT 
#define rpc_s_not_authorized            RPC_S_ACCESS_DENIED 
#define rpc_s_nothing_to_unexport       RPC_S_NOTHING_TO_UNEXPORT 
#define rpc_s_object_not_found          RPC_S_OBJECT_NOT_FOUND 
#define rpc_s_protocol_error            RPC_S_PROTOCOL_ERROR 
#define rpc_s_protseq_not_supported     RPC_S_PROTSEQ_NOT_SUPPORTED 
#define rpc_s_server_too_busy           RPC_S_SERVER_TOO_BUSY 
#define rpc_s_string_too_long           RPC_S_STRING_TOO_LONG 
#define rpc_s_type_already_registered   RPC_S_TYPE_ALREADY_REGISTERED 
#define rpc_s_unknown_authn_service     RPC_S_UNKNOWN_AUTHN_SERVICE 
#define rpc_s_unknown_authz_service     RPC_S_UNKNOWN_AUTHZ_SERVICE 
#define rpc_s_unknown_if                RPC_S_UNKNOWN_IF 
#define rpc_s_unknown_mgr_type          RPC_S_UNKNOWN_MGR_TYPE 
#define rpc_s_unknown_reject            RPC_S_CALL_FAILED_DNE 
#define rpc_s_unsupported_name_syntax   RPC_S_UNSUPPORTED_NAME_SYNTAX 
#define rpc_s_unsupported_type          RPC_S_UNSUPPORTED_TYPE 
#define rpc_s_wrong_boot_time           RPC_S_CALL_FAILED_DNE 
#define rpc_s_wrong_kind_of_binding     RPC_S_WRONG_KIND_OF_BINDING 
#define uuid_s_ok                       RPC_S_OK 
#define uuid_s_internal_error           RPC_S_INTERNAL_ERROR 
#define uuid_s_invalid_string_uuid      RPC_S_INVALID_STRING_UUID 
#define uuid_s_no_address               RPC_S_UUID_NO_ADDRESS 
 
/* 
** DCE Exception mappings 
*/ 
 
#define rpc_x_comm_failure              RPC_S_COMM_FAILURE 
#define rpc_x_connect_no_resources      RPC_S_OUT_OF_RESOURCES 
#define rpc_x_entry_not_found           RPC_S_ENTRY_NOT_FOUND 
#define rpc_x_incomplete_name           RPC_S_INCOMPLETE_NAME 
#define rpc_x_invalid_arg               RPC_S_INVALID_ARG 
#define rpc_x_invalid_binding           RPC_S_INVALID_BINDING 
#define rpc_x_invalid_bound             RPC_X_INVALID_BOUND 
#define rpc_x_invalid_endpoint_format   RPC_S_INVALID_ENDPOINT_FORMAT 
#define rpc_x_invalid_naf_id            RPC_S_INVALID_NAF_IF 
#define rpc_x_invalid_name_syntax       RPC_S_INVALID_NAME_SYNTAX 
#define rpc_x_invalid_rpc_protseq       RPC_S_INVALID_RPC_PROTSEQ 
#define rpc_x_invalid_tag               RPC_X_INVALID_TAG 
#define rpc_x_invalid_timeout           RPC_S_INVALID_TIMEOUT 
#define rpc_x_no_memory                 RPC_X_NO_MEMORY 
#define rpc_x_object_not_found          RPC_S_OBJECT_NOT_FOUND 
#define rpc_x_protocol_error            RPC_S_PROTOCOL_ERROR 
#define rpc_x_protseq_not_supported     RPC_S_PROTSEQ_NOT_SUPPORTED 
#define rpc_x_server_too_busy           RPC_S_SERVER_TOO_BUSY 
#define rpc_x_ss_char_trans_open_fail   RPC_X_SS_CHAR_TRANS_OPEN_FAIL 
#define rpc_x_ss_char_trans_short_file  RPC_X_SS_CHAR_TRANS_SHORT_FILE 
#define rpc_x_ss_context_damaged        RPC_X_SS_CONTEXT_DAMAGED 
#define rpc_x_ss_context_mismatch       RPC_X_SS_CONTEXT_MISMATCH 
#define rpc_x_ss_in_null_context        RPC_X_SS_IN_NULL_CONTEXT 
#define rpc_x_string_too_long           RPC_S_STRING_TOO_LONG 
#define rpc_x_unknown_if                RPC_S_UNKNOWN_IF 
#define rpc_x_unknown_mgr_type          RPC_S_UNKNOWN_MGR_TYPE 
#define rpc_x_unsupported_name_syntax   RPC_S_UNSUPPORTED_NAME_SYNTAX 
#define rpc_x_unsupported_type          RPC_S_UNSUPPORTED_TYPE 
#define rpc_x_wrong_boot_time           RPC_S_CALL_FAILED_DNE 
#define rpc_x_wrong_kind_of_binding     RPC_S_WRONG_KIND_OF_BINDING 
#define uuid_x_internal_error           RPC_S_INTERNAL_ERROR 
 
#ifdef __cplusplus 
} 
#endif 
 
#endif /* DCEPORT_H */