ReactOS 0.4.15-dev-7788-g1ad9096
rpcdce.h File Reference
#include <guiddef.h>
#include <rpcdcep.h>
Include dependency graph for rpcdce.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  _RPC_BINDING_VECTOR
 
struct  _UUID_VECTOR
 
struct  _RPC_IF_ID
 
struct  RPC_IF_ID_VECTOR
 
struct  RPC_STATS_VECTOR
 
struct  _RPC_PROTSEQ_VECTORA
 
struct  _RPC_PROTSEQ_VECTORW
 
struct  _RPC_POLICY
 
struct  _SEC_WINNT_AUTH_IDENTITY_W
 
struct  _SEC_WINNT_AUTH_IDENTITY_A
 
struct  _RPC_HTTP_TRANSPORT_CREDENTIALS_W
 
struct  _RPC_HTTP_TRANSPORT_CREDENTIALS_A
 
struct  _RPC_SECURITY_QOS
 
struct  _RPC_SECURITY_QOS_V2_W
 
struct  _RPC_SECURITY_QOS_V2_A
 

Macros

#define IN
 
#define OUT
 
#define OPTIONAL
 
#define UUID_DEFINED
 
#define rpc_binding_handle_t   RPC_BINDING_HANDLE
 
#define RPC_MGR_EPV   void
 
#define rpc_binding_vector_t   RPC_BINDING_VECTOR
 
#define uuid_vector_t   UUID_VECTOR
 
#define RPC_C_EP_ALL_ELTS   0
 
#define RPC_C_EP_MATCH_BY_IF   1
 
#define RPC_C_EP_MATCH_BY_OBJ   2
 
#define RPC_C_EP_MATCH_BY_BOTH   3
 
#define RPC_C_VERS_ALL   1
 
#define RPC_C_VERS_COMPATIBLE   2
 
#define RPC_C_VERS_EXACT   3
 
#define RPC_C_VERS_MAJOR_ONLY   4
 
#define RPC_C_VERS_UPTO   5
 
#define RPC_C_BINDING_INFINITE_TIMEOUT   10
 
#define RPC_C_BINDING_MIN_TIMEOUT   0
 
#define RPC_C_BINDING_DEFAULT_TIMEOUT   5
 
#define RPC_C_BINDING_MAX_TIMEOUT   9
 
#define RPC_C_CANCEL_INFINITE_TIMEOUT   -1
 
#define RPC_C_LISTEN_MAX_CALLS_DEFAULT   1234
 
#define RPC_C_PROTSEQ_MAX_REQS_DEFAULT   10
 
#define RPC_PROTSEQ_TCP   0x1
 
#define RPC_PROTSEQ_NMP   0x2
 
#define RPC_PROTSEQ_LRPC   0x3
 
#define RPC_PROTSEQ_HTTP   0x4
 
#define RPC_C_BIND_TO_ALL_NICS   0x1
 
#define RPC_C_USE_INTERNET_PORT   0x1
 
#define RPC_C_USE_INTRANET_PORT   0x2
 
#define RPC_C_DONT_FAIL   0x4
 
#define RPC_C_MQ_TEMPORARY   0x0000
 
#define RPC_C_MQ_PERMANENT   0x0001
 
#define RPC_C_MQ_CLEAR_ON_OPEN   0x0002
 
#define RPC_C_MQ_USE_EXISTING_SECURITY   0x0004
 
#define RPC_C_MQ_AUTHN_LEVEL_NONE   0x0000
 
#define RPC_C_MQ_AUTHN_LEVEL_PKT_INTEGRITY   0x0008
 
#define RPC_C_MQ_AUTHN_LEVEL_PKT_PRIVACY   0x0010
 
#define RPC_C_AUTHN_LEVEL_DEFAULT   0
 
#define RPC_C_AUTHN_LEVEL_NONE   1
 
#define RPC_C_AUTHN_LEVEL_CONNECT   2
 
#define RPC_C_AUTHN_LEVEL_CALL   3
 
#define RPC_C_AUTHN_LEVEL_PKT   4
 
#define RPC_C_AUTHN_LEVEL_PKT_INTEGRITY   5
 
#define RPC_C_AUTHN_LEVEL_PKT_PRIVACY   6
 
#define RPC_C_AUTHN_NONE   0
 
#define RPC_C_AUTHN_DCE_PRIVATE   1
 
#define RPC_C_AUTHN_DCE_PUBLIC   2
 
#define RPC_C_AUTHN_DEC_PUBLIC   4
 
#define RPC_C_AUTHN_GSS_NEGOTIATE   9
 
#define RPC_C_AUTHN_WINNT   10
 
#define RPC_C_AUTHN_GSS_SCHANNEL   14
 
#define RPC_C_AUTHN_GSS_KERBEROS   16
 
#define RPC_C_AUTHN_DPA   17
 
#define RPC_C_AUTHN_MSN   18
 
#define RPC_C_AUTHN_DIGEST   21
 
#define RPC_C_AUTHN_MQ   100
 
#define RPC_C_AUTHN_DEFAULT   0xffffffff
 
#define RPC_C_AUTHZ_NONE   0
 
#define RPC_C_AUTHZ_NAME   1
 
#define RPC_C_AUTHZ_DCE   2
 
#define RPC_C_AUTHZ_DEFAULT   0xffffffff
 
#define RPC_C_IMP_LEVEL_DEFAULT   0
 
#define RPC_C_IMP_LEVEL_ANONYMOUS   1
 
#define RPC_C_IMP_LEVEL_IDENTIFY   2
 
#define RPC_C_IMP_LEVEL_IMPERSONATE   3
 
#define RPC_C_IMP_LEVEL_DELEGATE   4
 
#define RPC_C_QOS_IDENTITY_STATIC   0
 
#define RPC_C_QOS_IDENTITY_DYNAMIC   1
 
#define RPC_C_QOS_CAPABILITIES_DEFAULT   0x0
 
#define RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH   0x1
 
#define RPC_C_QOS_CAPABILITIES_MAKE_FULLSIC   0x2
 
#define RPC_C_QOS_CAPABILITIES_ANY_AUTHORITY   0x4
 
#define RPC_C_SECURITY_QOS_VERSION   1
 
#define RPC_C_SECURITY_QOS_VERSION_1   1
 
#define RPC_C_SECURITY_QOS_VERSION_2   2
 
#define RPC_C_AUTHN_INFO_TYPE_HTTP   1
 
#define RPC_C_HTTP_FLAG_USE_SSL   0x1
 
#define RPC_C_HTTP_FLAG_USE_FIRST_AUTH_SCHEME   0x2
 
#define RPC_C_HTTP_AUTHN_TARGET_SERVER   1
 
#define RPC_C_HTTP_AUTHN_TARGET_PROXY   2
 
#define RPC_C_HTTP_AUTHN_SCHEME_BASIC   0x01
 
#define RPC_C_HTTP_AUTHN_SCHEME_NTLM   0x02
 
#define RPC_C_HTTP_AUTHN_SCHEME_PASSPORT   0x04
 
#define RPC_C_HTTP_AUTHN_SCHEME_DIGEST   0x08
 
#define RPC_C_HTTP_AUTHN_SCHEME_NEGOTIATE   0x10
 
#define _SEC_WINNT_AUTH_IDENTITY   WINELIB_NAME_AW(_SEC_WINNT_AUTH_IDENTITY_)
 
#define SEC_WINNT_AUTH_IDENTITY   WINELIB_NAME_AW(SEC_WINNT_AUTH_IDENTITY_)
 
#define PSEC_WINNT_AUTH_IDENTITY   WINELIB_NAME_AW(PSEC_WINNT_AUTH_IDENTITY_)
 
#define RPC_HTTP_TRANSPORT_CREDENTIALS_   WINELIB_NAME_AW(RPC_HTTP_TRANSPORT_CREDENTIALS_)
 
#define PRPC_HTTP_TRANSPORT_CREDENTIALS_   WINELIB_NAME_AW(PRPC_HTTP_TRANSPORT_CREDENTIALS_)
 
#define _RPC_HTTP_TRANSPORT_CREDENTIALS_   WINELIB_NAME_AW(_RPC_HTTP_TRANSPORT_CREDENTIALS_)
 
#define RPC_SECURITY_QOS_V2   WINELIB_NAME_AW(RPC_SECURITY_QOS_V2_)
 
#define PRPC_SECURITY_QOS_V2   WINELIB_NAME_AW(PRPC_SECURITY_QOS_V2_)
 
#define _RPC_SECURITY_QOS_V2   WINELIB_NAME_AW(_RPC_SECURITY_QOS_V2_)
 
#define SEC_WINNT_AUTH_IDENTITY_ANSI   0x1
 
#define SEC_WINNT_AUTH_IDENTITY_UNICODE   0x2
 
#define RPC_IF_AUTOLISTEN   0x01
 
#define RPC_IF_OLE   0x02
 
#define RPC_IF_ALLOW_UNKNOWN_AUTHORITY   0x04
 
#define RPC_IF_ALLOW_SECURE_ONLY   0x08
 
#define RPC_IF_ALLOW_CALLBACKS_WITH_NO_AUTH   0x10
 
#define RPC_IF_ALLOW_LOCAL_ONLY   0x20
 
#define RPC_IF_SEC_NO_CACHE   0x40
 
#define DceErrorInqText   WINELIB_NAME_AW(DceErrorInqText)
 
#define RpcBindingFromStringBinding   WINELIB_NAME_AW(RpcBindingFromStringBinding)
 
#define RpcBindingToStringBinding   WINELIB_NAME_AW(RpcBindingToStringBinding)
 
#define RpcStringBindingCompose   WINELIB_NAME_AW(RpcStringBindingCompose)
 
#define RpcStringBindingParse   WINELIB_NAME_AW(RpcStringBindingParse)
 
#define RpcEpRegister   WINELIB_NAME_AW(RpcEpRegister)
 
#define RpcEpRegisterNoReplace   WINELIB_NAME_AW(RpcEpRegisterNoReplace)
 
#define RpcServerUseProtseq   WINELIB_NAME_AW(RpcServerUseProtseq)
 
#define RpcServerUseProtseqEp   WINELIB_NAME_AW(RpcServerUseProtseqEp)
 
#define RpcServerUseProtseqEpEx   WINELIB_NAME_AW(RpcServerUseProtseqEpEx)
 
#define RpcServerRegisterAuthInfo   WINELIB_NAME_AW(RpcServerRegisterAuthInfo)
 
#define RpcBindingSetAuthInfoEx   WINELIB_NAME_AW(RpcBindingSetAuthInfoEx)
 
#define RpcBindingSetAuthInfo   WINELIB_NAME_AW(RpcBindingSetAuthInfo)
 
#define RpcBindingInqAuthInfoEx   WINELIB_NAME_AW(RpcBindingInqAuthInfoEx)
 
#define RpcBindingInqAuthInfo   WINELIB_NAME_AW(RpcBindingInqAuthInfo)
 
#define RpcBindingInqAuthClient   WINELIB_NAME_AW(RpcBindingInqAuthClient)
 
#define RpcBindingInqAuthClientEx   WINELIB_NAME_AW(RpcBindingInqAuthClientEx)
 
#define RpcNetworkIsProtseqValid   WINELIB_NAME_AW(RpcNetworkIsProtseqValid)
 
#define RpcNetworkInqProtseqs   WINELIB_NAME_AW(RpcNetworkInqProtseqs)
 
#define RpcProtseqVectorFree   WINELIB_NAME_AW(RpcProtseqVectorFree)
 
#define RpcStringFree   WINELIB_NAME_AW(RpcStringFree)
 
#define UuidToString   WINELIB_NAME_AW(UuidToString)
 
#define UuidFromString   WINELIB_NAME_AW(UuidFromString)
 
#define RpcServerInqDefaultPrincName   WINELIB_NAME_AW(RpcServerInqDefaultPrincName)
 

Typedefs

typedef GUID UUID
 
typedef unsigned charRPC_CSTR
 
typedef unsigned shortRPC_WSTR
 
typedef voidRPC_AUTH_IDENTITY_HANDLE
 
typedef voidRPC_AUTHZ_HANDLE
 
typedef voidRPC_IF_HANDLE
 
typedef I_RPC_HANDLE RPC_BINDING_HANDLE
 
typedef RPC_BINDING_HANDLE handle_t
 
typedef struct _RPC_BINDING_VECTOR RPC_BINDING_VECTOR
 
typedef struct _UUID_VECTOR UUID_VECTOR
 
typedef struct _RPC_IF_ID RPC_IF_ID
 
typedef struct _RPC_PROTSEQ_VECTORA RPC_PROTSEQ_VECTORA
 
typedef struct _RPC_PROTSEQ_VECTORW RPC_PROTSEQ_VECTORW
 
typedef I_RPC_HANDLERPC_EP_INQ_HANDLE
 
typedef RPC_STATUS RPC_ENTRY RPC_IF_CALLBACK_FN(RPC_IF_HANDLE InterfaceUuid, void *Context)
 
typedef void(__RPC_USERRPC_AUTH_KEY_RETRIEVAL_FN) (void *, RPC_WSTR, ULONG, void **, RPC_STATUS *)
 
typedef struct _RPC_POLICY RPC_POLICY
 
typedef struct _RPC_POLICYPRPC_POLICY
 
typedef struct _SEC_WINNT_AUTH_IDENTITY_W SEC_WINNT_AUTH_IDENTITY_W
 
typedef struct _SEC_WINNT_AUTH_IDENTITY_WPSEC_WINNT_AUTH_IDENTITY_W
 
typedef struct _SEC_WINNT_AUTH_IDENTITY_A SEC_WINNT_AUTH_IDENTITY_A
 
typedef struct _SEC_WINNT_AUTH_IDENTITY_APSEC_WINNT_AUTH_IDENTITY_A
 
typedef struct _RPC_HTTP_TRANSPORT_CREDENTIALS_W RPC_HTTP_TRANSPORT_CREDENTIALS_W
 
typedef struct _RPC_HTTP_TRANSPORT_CREDENTIALS_WPRPC_HTTP_TRANSPORT_CREDENTIALS_W
 
typedef struct _RPC_HTTP_TRANSPORT_CREDENTIALS_A RPC_HTTP_TRANSPORT_CREDENTIALS_A
 
typedef struct _RPC_HTTP_TRANSPORT_CREDENTIALS_APRPC_HTTP_TRANSPORT_CREDENTIALS_A
 
typedef struct _RPC_SECURITY_QOS RPC_SECURITY_QOS
 
typedef struct _RPC_SECURITY_QOSPRPC_SECURITY_QOS
 
typedef struct _RPC_SECURITY_QOS_V2_W RPC_SECURITY_QOS_V2_W
 
typedef struct _RPC_SECURITY_QOS_V2_WPRPC_SECURITY_QOS_V2_W
 
typedef struct _RPC_SECURITY_QOS_V2_A RPC_SECURITY_QOS_V2_A
 
typedef struct _RPC_SECURITY_QOS_V2_APRPC_SECURITY_QOS_V2_A
 
typedef int(__RPC_APIRPC_MGMT_AUTHORIZATION_FN) (RPC_BINDING_HANDLE, ULONG, RPC_STATUS *)
 

Functions

RPC_STATUS RPC_ENTRY DceErrorInqTextA (RPC_STATUS e, RPC_CSTR buffer)
 
RPC_STATUS RPC_ENTRY DceErrorInqTextW (RPC_STATUS e, RPC_WSTR buffer)
 
RPCRTAPI DECLSPEC_NORETURN void RPC_ENTRY RpcRaiseException (RPC_STATUS exception)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingCopy (RPC_BINDING_HANDLE SourceBinding, RPC_BINDING_HANDLE *DestinationBinding)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingFree (RPC_BINDING_HANDLE *Binding)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingInqObject (RPC_BINDING_HANDLE Binding, UUID *ObjectUuid)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingInqOption (RPC_BINDING_HANDLE Binding, ULONG Option, ULONG_PTR *OptionValue)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingReset (RPC_BINDING_HANDLE Binding)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingServerFromClient (RPC_BINDING_HANDLE ClientBinding, RPC_BINDING_HANDLE *ServerBinding)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingSetObject (RPC_BINDING_HANDLE Binding, UUID *ObjectUuid)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingSetOption (RPC_BINDING_HANDLE Binding, ULONG Option, ULONG_PTR OptionValue)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcObjectSetType (UUID *ObjUuid, UUID *TypeUuid)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingFromStringBindingA (RPC_CSTR StringBinding, RPC_BINDING_HANDLE *Binding)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingFromStringBindingW (RPC_WSTR StringBinding, RPC_BINDING_HANDLE *Binding)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingToStringBindingA (RPC_BINDING_HANDLE Binding, RPC_CSTR *StringBinding)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingToStringBindingW (RPC_BINDING_HANDLE Binding, RPC_WSTR *StringBinding)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingVectorFree (RPC_BINDING_VECTOR **BindingVector)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcStringBindingComposeA (RPC_CSTR ObjUuid, RPC_CSTR Protseq, RPC_CSTR NetworkAddr, RPC_CSTR Endpoint, RPC_CSTR Options, RPC_CSTR *StringBinding)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcStringBindingComposeW (RPC_WSTR ObjUuid, RPC_WSTR Protseq, RPC_WSTR NetworkAddr, RPC_WSTR Endpoint, RPC_WSTR Options, RPC_WSTR *StringBinding)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcStringBindingParseA (RPC_CSTR StringBinding, RPC_CSTR *ObjUuid, RPC_CSTR *Protseq, RPC_CSTR *NetworkAddr, RPC_CSTR *Endpoint, RPC_CSTR *NetworkOptions)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcStringBindingParseW (RPC_WSTR StringBinding, RPC_WSTR *ObjUuid, RPC_WSTR *Protseq, RPC_WSTR *NetworkAddr, RPC_WSTR *Endpoint, RPC_WSTR *NetworkOptions)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcEpResolveBinding (RPC_BINDING_HANDLE Binding, RPC_IF_HANDLE IfSpec)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcEpRegisterA (RPC_IF_HANDLE IfSpec, RPC_BINDING_VECTOR *BindingVector, UUID_VECTOR *UuidVector, RPC_CSTR Annotation)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcEpRegisterW (RPC_IF_HANDLE IfSpec, RPC_BINDING_VECTOR *BindingVector, UUID_VECTOR *UuidVector, RPC_WSTR Annotation)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcEpRegisterNoReplaceA (RPC_IF_HANDLE IfSpec, RPC_BINDING_VECTOR *BindingVector, UUID_VECTOR *UuidVector, RPC_CSTR Annotation)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcEpRegisterNoReplaceW (RPC_IF_HANDLE IfSpec, RPC_BINDING_VECTOR *BindingVector, UUID_VECTOR *UuidVector, RPC_WSTR Annotation)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcEpUnregister (RPC_IF_HANDLE IfSpec, RPC_BINDING_VECTOR *BindingVector, UUID_VECTOR *UuidVector)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcServerInqBindings (RPC_BINDING_VECTOR **BindingVector)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcServerListen (unsigned int MinimumCallThreads, unsigned int MaxCalls, unsigned int DontWait)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcMgmtEnableIdleCleanup (void)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcMgmtSetAuthorizationFn (RPC_MGMT_AUTHORIZATION_FN)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcMgmtSetCancelTimeout (LONG)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcMgmtWaitServerListen (void)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcMgmtInqStats (RPC_BINDING_HANDLE Binding, RPC_STATS_VECTOR **Statistics)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcMgmtStopServerListening (RPC_BINDING_HANDLE Binding)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcMgmtIsServerListening (RPC_BINDING_HANDLE Binding)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcMgmtInqIfIds (RPC_BINDING_HANDLE Binding, RPC_IF_ID_VECTOR **IfIdVector)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcMgmtEpEltInqBegin (RPC_BINDING_HANDLE EpBinding, ULONG InquiryType, RPC_IF_ID *IfId, ULONG VersOption, UUID *ObjectUuid, RPC_EP_INQ_HANDLE *InquiryContext)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcMgmtSetComTimeout (RPC_BINDING_HANDLE Binding, unsigned int Timeout)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcMgmtSetServerStackSize (ULONG ThreadStackSize)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcMgmtStatsVectorFree (RPC_STATS_VECTOR **StatsVector)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcServerRegisterIf (RPC_IF_HANDLE IfSpec, UUID *MgrTypeUuid, RPC_MGR_EPV *MgrEpv)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcServerRegisterIfEx (RPC_IF_HANDLE IfSpec, UUID *MgrTypeUuid, RPC_MGR_EPV *MgrEpv, unsigned int Flags, unsigned int MaxCalls, RPC_IF_CALLBACK_FN *IfCallbackFn)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcServerRegisterIf2 (RPC_IF_HANDLE IfSpec, UUID *MgrTypeUuid, RPC_MGR_EPV *MgrEpv, unsigned int Flags, unsigned int MaxCalls, unsigned int MaxRpcSize, RPC_IF_CALLBACK_FN *IfCallbackFn)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcServerRegisterIf3 (RPC_IF_HANDLE IfSpec, UUID *MgrTypeUuid, RPC_MGR_EPV *MgrEpv, unsigned int Flags, unsigned int MaxCalls, unsigned int MaxRpcSize, RPC_IF_CALLBACK_FN *IfCallbackFn, void *SecurityDescriptor)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcServerUnregisterIf (RPC_IF_HANDLE IfSpec, UUID *MgrTypeUuid, unsigned int WaitForCallsToComplete)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcServerUnregisterIfEx (RPC_IF_HANDLE IfSpec, UUID *MgrTypeUuid, int RundownContextHandles)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcServerUseProtseqA (RPC_CSTR Protseq, unsigned int MaxCalls, void *SecurityDescriptor)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcServerUseProtseqW (RPC_WSTR Protseq, unsigned int MaxCalls, void *SecurityDescriptor)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcServerUseProtseqEpA (RPC_CSTR Protseq, unsigned int MaxCalls, RPC_CSTR Endpoint, void *SecurityDescriptor)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcServerUseProtseqEpW (RPC_WSTR Protseq, unsigned int MaxCalls, RPC_WSTR Endpoint, void *SecurityDescriptor)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcServerUseProtseqEpExA (RPC_CSTR Protseq, unsigned int MaxCalls, RPC_CSTR Endpoint, void *SecurityDescriptor, PRPC_POLICY Policy)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcServerUseProtseqEpExW (RPC_WSTR Protseq, unsigned int MaxCalls, RPC_WSTR Endpoint, void *SecurityDescriptor, PRPC_POLICY Policy)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcServerRegisterAuthInfoA (RPC_CSTR ServerPrincName, ULONG AuthnSvc, RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn, void *Arg)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcServerRegisterAuthInfoW (RPC_WSTR ServerPrincName, ULONG AuthnSvc, RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn, void *Arg)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingSetAuthInfoExA (RPC_BINDING_HANDLE Binding, RPC_CSTR ServerPrincName, ULONG AuthnLevel, ULONG AuthnSvc, RPC_AUTH_IDENTITY_HANDLE AuthIdentity, ULONG AuthzSvr, RPC_SECURITY_QOS *SecurityQos)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingSetAuthInfoExW (RPC_BINDING_HANDLE Binding, RPC_WSTR ServerPrincName, ULONG AuthnLevel, ULONG AuthnSvc, RPC_AUTH_IDENTITY_HANDLE AuthIdentity, ULONG AuthzSvr, RPC_SECURITY_QOS *SecurityQos)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingSetAuthInfoA (RPC_BINDING_HANDLE Binding, RPC_CSTR ServerPrincName, ULONG AuthnLevel, ULONG AuthnSvc, RPC_AUTH_IDENTITY_HANDLE AuthIdentity, ULONG AuthzSvr)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingSetAuthInfoW (RPC_BINDING_HANDLE Binding, RPC_WSTR ServerPrincName, ULONG AuthnLevel, ULONG AuthnSvc, RPC_AUTH_IDENTITY_HANDLE AuthIdentity, ULONG AuthzSvr)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingInqAuthInfoExA (RPC_BINDING_HANDLE Binding, RPC_CSTR *ServerPrincName, ULONG *AuthnLevel, ULONG *AuthnSvc, RPC_AUTH_IDENTITY_HANDLE *AuthIdentity, ULONG *AuthzSvc, ULONG RpcQosVersion, RPC_SECURITY_QOS *SecurityQOS)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingInqAuthInfoExW (RPC_BINDING_HANDLE Binding, RPC_WSTR *ServerPrincName, ULONG *AuthnLevel, ULONG *AuthnSvc, RPC_AUTH_IDENTITY_HANDLE *AuthIdentity, ULONG *AuthzSvc, ULONG RpcQosVersion, RPC_SECURITY_QOS *SecurityQOS)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingInqAuthInfoA (RPC_BINDING_HANDLE Binding, RPC_CSTR *ServerPrincName, ULONG *AuthnLevel, ULONG *AuthnSvc, RPC_AUTH_IDENTITY_HANDLE *AuthIdentity, ULONG *AuthzSvc)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingInqAuthInfoW (RPC_BINDING_HANDLE Binding, RPC_WSTR *ServerPrincName, ULONG *AuthnLevel, ULONG *AuthnSvc, RPC_AUTH_IDENTITY_HANDLE *AuthIdentity, ULONG *AuthzSvc)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingInqAuthClientA (RPC_BINDING_HANDLE ClientBinding, RPC_AUTHZ_HANDLE *Privs, RPC_CSTR *ServerPrincName, ULONG *AuthnLevel, ULONG *AuthnSvc, ULONG *AuthzSvc)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingInqAuthClientW (RPC_BINDING_HANDLE ClientBinding, RPC_AUTHZ_HANDLE *Privs, RPC_WSTR *ServerPrincName, ULONG *AuthnLevel, ULONG *AuthnSvc, ULONG *AuthzSvc)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingInqAuthClientExA (RPC_BINDING_HANDLE ClientBinding, RPC_AUTHZ_HANDLE *Privs, RPC_CSTR *ServerPrincName, ULONG *AuthnLevel, ULONG *AuthnSvc, ULONG *AuthzSvc, ULONG Flags)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingInqAuthClientExW (RPC_BINDING_HANDLE ClientBinding, RPC_AUTHZ_HANDLE *Privs, RPC_WSTR *ServerPrincName, ULONG *AuthnLevel, ULONG *AuthnSvc, ULONG *AuthzSvc, ULONG Flags)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcCancelThread (void *)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcCancelThreadEx (void *, LONG)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcImpersonateClient (RPC_BINDING_HANDLE Binding)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcNetworkIsProtseqValidA (RPC_CSTR protseq)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcNetworkIsProtseqValidW (RPC_WSTR protseq)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcNetworkInqProtseqsA (RPC_PROTSEQ_VECTORA **protseqs)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcNetworkInqProtseqsW (RPC_PROTSEQ_VECTORW **protseqs)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcProtseqVectorFreeA (RPC_PROTSEQ_VECTORA **protseqs)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcProtseqVectorFreeW (RPC_PROTSEQ_VECTORW **protseqs)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcRevertToSelf (void)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcRevertToSelfEx (RPC_BINDING_HANDLE Binding)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcStringFreeA (RPC_CSTR *String)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcStringFreeW (RPC_WSTR *String)
 
RPCRTAPI RPC_STATUS RPC_ENTRY UuidToStringA (UUID *Uuid, RPC_CSTR *StringUuid)
 
RPCRTAPI RPC_STATUS RPC_ENTRY UuidToStringW (UUID *Uuid, RPC_WSTR *StringUuid)
 
RPCRTAPI RPC_STATUS RPC_ENTRY UuidFromStringA (RPC_CSTR StringUuid, UUID *Uuid)
 
RPCRTAPI RPC_STATUS RPC_ENTRY UuidFromStringW (RPC_WSTR StringUuid, UUID *Uuid)
 
RPCRTAPI RPC_STATUS RPC_ENTRY UuidCreate (UUID *Uuid)
 
RPCRTAPI RPC_STATUS RPC_ENTRY UuidCreateSequential (UUID *Uuid)
 
RPCRTAPI RPC_STATUS RPC_ENTRY UuidCreateNil (UUID *Uuid)
 
RPCRTAPI signed int RPC_ENTRY UuidCompare (UUID *Uuid1, UUID *Uuid2, RPC_STATUS *Status_)
 
RPCRTAPI int RPC_ENTRY UuidEqual (UUID *Uuid1, UUID *Uuid2, RPC_STATUS *Status_)
 
RPCRTAPI unsigned short RPC_ENTRY UuidHash (UUID *Uuid, RPC_STATUS *Status_)
 
RPCRTAPI int RPC_ENTRY UuidIsNil (UUID *Uuid, RPC_STATUS *Status_)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcServerInqDefaultPrincNameA (ULONG AuthnSvc, RPC_CSTR *PrincName)
 
RPCRTAPI RPC_STATUS RPC_ENTRY RpcServerInqDefaultPrincNameW (ULONG AuthnSvc, RPC_WSTR *PrincName)
 

Macro Definition Documentation

◆ _RPC_HTTP_TRANSPORT_CREDENTIALS_

#define _RPC_HTTP_TRANSPORT_CREDENTIALS_   WINELIB_NAME_AW(_RPC_HTTP_TRANSPORT_CREDENTIALS_)

Definition at line 302 of file rpcdce.h.

◆ _RPC_SECURITY_QOS_V2

#define _RPC_SECURITY_QOS_V2   WINELIB_NAME_AW(_RPC_SECURITY_QOS_V2_)

Definition at line 306 of file rpcdce.h.

◆ _SEC_WINNT_AUTH_IDENTITY

#define _SEC_WINNT_AUTH_IDENTITY   WINELIB_NAME_AW(_SEC_WINNT_AUTH_IDENTITY_)

Definition at line 296 of file rpcdce.h.

◆ DceErrorInqText

#define DceErrorInqText   WINELIB_NAME_AW(DceErrorInqText)

Definition at line 323 of file rpcdce.h.

◆ IN

#define IN

Definition at line 27 of file rpcdce.h.

◆ OPTIONAL

Definition at line 33 of file rpcdce.h.

◆ OUT

#define OUT

Definition at line 30 of file rpcdce.h.

◆ PRPC_HTTP_TRANSPORT_CREDENTIALS_

#define PRPC_HTTP_TRANSPORT_CREDENTIALS_   WINELIB_NAME_AW(PRPC_HTTP_TRANSPORT_CREDENTIALS_)

Definition at line 301 of file rpcdce.h.

◆ PRPC_SECURITY_QOS_V2

#define PRPC_SECURITY_QOS_V2   WINELIB_NAME_AW(PRPC_SECURITY_QOS_V2_)

Definition at line 305 of file rpcdce.h.

◆ PSEC_WINNT_AUTH_IDENTITY

#define PSEC_WINNT_AUTH_IDENTITY   WINELIB_NAME_AW(PSEC_WINNT_AUTH_IDENTITY_)

Definition at line 298 of file rpcdce.h.

◆ rpc_binding_handle_t

#define rpc_binding_handle_t   RPC_BINDING_HANDLE

Definition at line 52 of file rpcdce.h.

◆ rpc_binding_vector_t

#define rpc_binding_vector_t   RPC_BINDING_VECTOR

Definition at line 60 of file rpcdce.h.

◆ RPC_C_AUTHN_DCE_PRIVATE

#define RPC_C_AUTHN_DCE_PRIVATE   1

Definition at line 154 of file rpcdce.h.

◆ RPC_C_AUTHN_DCE_PUBLIC

#define RPC_C_AUTHN_DCE_PUBLIC   2

Definition at line 155 of file rpcdce.h.

◆ RPC_C_AUTHN_DEC_PUBLIC

#define RPC_C_AUTHN_DEC_PUBLIC   4

Definition at line 156 of file rpcdce.h.

◆ RPC_C_AUTHN_DEFAULT

#define RPC_C_AUTHN_DEFAULT   0xffffffff

Definition at line 165 of file rpcdce.h.

◆ RPC_C_AUTHN_DIGEST

#define RPC_C_AUTHN_DIGEST   21

Definition at line 163 of file rpcdce.h.

◆ RPC_C_AUTHN_DPA

#define RPC_C_AUTHN_DPA   17

Definition at line 161 of file rpcdce.h.

◆ RPC_C_AUTHN_GSS_KERBEROS

#define RPC_C_AUTHN_GSS_KERBEROS   16

Definition at line 160 of file rpcdce.h.

◆ RPC_C_AUTHN_GSS_NEGOTIATE

#define RPC_C_AUTHN_GSS_NEGOTIATE   9

Definition at line 157 of file rpcdce.h.

◆ RPC_C_AUTHN_GSS_SCHANNEL

#define RPC_C_AUTHN_GSS_SCHANNEL   14

Definition at line 159 of file rpcdce.h.

◆ RPC_C_AUTHN_INFO_TYPE_HTTP

#define RPC_C_AUTHN_INFO_TYPE_HTTP   1

Definition at line 195 of file rpcdce.h.

◆ RPC_C_AUTHN_LEVEL_CALL

#define RPC_C_AUTHN_LEVEL_CALL   3

Definition at line 148 of file rpcdce.h.

◆ RPC_C_AUTHN_LEVEL_CONNECT

#define RPC_C_AUTHN_LEVEL_CONNECT   2

Definition at line 147 of file rpcdce.h.

◆ RPC_C_AUTHN_LEVEL_DEFAULT

#define RPC_C_AUTHN_LEVEL_DEFAULT   0

Definition at line 145 of file rpcdce.h.

◆ RPC_C_AUTHN_LEVEL_NONE

#define RPC_C_AUTHN_LEVEL_NONE   1

Definition at line 146 of file rpcdce.h.

◆ RPC_C_AUTHN_LEVEL_PKT

#define RPC_C_AUTHN_LEVEL_PKT   4

Definition at line 149 of file rpcdce.h.

◆ RPC_C_AUTHN_LEVEL_PKT_INTEGRITY

#define RPC_C_AUTHN_LEVEL_PKT_INTEGRITY   5

Definition at line 150 of file rpcdce.h.

◆ RPC_C_AUTHN_LEVEL_PKT_PRIVACY

#define RPC_C_AUTHN_LEVEL_PKT_PRIVACY   6

Definition at line 151 of file rpcdce.h.

◆ RPC_C_AUTHN_MQ

#define RPC_C_AUTHN_MQ   100

Definition at line 164 of file rpcdce.h.

◆ RPC_C_AUTHN_MSN

#define RPC_C_AUTHN_MSN   18

Definition at line 162 of file rpcdce.h.

◆ RPC_C_AUTHN_NONE

#define RPC_C_AUTHN_NONE   0

Definition at line 153 of file rpcdce.h.

◆ RPC_C_AUTHN_WINNT

#define RPC_C_AUTHN_WINNT   10

Definition at line 158 of file rpcdce.h.

◆ RPC_C_AUTHZ_DCE

#define RPC_C_AUTHZ_DCE   2

Definition at line 169 of file rpcdce.h.

◆ RPC_C_AUTHZ_DEFAULT

#define RPC_C_AUTHZ_DEFAULT   0xffffffff

Definition at line 170 of file rpcdce.h.

◆ RPC_C_AUTHZ_NAME

#define RPC_C_AUTHZ_NAME   1

Definition at line 168 of file rpcdce.h.

◆ RPC_C_AUTHZ_NONE

#define RPC_C_AUTHZ_NONE   0

Definition at line 167 of file rpcdce.h.

◆ RPC_C_BIND_TO_ALL_NICS

#define RPC_C_BIND_TO_ALL_NICS   0x1

Definition at line 131 of file rpcdce.h.

◆ RPC_C_BINDING_DEFAULT_TIMEOUT

#define RPC_C_BINDING_DEFAULT_TIMEOUT   5

Definition at line 117 of file rpcdce.h.

◆ RPC_C_BINDING_INFINITE_TIMEOUT

#define RPC_C_BINDING_INFINITE_TIMEOUT   10

Definition at line 115 of file rpcdce.h.

◆ RPC_C_BINDING_MAX_TIMEOUT

#define RPC_C_BINDING_MAX_TIMEOUT   9

Definition at line 118 of file rpcdce.h.

◆ RPC_C_BINDING_MIN_TIMEOUT

#define RPC_C_BINDING_MIN_TIMEOUT   0

Definition at line 116 of file rpcdce.h.

◆ RPC_C_CANCEL_INFINITE_TIMEOUT

#define RPC_C_CANCEL_INFINITE_TIMEOUT   -1

Definition at line 120 of file rpcdce.h.

◆ RPC_C_DONT_FAIL

#define RPC_C_DONT_FAIL   0x4

Definition at line 134 of file rpcdce.h.

◆ RPC_C_EP_ALL_ELTS

#define RPC_C_EP_ALL_ELTS   0

Definition at line 104 of file rpcdce.h.

◆ RPC_C_EP_MATCH_BY_BOTH

#define RPC_C_EP_MATCH_BY_BOTH   3

Definition at line 107 of file rpcdce.h.

◆ RPC_C_EP_MATCH_BY_IF

#define RPC_C_EP_MATCH_BY_IF   1

Definition at line 105 of file rpcdce.h.

◆ RPC_C_EP_MATCH_BY_OBJ

#define RPC_C_EP_MATCH_BY_OBJ   2

Definition at line 106 of file rpcdce.h.

◆ RPC_C_HTTP_AUTHN_SCHEME_BASIC

#define RPC_C_HTTP_AUTHN_SCHEME_BASIC   0x01

Definition at line 205 of file rpcdce.h.

◆ RPC_C_HTTP_AUTHN_SCHEME_DIGEST

#define RPC_C_HTTP_AUTHN_SCHEME_DIGEST   0x08

Definition at line 208 of file rpcdce.h.

◆ RPC_C_HTTP_AUTHN_SCHEME_NEGOTIATE

#define RPC_C_HTTP_AUTHN_SCHEME_NEGOTIATE   0x10

Definition at line 209 of file rpcdce.h.

◆ RPC_C_HTTP_AUTHN_SCHEME_NTLM

#define RPC_C_HTTP_AUTHN_SCHEME_NTLM   0x02

Definition at line 206 of file rpcdce.h.

◆ RPC_C_HTTP_AUTHN_SCHEME_PASSPORT

#define RPC_C_HTTP_AUTHN_SCHEME_PASSPORT   0x04

Definition at line 207 of file rpcdce.h.

◆ RPC_C_HTTP_AUTHN_TARGET_PROXY

#define RPC_C_HTTP_AUTHN_TARGET_PROXY   2

Definition at line 203 of file rpcdce.h.

◆ RPC_C_HTTP_AUTHN_TARGET_SERVER

#define RPC_C_HTTP_AUTHN_TARGET_SERVER   1

Definition at line 202 of file rpcdce.h.

◆ RPC_C_HTTP_FLAG_USE_FIRST_AUTH_SCHEME

#define RPC_C_HTTP_FLAG_USE_FIRST_AUTH_SCHEME   0x2

Definition at line 199 of file rpcdce.h.

◆ RPC_C_HTTP_FLAG_USE_SSL

#define RPC_C_HTTP_FLAG_USE_SSL   0x1

Definition at line 198 of file rpcdce.h.

◆ RPC_C_IMP_LEVEL_ANONYMOUS

#define RPC_C_IMP_LEVEL_ANONYMOUS   1

Definition at line 174 of file rpcdce.h.

◆ RPC_C_IMP_LEVEL_DEFAULT

#define RPC_C_IMP_LEVEL_DEFAULT   0

Definition at line 173 of file rpcdce.h.

◆ RPC_C_IMP_LEVEL_DELEGATE

#define RPC_C_IMP_LEVEL_DELEGATE   4

Definition at line 177 of file rpcdce.h.

◆ RPC_C_IMP_LEVEL_IDENTIFY

#define RPC_C_IMP_LEVEL_IDENTIFY   2

Definition at line 175 of file rpcdce.h.

◆ RPC_C_IMP_LEVEL_IMPERSONATE

#define RPC_C_IMP_LEVEL_IMPERSONATE   3

Definition at line 176 of file rpcdce.h.

◆ RPC_C_LISTEN_MAX_CALLS_DEFAULT

#define RPC_C_LISTEN_MAX_CALLS_DEFAULT   1234

Definition at line 122 of file rpcdce.h.

◆ RPC_C_MQ_AUTHN_LEVEL_NONE

#define RPC_C_MQ_AUTHN_LEVEL_NONE   0x0000

Definition at line 141 of file rpcdce.h.

◆ RPC_C_MQ_AUTHN_LEVEL_PKT_INTEGRITY

#define RPC_C_MQ_AUTHN_LEVEL_PKT_INTEGRITY   0x0008

Definition at line 142 of file rpcdce.h.

◆ RPC_C_MQ_AUTHN_LEVEL_PKT_PRIVACY

#define RPC_C_MQ_AUTHN_LEVEL_PKT_PRIVACY   0x0010

Definition at line 143 of file rpcdce.h.

◆ RPC_C_MQ_CLEAR_ON_OPEN

#define RPC_C_MQ_CLEAR_ON_OPEN   0x0002

Definition at line 139 of file rpcdce.h.

◆ RPC_C_MQ_PERMANENT

#define RPC_C_MQ_PERMANENT   0x0001

Definition at line 138 of file rpcdce.h.

◆ RPC_C_MQ_TEMPORARY

#define RPC_C_MQ_TEMPORARY   0x0000

Definition at line 137 of file rpcdce.h.

◆ RPC_C_MQ_USE_EXISTING_SECURITY

#define RPC_C_MQ_USE_EXISTING_SECURITY   0x0004

Definition at line 140 of file rpcdce.h.

◆ RPC_C_PROTSEQ_MAX_REQS_DEFAULT

#define RPC_C_PROTSEQ_MAX_REQS_DEFAULT   10

Definition at line 123 of file rpcdce.h.

◆ RPC_C_QOS_CAPABILITIES_ANY_AUTHORITY

#define RPC_C_QOS_CAPABILITIES_ANY_AUTHORITY   0x4

Definition at line 187 of file rpcdce.h.

◆ RPC_C_QOS_CAPABILITIES_DEFAULT

#define RPC_C_QOS_CAPABILITIES_DEFAULT   0x0

Definition at line 184 of file rpcdce.h.

◆ RPC_C_QOS_CAPABILITIES_MAKE_FULLSIC

#define RPC_C_QOS_CAPABILITIES_MAKE_FULLSIC   0x2

Definition at line 186 of file rpcdce.h.

◆ RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH

#define RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH   0x1

Definition at line 185 of file rpcdce.h.

◆ RPC_C_QOS_IDENTITY_DYNAMIC

#define RPC_C_QOS_IDENTITY_DYNAMIC   1

Definition at line 181 of file rpcdce.h.

◆ RPC_C_QOS_IDENTITY_STATIC

#define RPC_C_QOS_IDENTITY_STATIC   0

Definition at line 180 of file rpcdce.h.

◆ RPC_C_SECURITY_QOS_VERSION

#define RPC_C_SECURITY_QOS_VERSION   1

Definition at line 190 of file rpcdce.h.

◆ RPC_C_SECURITY_QOS_VERSION_1

#define RPC_C_SECURITY_QOS_VERSION_1   1

Definition at line 191 of file rpcdce.h.

◆ RPC_C_SECURITY_QOS_VERSION_2

#define RPC_C_SECURITY_QOS_VERSION_2   2

Definition at line 192 of file rpcdce.h.

◆ RPC_C_USE_INTERNET_PORT

#define RPC_C_USE_INTERNET_PORT   0x1

Definition at line 132 of file rpcdce.h.

◆ RPC_C_USE_INTRANET_PORT

#define RPC_C_USE_INTRANET_PORT   0x2

Definition at line 133 of file rpcdce.h.

◆ RPC_C_VERS_ALL

#define RPC_C_VERS_ALL   1

Definition at line 109 of file rpcdce.h.

◆ RPC_C_VERS_COMPATIBLE

#define RPC_C_VERS_COMPATIBLE   2

Definition at line 110 of file rpcdce.h.

◆ RPC_C_VERS_EXACT

#define RPC_C_VERS_EXACT   3

Definition at line 111 of file rpcdce.h.

◆ RPC_C_VERS_MAJOR_ONLY

#define RPC_C_VERS_MAJOR_ONLY   4

Definition at line 112 of file rpcdce.h.

◆ RPC_C_VERS_UPTO

#define RPC_C_VERS_UPTO   5

Definition at line 113 of file rpcdce.h.

◆ RPC_HTTP_TRANSPORT_CREDENTIALS_

#define RPC_HTTP_TRANSPORT_CREDENTIALS_   WINELIB_NAME_AW(RPC_HTTP_TRANSPORT_CREDENTIALS_)

Definition at line 300 of file rpcdce.h.

◆ RPC_IF_ALLOW_CALLBACKS_WITH_NO_AUTH

#define RPC_IF_ALLOW_CALLBACKS_WITH_NO_AUTH   0x10

Definition at line 317 of file rpcdce.h.

◆ RPC_IF_ALLOW_LOCAL_ONLY

#define RPC_IF_ALLOW_LOCAL_ONLY   0x20

Definition at line 318 of file rpcdce.h.

◆ RPC_IF_ALLOW_SECURE_ONLY

#define RPC_IF_ALLOW_SECURE_ONLY   0x08

Definition at line 316 of file rpcdce.h.

◆ RPC_IF_ALLOW_UNKNOWN_AUTHORITY

#define RPC_IF_ALLOW_UNKNOWN_AUTHORITY   0x04

Definition at line 315 of file rpcdce.h.

◆ RPC_IF_AUTOLISTEN

#define RPC_IF_AUTOLISTEN   0x01

Definition at line 313 of file rpcdce.h.

◆ RPC_IF_OLE

#define RPC_IF_OLE   0x02

Definition at line 314 of file rpcdce.h.

◆ RPC_IF_SEC_NO_CACHE

#define RPC_IF_SEC_NO_CACHE   0x40

Definition at line 319 of file rpcdce.h.

◆ RPC_MGR_EPV

#define RPC_MGR_EPV   void

Definition at line 53 of file rpcdce.h.

◆ RPC_PROTSEQ_HTTP

#define RPC_PROTSEQ_HTTP   0x4

Definition at line 128 of file rpcdce.h.

◆ RPC_PROTSEQ_LRPC

#define RPC_PROTSEQ_LRPC   0x3

Definition at line 127 of file rpcdce.h.

◆ RPC_PROTSEQ_NMP

#define RPC_PROTSEQ_NMP   0x2

Definition at line 126 of file rpcdce.h.

◆ RPC_PROTSEQ_TCP

#define RPC_PROTSEQ_TCP   0x1

Definition at line 125 of file rpcdce.h.

◆ RPC_SECURITY_QOS_V2

#define RPC_SECURITY_QOS_V2   WINELIB_NAME_AW(RPC_SECURITY_QOS_V2_)

Definition at line 304 of file rpcdce.h.

◆ RpcBindingFromStringBinding

#define RpcBindingFromStringBinding   WINELIB_NAME_AW(RpcBindingFromStringBinding)

Definition at line 353 of file rpcdce.h.

◆ RpcBindingInqAuthClient

#define RpcBindingInqAuthClient   WINELIB_NAME_AW(RpcBindingInqAuthClient)

Definition at line 546 of file rpcdce.h.

◆ RpcBindingInqAuthClientEx

#define RpcBindingInqAuthClientEx   WINELIB_NAME_AW(RpcBindingInqAuthClientEx)

Definition at line 557 of file rpcdce.h.

◆ RpcBindingInqAuthInfo

#define RpcBindingInqAuthInfo   WINELIB_NAME_AW(RpcBindingInqAuthInfo)

Definition at line 535 of file rpcdce.h.

◆ RpcBindingInqAuthInfoEx

#define RpcBindingInqAuthInfoEx   WINELIB_NAME_AW(RpcBindingInqAuthInfoEx)

Definition at line 526 of file rpcdce.h.

◆ RpcBindingSetAuthInfo

#define RpcBindingSetAuthInfo   WINELIB_NAME_AW(RpcBindingSetAuthInfo)

Definition at line 515 of file rpcdce.h.

◆ RpcBindingSetAuthInfoEx

#define RpcBindingSetAuthInfoEx   WINELIB_NAME_AW(RpcBindingSetAuthInfoEx)

Definition at line 506 of file rpcdce.h.

◆ RpcBindingToStringBinding

#define RpcBindingToStringBinding   WINELIB_NAME_AW(RpcBindingToStringBinding)

Definition at line 359 of file rpcdce.h.

◆ RpcEpRegister

#define RpcEpRegister   WINELIB_NAME_AW(RpcEpRegister)

Definition at line 389 of file rpcdce.h.

◆ RpcEpRegisterNoReplace

#define RpcEpRegisterNoReplace   WINELIB_NAME_AW(RpcEpRegisterNoReplace)

Definition at line 397 of file rpcdce.h.

◆ RpcNetworkInqProtseqs

#define RpcNetworkInqProtseqs   WINELIB_NAME_AW(RpcNetworkInqProtseqs)

Definition at line 575 of file rpcdce.h.

◆ RpcNetworkIsProtseqValid

#define RpcNetworkIsProtseqValid   WINELIB_NAME_AW(RpcNetworkIsProtseqValid)

Definition at line 569 of file rpcdce.h.

◆ RpcProtseqVectorFree

#define RpcProtseqVectorFree   WINELIB_NAME_AW(RpcProtseqVectorFree)

Definition at line 581 of file rpcdce.h.

◆ RpcServerInqDefaultPrincName

#define RpcServerInqDefaultPrincName   WINELIB_NAME_AW(RpcServerInqDefaultPrincName)

Definition at line 625 of file rpcdce.h.

◆ RpcServerRegisterAuthInfo

#define RpcServerRegisterAuthInfo   WINELIB_NAME_AW(RpcServerRegisterAuthInfo)

Definition at line 495 of file rpcdce.h.

◆ RpcServerUseProtseq

#define RpcServerUseProtseq   WINELIB_NAME_AW(RpcServerUseProtseq)

Definition at line 473 of file rpcdce.h.

◆ RpcServerUseProtseqEp

#define RpcServerUseProtseqEp   WINELIB_NAME_AW(RpcServerUseProtseqEp)

Definition at line 479 of file rpcdce.h.

◆ RpcServerUseProtseqEpEx

#define RpcServerUseProtseqEpEx   WINELIB_NAME_AW(RpcServerUseProtseqEpEx)

Definition at line 487 of file rpcdce.h.

◆ RpcStringBindingCompose

#define RpcStringBindingCompose   WINELIB_NAME_AW(RpcStringBindingCompose)

Definition at line 370 of file rpcdce.h.

◆ RpcStringBindingParse

#define RpcStringBindingParse   WINELIB_NAME_AW(RpcStringBindingParse)

Definition at line 378 of file rpcdce.h.

◆ RpcStringFree

#define RpcStringFree   WINELIB_NAME_AW(RpcStringFree)

Definition at line 592 of file rpcdce.h.

◆ SEC_WINNT_AUTH_IDENTITY

#define SEC_WINNT_AUTH_IDENTITY   WINELIB_NAME_AW(SEC_WINNT_AUTH_IDENTITY_)

Definition at line 297 of file rpcdce.h.

◆ SEC_WINNT_AUTH_IDENTITY_ANSI

#define SEC_WINNT_AUTH_IDENTITY_ANSI   0x1

Definition at line 309 of file rpcdce.h.

◆ SEC_WINNT_AUTH_IDENTITY_UNICODE

#define SEC_WINNT_AUTH_IDENTITY_UNICODE   0x2

Definition at line 310 of file rpcdce.h.

◆ UUID_DEFINED

#define UUID_DEFINED

Definition at line 41 of file rpcdce.h.

◆ uuid_vector_t

#define uuid_vector_t   UUID_VECTOR

Definition at line 67 of file rpcdce.h.

◆ UuidFromString

#define UuidFromString   WINELIB_NAME_AW(UuidFromString)

Definition at line 604 of file rpcdce.h.

◆ UuidToString

#define UuidToString   WINELIB_NAME_AW(UuidToString)

Definition at line 598 of file rpcdce.h.

Typedef Documentation

◆ handle_t

Definition at line 51 of file rpcdce.h.

◆ PRPC_HTTP_TRANSPORT_CREDENTIALS_A

◆ PRPC_HTTP_TRANSPORT_CREDENTIALS_W

◆ PRPC_POLICY

◆ PRPC_SECURITY_QOS

◆ PRPC_SECURITY_QOS_V2_A

◆ PRPC_SECURITY_QOS_V2_W

◆ PSEC_WINNT_AUTH_IDENTITY_A

◆ PSEC_WINNT_AUTH_IDENTITY_W

◆ RPC_AUTH_IDENTITY_HANDLE

Definition at line 47 of file rpcdce.h.

◆ RPC_AUTH_KEY_RETRIEVAL_FN

typedef void(__RPC_USER * RPC_AUTH_KEY_RETRIEVAL_FN) (void *, RPC_WSTR, ULONG, void **, RPC_STATUS *)

Definition at line 212 of file rpcdce.h.

◆ RPC_AUTHZ_HANDLE

Definition at line 48 of file rpcdce.h.

◆ RPC_BINDING_HANDLE

Definition at line 50 of file rpcdce.h.

◆ RPC_BINDING_VECTOR

◆ RPC_CSTR

Definition at line 45 of file rpcdce.h.

◆ RPC_EP_INQ_HANDLE

Definition at line 102 of file rpcdce.h.

◆ RPC_HTTP_TRANSPORT_CREDENTIALS_A

◆ RPC_HTTP_TRANSPORT_CREDENTIALS_W

◆ RPC_IF_CALLBACK_FN

typedef RPC_STATUS RPC_ENTRY RPC_IF_CALLBACK_FN(RPC_IF_HANDLE InterfaceUuid, void *Context)

Definition at line 211 of file rpcdce.h.

◆ RPC_IF_HANDLE

typedef void* RPC_IF_HANDLE

Definition at line 49 of file rpcdce.h.

◆ RPC_IF_ID

◆ RPC_MGMT_AUTHORIZATION_FN

typedef int(__RPC_API * RPC_MGMT_AUTHORIZATION_FN) (RPC_BINDING_HANDLE, ULONG, RPC_STATUS *)

Definition at line 412 of file rpcdce.h.

◆ RPC_POLICY

◆ RPC_PROTSEQ_VECTORA

◆ RPC_PROTSEQ_VECTORW

◆ RPC_SECURITY_QOS

◆ RPC_SECURITY_QOS_V2_A

◆ RPC_SECURITY_QOS_V2_W

◆ RPC_WSTR

Definition at line 46 of file rpcdce.h.

◆ SEC_WINNT_AUTH_IDENTITY_A

◆ SEC_WINNT_AUTH_IDENTITY_W

◆ UUID

typedef GUID UUID

Definition at line 42 of file rpcdce.h.

◆ UUID_VECTOR

Function Documentation

◆ DceErrorInqTextA()

RPC_STATUS RPC_ENTRY DceErrorInqTextA ( RPC_STATUS  e,
RPC_CSTR  buffer 
)

Definition at line 697 of file rpcrt4_main.c.

698{
700 WCHAR bufferW [MAX_RPC_ERROR_TEXT];
701 if ((status = DceErrorInqTextW (e, bufferW)) == RPC_S_OK)
702 {
704 NULL, NULL))
705 {
706 ERR ("Failed to translate error\n");
708 }
709 }
710 return status;
711}
#define ERR(fmt,...)
Definition: debug.h:110
#define NULL
Definition: types.h:112
#define CP_ACP
Definition: compat.h:109
#define WideCharToMultiByte
Definition: compat.h:111
GLuint buffer
Definition: glext.h:5915
#define e
Definition: ke_i.h:82
#define RPC_S_INVALID_ARG
Definition: rpcnterr.h:23
#define RPC_S_OK
Definition: rpcnterr.h:22
RPC_STATUS RPC_ENTRY DceErrorInqTextW(RPC_STATUS e, RPC_WSTR buffer)
Definition: rpcrt4_main.c:674
#define MAX_RPC_ERROR_TEXT
Definition: rpcrt4_main.c:660
long RPC_STATUS
Definition: rpc.h:52
Definition: ps.c:97
char * LPSTR
Definition: xmlstorage.h:182
__wchar_t WCHAR
Definition: xmlstorage.h:180

Referenced by TestDceErrorInqText().

◆ DceErrorInqTextW()

RPC_STATUS RPC_ENTRY DceErrorInqTextW ( RPC_STATUS  e,
RPC_WSTR  buffer 
)

Definition at line 674 of file rpcrt4_main.c.

675{
676 DWORD count;
680 if (!count)
681 {
685 if (!count)
686 {
687 ERR ("Failed to translate error\n");
688 return RPC_S_INVALID_ARG;
689 }
690 }
691 return RPC_S_OK;
692}
DWORD WINAPI FormatMessageW(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, LPWSTR lpBuffer, DWORD nSize, __ms_va_list *args)
Definition: format_msg.c:583
unsigned long DWORD
Definition: ntddk_ex.h:95
GLuint GLuint GLsizei count
Definition: gl.h:1545
#define FORMAT_MESSAGE_IGNORE_INSERTS
Definition: winbase.h:420
#define FORMAT_MESSAGE_FROM_SYSTEM
Definition: winbase.h:423
#define RPC_S_NOT_RPC_ERROR
Definition: winerror.h:1130

Referenced by DceErrorInqTextA().

◆ RpcBindingCopy()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingCopy ( RPC_BINDING_HANDLE  SourceBinding,
RPC_BINDING_HANDLE DestinationBinding 
)

Definition at line 989 of file rpc_binding.c.

992{
993 RpcBinding *DestBinding;
994 RpcBinding *SrcBinding = SourceBinding;
996
997 TRACE("(%p, %p)\n", SourceBinding, DestinationBinding);
998
999 status = RPCRT4_AllocBinding(&DestBinding, SrcBinding->server);
1000 if (status != RPC_S_OK) return status;
1001
1002 DestBinding->ObjectUuid = SrcBinding->ObjectUuid;
1003 DestBinding->BlockingFn = SrcBinding->BlockingFn;
1004 DestBinding->Protseq = RPCRT4_strndupA(SrcBinding->Protseq, -1);
1005 DestBinding->NetworkAddr = RPCRT4_strndupA(SrcBinding->NetworkAddr, -1);
1006 DestBinding->Endpoint = RPCRT4_strndupA(SrcBinding->Endpoint, -1);
1007 DestBinding->NetworkOptions = RPCRT4_strdupW(SrcBinding->NetworkOptions);
1008 DestBinding->CookieAuth = RPCRT4_strdupW(SrcBinding->CookieAuth);
1009 if (SrcBinding->Assoc) SrcBinding->Assoc->refs++;
1010 DestBinding->Assoc = SrcBinding->Assoc;
1011
1012 if (SrcBinding->AuthInfo) RpcAuthInfo_AddRef(SrcBinding->AuthInfo);
1013 DestBinding->AuthInfo = SrcBinding->AuthInfo;
1014 if (SrcBinding->QOS) RpcQualityOfService_AddRef(SrcBinding->QOS);
1015 DestBinding->QOS = SrcBinding->QOS;
1016
1017 *DestinationBinding = DestBinding;
1018 return RPC_S_OK;
1019}
static RPC_STATUS RPCRT4_AllocBinding(RpcBinding **Binding, BOOL server)
Definition: rpc_binding.c:109
LPSTR RPCRT4_strndupA(LPCSTR src, INT slen)
Definition: rpc_binding.c:45
ULONG RpcAuthInfo_AddRef(RpcAuthInfo *AuthInfo)
Definition: rpc_binding.c:1183
ULONG RpcQualityOfService_AddRef(RpcQualityOfService *qos)
Definition: rpc_binding.c:1360
#define RPCRT4_strdupW(x)
Definition: rpc_binding.h:152
#define TRACE(s)
Definition: solgame.cpp:4
RPC_BLOCKING_FN BlockingFn
Definition: rpc_binding.h:134
LPSTR NetworkAddr
Definition: rpc_binding.h:131
LPWSTR NetworkOptions
Definition: rpc_binding.h:133
LPWSTR CookieAuth
Definition: rpc_binding.h:142
RpcAuthInfo * AuthInfo
Definition: rpc_binding.h:140
LPSTR Endpoint
Definition: rpc_binding.h:132
LPSTR Protseq
Definition: rpc_binding.h:130
struct _RpcAssoc * Assoc
Definition: rpc_binding.h:137
UUID ObjectUuid
Definition: rpc_binding.h:129
RpcQualityOfService * QOS
Definition: rpc_binding.h:141

Referenced by get_epm_handle_client(), and ndr_update_context_handle().

◆ RpcBindingFree()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingFree ( RPC_BINDING_HANDLE Binding)

Definition at line 787 of file rpc_binding.c.

788{
790 TRACE("(%p) = %p\n", Binding, *Binding);
791 if (*Binding)
793 else
795 if (status == RPC_S_OK) *Binding = NULL;
796 return status;
797}
RPC_STATUS RPCRT4_ReleaseBinding(RpcBinding *Binding)
Definition: rpc_binding.c:254
#define RPC_S_INVALID_BINDING
Definition: winerror.h:1013

Referenced by ATSVC_HANDLE_unbind(), BROWSER_IDENTIFY_HANDLE_unbind(), client(), ClientRpcChannelBuffer_Release(), CreateJob(), CreateProcessWithLogonW(), DNSRSLVR_HANDLE_unbind(), DsSetupUnbind(), epm_register(), EVENTLOG_HANDLE_A_unbind(), EVENTLOG_HANDLE_W_unbind(), get_irot_handle(), listen_test_client_thread(), LOGONSRV_HANDLE_unbind(), main(), MSI_FreePackage(), ndr_update_context_handle(), NetpUnbind(), PLSAPR_SERVER_NAME_unbind(), PnpUnbindRpc(), PREGISTRY_SERVER_NAME_unbind(), PSAMPR_SERVER_NAME_unbind(), RPC_CreateClientChannel(), RpcBindingVectorFree(), RpcEpResolveBinding(), RpcEpUnregister(), RpcSmDestroyClientContext(), RunningObjectTableImpl_Destroy(), s_context_handle_test(), ScDestroyStatusBinding(), SRVSVC_HANDLE_unbind(), SVCCTL_HANDLEA_unbind(), SVCCTL_HANDLEW_unbind(), test_endpoint_mapper(), test_ndr_buffer(), test_reconnect(), test_rpc_ncacn_ip_tcp(), test_RpcBindingFree(), test_RpcStringBindingFromBinding(), WINSPOOL_HANDLE_unbind(), WKSSVC_IDENTIFY_HANDLE_unbind(), WKSSVC_IMPERSONATE_HANDLE_unbind(), and WLANSVC_HANDLE_unbind().

◆ RpcBindingFromStringBindingA()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingFromStringBindingA ( RPC_CSTR  StringBinding,
RPC_BINDING_HANDLE Binding 
)

Definition at line 840 of file rpc_binding.c.

841{
844 RPC_CSTR ObjectUuid, Protseq, NetworkAddr, Endpoint, Options;
845 UUID Uuid;
846
847 TRACE("(%s,%p)\n", debugstr_a((char*)StringBinding), Binding);
848
849 ret = RpcStringBindingParseA(StringBinding, &ObjectUuid, &Protseq,
850 &NetworkAddr, &Endpoint, &Options);
851 if (ret != RPC_S_OK) return ret;
852
853 ret = UuidFromStringA(ObjectUuid, &Uuid);
854
855 if (ret == RPC_S_OK)
856 ret = RPCRT4_CreateBindingA(&bind, FALSE, (char*)Protseq);
857 if (ret == RPC_S_OK) {
859 if (ret == RPC_S_OK)
860 ret = RPCRT4_CompleteBindingA(bind, (char*)NetworkAddr, (char*)Endpoint, (char*)Options);
861
862 if (ret == RPC_S_OK)
864 else
866 }
867
869 RpcStringFreeA(&Endpoint);
870 RpcStringFreeA(&NetworkAddr);
871 RpcStringFreeA(&Protseq);
872 RpcStringFreeA(&ObjectUuid);
873
874 return ret;
875}
#define FALSE
Definition: types.h:117
#define debugstr_a
Definition: kernel32.h:31
RPC_STATUS WINAPI RpcStringBindingParseA(RPC_CSTR StringBinding, RPC_CSTR *ObjUuid, RPC_CSTR *Protseq, RPC_CSTR *NetworkAddr, RPC_CSTR *Endpoint, RPC_CSTR *Options)
Definition: rpc_binding.c:564
static RPC_STATUS RPCRT4_CreateBindingA(RpcBinding **Binding, BOOL server, LPCSTR Protseq)
Definition: rpc_binding.c:122
RPC_STATUS RPCRT4_SetBindingObject(RpcBinding *Binding, const UUID *ObjectUuid)
Definition: rpc_binding.c:224
static RPC_STATUS RPCRT4_CompleteBindingA(RpcBinding *Binding, LPCSTR NetworkAddr, LPCSTR Endpoint, LPCSTR NetworkOptions)
Definition: rpc_binding.c:148
I_RPC_HANDLE RPC_BINDING_HANDLE
Definition: rpcdce.h:50
unsigned char * RPC_CSTR
Definition: rpcdce.h:45
RPC_STATUS WINAPI RpcStringFreeA(RPC_CSTR *String)
Definition: rpcrt4_main.c:158
RPC_STATUS WINAPI UuidFromStringA(RPC_CSTR s, UUID *uuid)
Definition: rpcrt4_main.c:574
INT WSAAPI bind(IN SOCKET s, IN CONST struct sockaddr *name, IN INT namelen)
Definition: socklife.c:36
int ret
_In_ PWDFDEVICE_INIT _In_ PWDF_REMOVE_LOCK_OPTIONS Options
Definition: wdfdevice.h:3534

Referenced by client(), EVENTLOG_HANDLE_A_bind(), get_epm_handle_server(), listen_test_client_thread(), SVCCTL_HANDLEA_bind(), test_endpoint_mapper(), test_ndr_buffer(), test_reconnect(), test_rpc_ncacn_ip_tcp(), and test_RpcStringBindingFromBinding().

◆ RpcBindingFromStringBindingW()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingFromStringBindingW ( RPC_WSTR  StringBinding,
RPC_BINDING_HANDLE Binding 
)

Definition at line 880 of file rpc_binding.c.

881{
884 RPC_WSTR ObjectUuid, Protseq, NetworkAddr, Endpoint, Options;
885 UUID Uuid;
886
887 TRACE("(%s,%p)\n", debugstr_w(StringBinding), Binding);
888
889 ret = RpcStringBindingParseW(StringBinding, &ObjectUuid, &Protseq,
890 &NetworkAddr, &Endpoint, &Options);
891 if (ret != RPC_S_OK) return ret;
892
893 ret = UuidFromStringW(ObjectUuid, &Uuid);
894
895 if (ret == RPC_S_OK)
896 ret = RPCRT4_CreateBindingW(&bind, FALSE, Protseq);
897 if (ret == RPC_S_OK) {
899 if (ret == RPC_S_OK)
900 ret = RPCRT4_CompleteBindingW(bind, NetworkAddr, Endpoint, Options);
901
902 if (ret == RPC_S_OK)
904 else
906 }
907
909 RpcStringFreeW(&Endpoint);
910 RpcStringFreeW(&NetworkAddr);
911 RpcStringFreeW(&Protseq);
912 RpcStringFreeW(&ObjectUuid);
913
914 return ret;
915}
#define debugstr_w
Definition: kernel32.h:32
static RPC_STATUS RPCRT4_CreateBindingW(RpcBinding **Binding, BOOL server, LPCWSTR Protseq)
Definition: rpc_binding.c:135
RPC_STATUS WINAPI RpcStringBindingParseW(RPC_WSTR StringBinding, RPC_WSTR *ObjUuid, RPC_WSTR *Protseq, RPC_WSTR *NetworkAddr, RPC_WSTR *Endpoint, RPC_WSTR *Options)
Definition: rpc_binding.c:676
static RPC_STATUS RPCRT4_CompleteBindingW(RpcBinding *Binding, LPCWSTR NetworkAddr, LPCWSTR Endpoint, LPCWSTR NetworkOptions)
Definition: rpc_binding.c:176
unsigned short * RPC_WSTR
Definition: rpcdce.h:46
RPC_STATUS WINAPI RpcStringFreeW(RPC_WSTR *String)
Definition: rpcrt4_main.c:175
RPC_STATUS WINAPI UuidFromStringW(RPC_WSTR s, UUID *uuid)
Definition: rpcrt4_main.c:614

Referenced by __wine_msi_call_dll_function(), ATSVC_HANDLE_bind(), BROWSER_IDENTIFY_HANDLE_bind(), CreateProcessWithLogonW(), DNSRSLVR_HANDLE_bind(), DsSetupBind(), EVENTLOG_HANDLE_W_bind(), get_irot_handle(), LOGONSRV_HANDLE_bind(), NetpBind(), PLSAPR_SERVER_NAME_bind(), PnpBindRpc(), PREGISTRY_SERVER_NAME_bind(), PSAMPR_SERVER_NAME_bind(), RPC_CreateClientChannel(), ScCreateStatusBinding(), SRVSVC_HANDLE_bind(), SVCCTL_HANDLEW_bind(), WINSPOOL_HANDLE_bind(), WKSSVC_IDENTIFY_HANDLE_bind(), WKSSVC_IMPERSONATE_HANDLE_bind(), and WLANSVC_HANDLE_bind().

◆ RpcBindingInqAuthClientA()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingInqAuthClientA ( RPC_BINDING_HANDLE  ClientBinding,
RPC_AUTHZ_HANDLE Privs,
RPC_CSTR ServerPrincName,
ULONG AuthnLevel,
ULONG AuthnSvc,
ULONG AuthzSvc 
)

Definition at line 1572 of file rpc_binding.c.

1575{
1576 return RpcBindingInqAuthClientExA(ClientBinding, Privs, ServerPrincName, AuthnLevel,
1577 AuthnSvc, AuthzSvc, 0);
1578}
RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingInqAuthClientExA(RPC_BINDING_HANDLE ClientBinding, RPC_AUTHZ_HANDLE *Privs, RPC_CSTR *ServerPrincName, ULONG *AuthnLevel, ULONG *AuthnSvc, ULONG *AuthzSvc, ULONG Flags)
Definition: rpc_binding.c:1596

Referenced by s_authinfo_test().

◆ RpcBindingInqAuthClientExA()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingInqAuthClientExA ( RPC_BINDING_HANDLE  ClientBinding,
RPC_AUTHZ_HANDLE Privs,
RPC_CSTR ServerPrincName,
ULONG AuthnLevel,
ULONG AuthnSvc,
ULONG AuthzSvc,
ULONG  Flags 
)

Definition at line 1596 of file rpc_binding.c.

1599{
1601 RPC_WSTR principal;
1602
1603 TRACE("%p %p %p %p %p %p 0x%x\n", ClientBinding, Privs, ServerPrincName, AuthnLevel,
1604 AuthnSvc, AuthzSvc, Flags);
1605
1606 status = RpcBindingInqAuthClientExW(ClientBinding, Privs, ServerPrincName ? &principal : NULL,
1607 AuthnLevel, AuthnSvc, AuthzSvc, Flags);
1608 if (status == RPC_S_OK && ServerPrincName)
1609 {
1610 *ServerPrincName = (RPC_CSTR)RPCRT4_strdupWtoA(principal);
1611 if (!*ServerPrincName && principal) status = RPC_S_OUT_OF_MEMORY;
1612 RpcStringFreeW(&principal);
1613 }
1614
1615 return status;
1616}
LPSTR RPCRT4_strdupWtoA(LPCWSTR src)
Definition: rpc_binding.c:58
RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingInqAuthClientExW(RPC_BINDING_HANDLE ClientBinding, RPC_AUTHZ_HANDLE *Privs, RPC_WSTR *ServerPrincName, ULONG *AuthnLevel, ULONG *AuthnSvc, ULONG *AuthzSvc, ULONG Flags)
Definition: rpc_binding.c:1622
#define RPC_S_OUT_OF_MEMORY
Definition: rpcnterr.h:24
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170

Referenced by RpcBindingInqAuthClientA(), and s_authinfo_test().

◆ RpcBindingInqAuthClientExW()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingInqAuthClientExW ( RPC_BINDING_HANDLE  ClientBinding,
RPC_AUTHZ_HANDLE Privs,
RPC_WSTR ServerPrincName,
ULONG AuthnLevel,
ULONG AuthnSvc,
ULONG AuthzSvc,
ULONG  Flags 
)

Definition at line 1622 of file rpc_binding.c.

1625{
1627
1628 TRACE("%p %p %p %p %p %p 0x%x\n", ClientBinding, Privs, ServerPrincName, AuthnLevel,
1629 AuthnSvc, AuthzSvc, Flags);
1630
1631 if (!ClientBinding) ClientBinding = I_RpcGetCurrentCallHandle();
1632 if (!ClientBinding) return RPC_S_INVALID_BINDING;
1633
1634 bind = ClientBinding;
1635 if (!bind->FromConn) return RPC_S_INVALID_BINDING;
1636
1637 return rpcrt4_conn_inquire_auth_client(bind->FromConn, Privs,
1638 ServerPrincName, AuthnLevel,
1639 AuthnSvc, AuthzSvc, Flags);
1640}
static RPC_STATUS rpcrt4_conn_inquire_auth_client(RpcConnection *conn, RPC_AUTHZ_HANDLE *privs, RPC_WSTR *server_princ_name, ULONG *authn_level, ULONG *authn_svc, ULONG *authz_svc, ULONG flags)
Definition: rpc_binding.h:253
RPC_BINDING_HANDLE WINAPI I_RpcGetCurrentCallHandle(void)
Definition: rpc_server.c:1743

Referenced by RpcBindingInqAuthClientExA(), and RpcBindingInqAuthClientW().

◆ RpcBindingInqAuthClientW()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingInqAuthClientW ( RPC_BINDING_HANDLE  ClientBinding,
RPC_AUTHZ_HANDLE Privs,
RPC_WSTR ServerPrincName,
ULONG AuthnLevel,
ULONG AuthnSvc,
ULONG AuthzSvc 
)

Definition at line 1584 of file rpc_binding.c.

1587{
1588 return RpcBindingInqAuthClientExW(ClientBinding, Privs, ServerPrincName, AuthnLevel,
1589 AuthnSvc, AuthzSvc, 0);
1590}

◆ RpcBindingInqAuthInfoA()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingInqAuthInfoA ( RPC_BINDING_HANDLE  Binding,
RPC_CSTR ServerPrincName,
ULONG AuthnLevel,
ULONG AuthnSvc,
RPC_AUTH_IDENTITY_HANDLE AuthIdentity,
ULONG AuthzSvc 
)

Definition at line 1550 of file rpc_binding.c.

1552{
1553 return RpcBindingInqAuthInfoExA(Binding, ServerPrincName, AuthnLevel, AuthnSvc, AuthIdentity,
1554 AuthzSvc, 0, NULL);
1555}
RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingInqAuthInfoExA(RPC_BINDING_HANDLE Binding, RPC_CSTR *ServerPrincName, ULONG *AuthnLevel, ULONG *AuthnSvc, RPC_AUTH_IDENTITY_HANDLE *AuthIdentity, ULONG *AuthzSvc, ULONG RpcQosVersion, RPC_SECURITY_QOS *SecurityQOS)
Definition: rpc_binding.c:1482

Referenced by test_rpc_ncacn_ip_tcp().

◆ RpcBindingInqAuthInfoExA()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingInqAuthInfoExA ( RPC_BINDING_HANDLE  Binding,
RPC_CSTR ServerPrincName,
ULONG AuthnLevel,
ULONG AuthnSvc,
RPC_AUTH_IDENTITY_HANDLE AuthIdentity,
ULONG AuthzSvc,
ULONG  RpcQosVersion,
RPC_SECURITY_QOS SecurityQOS 
)

Definition at line 1482 of file rpc_binding.c.

1485{
1487 RPC_WSTR principal;
1488
1489 TRACE("%p %p %p %p %p %p %u %p\n", Binding, ServerPrincName, AuthnLevel,
1490 AuthnSvc, AuthIdentity, AuthzSvc, RpcQosVersion, SecurityQOS);
1491
1492 status = RpcBindingInqAuthInfoExW(Binding, ServerPrincName ? &principal : NULL, AuthnLevel,
1493 AuthnSvc, AuthIdentity, AuthzSvc, RpcQosVersion, SecurityQOS);
1494 if (status == RPC_S_OK && ServerPrincName)
1495 {
1496 *ServerPrincName = (RPC_CSTR)RPCRT4_strdupWtoA(principal);
1497 RpcStringFreeW(&principal);
1498 if (!*ServerPrincName) return RPC_S_OUT_OF_MEMORY;
1499 }
1500
1501 return status;
1502}
RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingInqAuthInfoExW(RPC_BINDING_HANDLE Binding, RPC_WSTR *ServerPrincName, ULONG *AuthnLevel, ULONG *AuthnSvc, RPC_AUTH_IDENTITY_HANDLE *AuthIdentity, ULONG *AuthzSvc, ULONG RpcQosVersion, RPC_SECURITY_QOS *SecurityQOS)
Definition: rpc_binding.c:1508

Referenced by RpcBindingInqAuthInfoA().

◆ RpcBindingInqAuthInfoExW()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingInqAuthInfoExW ( RPC_BINDING_HANDLE  Binding,
RPC_WSTR ServerPrincName,
ULONG AuthnLevel,
ULONG AuthnSvc,
RPC_AUTH_IDENTITY_HANDLE AuthIdentity,
ULONG AuthzSvc,
ULONG  RpcQosVersion,
RPC_SECURITY_QOS SecurityQOS 
)

Definition at line 1508 of file rpc_binding.c.

1511{
1513
1514 TRACE("%p %p %p %p %p %p %u %p\n", Binding, ServerPrincName, AuthnLevel,
1515 AuthnSvc, AuthIdentity, AuthzSvc, RpcQosVersion, SecurityQOS);
1516
1517 if (!bind->AuthInfo) return RPC_S_BINDING_HAS_NO_AUTH;
1518
1519 if (SecurityQOS)
1520 {
1521 FIXME("QOS not implemented\n");
1522 return RPC_S_INVALID_BINDING;
1523 }
1524
1525 if (ServerPrincName)
1526 {
1527 if (bind->AuthInfo->server_principal_name)
1528 {
1529 *ServerPrincName = RPCRT4_strdupW(bind->AuthInfo->server_principal_name);
1530 if (!*ServerPrincName) return RPC_S_OUT_OF_MEMORY;
1531 }
1532 else *ServerPrincName = NULL;
1533 }
1534 if (AuthnLevel) *AuthnLevel = bind->AuthInfo->AuthnLevel;
1535 if (AuthnSvc) *AuthnSvc = bind->AuthInfo->AuthnSvc;
1536 if (AuthIdentity) *AuthIdentity = bind->AuthInfo->identity;
1537 if (AuthzSvc)
1538 {
1539 FIXME("authorization service not implemented\n");
1540 *AuthzSvc = RPC_C_AUTHZ_NONE;
1541 }
1542
1543 return RPC_S_OK;
1544}
#define FIXME(fmt,...)
Definition: debug.h:111
#define RPC_C_AUTHZ_NONE
Definition: rpcdce.h:167
#define RPC_S_BINDING_HAS_NO_AUTH
Definition: winerror.h:1054

Referenced by RpcBindingInqAuthInfoExA(), and RpcBindingInqAuthInfoW().

◆ RpcBindingInqAuthInfoW()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingInqAuthInfoW ( RPC_BINDING_HANDLE  Binding,
RPC_WSTR ServerPrincName,
ULONG AuthnLevel,
ULONG AuthnSvc,
RPC_AUTH_IDENTITY_HANDLE AuthIdentity,
ULONG AuthzSvc 
)

Definition at line 1561 of file rpc_binding.c.

1563{
1564 return RpcBindingInqAuthInfoExW(Binding, ServerPrincName, AuthnLevel, AuthnSvc, AuthIdentity,
1565 AuthzSvc, 0, NULL);
1566}

◆ RpcBindingInqObject()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingInqObject ( RPC_BINDING_HANDLE  Binding,
UUID ObjectUuid 
)

Definition at line 816 of file rpc_binding.c.

817{
819
820 TRACE("(%p,%p) = %s\n", Binding, ObjectUuid, debugstr_guid(&bind->ObjectUuid));
821 *ObjectUuid = bind->ObjectUuid;
822 return RPC_S_OK;
823}
#define debugstr_guid
Definition: kernel32.h:35

Referenced by ClientRpcChannelBuffer_GetBuffer(), and dispatch_rpc().

◆ RpcBindingInqOption()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingInqOption ( RPC_BINDING_HANDLE  Binding,
ULONG  Option,
ULONG_PTR OptionValue 
)

◆ RpcBindingReset()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingReset ( RPC_BINDING_HANDLE  Binding)

Definition at line 1024 of file rpc_binding.c.

1025{
1027
1028 TRACE("(%p)\n", Binding);
1029
1030 RPCRT4_strfree(bind->Endpoint);
1031 bind->Endpoint = NULL;
1032 if (bind->Assoc) RpcAssoc_Release(bind->Assoc);
1033 bind->Assoc = NULL;
1034
1035 return RPC_S_OK;
1036}
ULONG RpcAssoc_Release(RpcAssoc *assoc)
Definition: rpc_assoc.c:187
void RPCRT4_strfree(LPSTR src)
Definition: rpc_binding.c:104

Referenced by test_endpoint_mapper().

◆ RpcBindingServerFromClient()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingServerFromClient ( RPC_BINDING_HANDLE  ClientBinding,
RPC_BINDING_HANDLE ServerBinding 
)

Definition at line 1646 of file rpc_binding.c.

1647{
1648 RpcBinding* bind = ClientBinding;
1649 RpcBinding* NewBinding;
1650
1651 if (!bind)
1653
1654 if (!bind->server)
1655 return RPC_S_INVALID_BINDING;
1656
1657 RPCRT4_AllocBinding(&NewBinding, TRUE);
1658 NewBinding->Protseq = RPCRT4_strdupA(bind->Protseq);
1659 NewBinding->NetworkAddr = RPCRT4_strdupA(bind->NetworkAddr);
1660
1661 *ServerBinding = NewBinding;
1662
1663 return RPC_S_OK;
1664}
#define TRUE
Definition: types.h:120
#define RPCRT4_strdupA(x)
Definition: rpc_binding.h:151

Referenced by CreateJob(), and s_context_handle_test().

◆ RpcBindingSetAuthInfoA()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingSetAuthInfoA ( RPC_BINDING_HANDLE  Binding,
RPC_CSTR  ServerPrincName,
ULONG  AuthnLevel,
ULONG  AuthnSvc,
RPC_AUTH_IDENTITY_HANDLE  AuthIdentity,
ULONG  AuthzSvr 
)

Definition at line 1933 of file rpc_binding.c.

1935{
1936 TRACE("%p %s %u %u %p %u\n", Binding, debugstr_a((const char*)ServerPrincName),
1937 AuthnLevel, AuthnSvc, AuthIdentity, AuthzSvr);
1938 return RpcBindingSetAuthInfoExA(Binding, ServerPrincName, AuthnLevel, AuthnSvc, AuthIdentity, AuthzSvr, NULL);
1939}
RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingSetAuthInfoExA(RPC_BINDING_HANDLE Binding, RPC_CSTR ServerPrincName, ULONG AuthnLevel, ULONG AuthnSvc, RPC_AUTH_IDENTITY_HANDLE AuthIdentity, ULONG AuthzSvr, RPC_SECURITY_QOS *SecurityQos)
Definition: rpc_binding.c:1670

Referenced by test_rpc_ncacn_ip_tcp().

◆ RpcBindingSetAuthInfoExA()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingSetAuthInfoExA ( RPC_BINDING_HANDLE  Binding,
RPC_CSTR  ServerPrincName,
ULONG  AuthnLevel,
ULONG  AuthnSvc,
RPC_AUTH_IDENTITY_HANDLE  AuthIdentity,
ULONG  AuthzSvr,
RPC_SECURITY_QOS SecurityQos 
)

Definition at line 1670 of file rpc_binding.c.

1674{
1677 CredHandle cred;
1678 TimeStamp exp;
1679 ULONG package_count;
1680 ULONG i;
1681 PSecPkgInfoA packages;
1682 ULONG cbMaxToken;
1683
1684 TRACE("%p %s %u %u %p %u %p\n", Binding, debugstr_a((const char*)ServerPrincName),
1685 AuthnLevel, AuthnSvc, AuthIdentity, AuthzSvr, SecurityQos);
1686
1687 if (SecurityQos)
1688 {
1690
1691 TRACE("SecurityQos { Version=%d, Capabilities=0x%x, IdentityTracking=%d, ImpersonationLevel=%d",
1692 SecurityQos->Version, SecurityQos->Capabilities, SecurityQos->IdentityTracking, SecurityQos->ImpersonationType);
1693 if (SecurityQos->Version >= 2)
1694 {
1695 const RPC_SECURITY_QOS_V2_A *SecurityQos2 = (const RPC_SECURITY_QOS_V2_A *)SecurityQos;
1696 TRACE(", AdditionalSecurityInfoType=%d", SecurityQos2->AdditionalSecurityInfoType);
1698 TRACE(", { %p, 0x%x, %d, %d, %p(%u), %s }",
1699 SecurityQos2->u.HttpCredentials->TransportCredentials,
1700 SecurityQos2->u.HttpCredentials->Flags,
1701 SecurityQos2->u.HttpCredentials->AuthenticationTarget,
1702 SecurityQos2->u.HttpCredentials->NumberOfAuthnSchemes,
1703 SecurityQos2->u.HttpCredentials->AuthnSchemes,
1704 SecurityQos2->u.HttpCredentials->AuthnSchemes ? *SecurityQos2->u.HttpCredentials->AuthnSchemes : 0,
1706 }
1707 TRACE("}\n");
1708 status = RpcQualityOfService_Create(SecurityQos, FALSE, &bind->QOS);
1709 if (status != RPC_S_OK)
1710 return status;
1711 }
1712 else
1713 {
1714 if (bind->QOS) RpcQualityOfService_Release(bind->QOS);
1715 bind->QOS = NULL;
1716 }
1717
1718 if (AuthnSvc == RPC_C_AUTHN_DEFAULT)
1719 AuthnSvc = RPC_C_AUTHN_WINNT;
1720
1721 /* FIXME: the mapping should probably be retrieved using SSPI somehow */
1722 if (AuthnLevel == RPC_C_AUTHN_LEVEL_DEFAULT)
1723 AuthnLevel = RPC_C_AUTHN_LEVEL_NONE;
1724
1725 if ((AuthnLevel == RPC_C_AUTHN_LEVEL_NONE) || (AuthnSvc == RPC_C_AUTHN_NONE))
1726 {
1727 if (bind->AuthInfo) RpcAuthInfo_Release(bind->AuthInfo);
1728 bind->AuthInfo = NULL;
1729 return RPC_S_OK;
1730 }
1731
1732 if (AuthnLevel > RPC_C_AUTHN_LEVEL_PKT_PRIVACY)
1733 {
1734 FIXME("unknown AuthnLevel %u\n", AuthnLevel);
1736 }
1737
1738 /* RPC_C_AUTHN_WINNT ignores the AuthzSvr parameter */
1739 if (AuthzSvr && AuthnSvc != RPC_C_AUTHN_WINNT)
1740 {
1741 FIXME("unsupported AuthzSvr %u\n", AuthzSvr);
1743 }
1744
1745 r = EnumerateSecurityPackagesA(&package_count, &packages);
1746 if (r != SEC_E_OK)
1747 {
1748 ERR("EnumerateSecurityPackagesA failed with error 0x%08x\n", r);
1749 return RPC_S_SEC_PKG_ERROR;
1750 }
1751
1752 for (i = 0; i < package_count; i++)
1753 if (packages[i].wRPCID == AuthnSvc)
1754 break;
1755
1756 if (i == package_count)
1757 {
1758 FIXME("unsupported AuthnSvc %u\n", AuthnSvc);
1759 FreeContextBuffer(packages);
1761 }
1762
1763 TRACE("found package %s for service %u\n", packages[i].Name, AuthnSvc);
1765 AuthIdentity, NULL, NULL, &cred, &exp);
1766 cbMaxToken = packages[i].cbMaxToken;
1767 FreeContextBuffer(packages);
1768 if (r == ERROR_SUCCESS)
1769 {
1770 RpcAuthInfo *new_auth_info;
1771 r = RpcAuthInfo_Create(AuthnLevel, AuthnSvc, cred, exp, cbMaxToken,
1772 AuthIdentity, &new_auth_info);
1773 if (r == RPC_S_OK)
1774 {
1775 new_auth_info->server_principal_name = RPCRT4_strdupAtoW((char *)ServerPrincName);
1776 if (!ServerPrincName || new_auth_info->server_principal_name)
1777 {
1778 if (bind->AuthInfo) RpcAuthInfo_Release(bind->AuthInfo);
1779 bind->AuthInfo = new_auth_info;
1780 }
1781 else
1782 {
1783 RpcAuthInfo_Release(new_auth_info);
1785 }
1786 }
1787 else
1788 FreeCredentialsHandle(&cred);
1789 return r;
1790 }
1791 else
1792 {
1793 ERR("AcquireCredentialsHandleA failed with error 0x%08x\n", r);
1794 return RPC_S_SEC_PKG_ERROR;
1795 }
1796}
#define ERROR_SUCCESS
Definition: deptool.c:10
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
DWORD exp
Definition: msg.c:16058
LONG SECURITY_STATUS
Definition: sspi.h:34
#define SECPKG_CRED_OUTBOUND
Definition: sspi.h:291
RPC_STATUS RpcAuthInfo_Create(ULONG AuthnLevel, ULONG AuthnSvc, CredHandle cred, TimeStamp exp, ULONG cbMaxToken, RPC_AUTH_IDENTITY_HANDLE identity, RpcAuthInfo **ret)
Definition: rpc_binding.c:1117
ULONG RpcAuthInfo_Release(RpcAuthInfo *AuthInfo)
Definition: rpc_binding.c:1188
static RPC_STATUS RpcQualityOfService_Create(const RPC_SECURITY_QOS *qos_src, BOOL unicode, RpcQualityOfService **qos_dst)
Definition: rpc_binding.c:1250
LPWSTR RPCRT4_strdupAtoW(LPCSTR src)
Definition: rpc_binding.c:69
ULONG RpcQualityOfService_Release(RpcQualityOfService *qos)
Definition: rpc_binding.c:1365
#define RPC_C_AUTHN_DEFAULT
Definition: rpcdce.h:165
#define RPC_C_AUTHN_LEVEL_PKT_PRIVACY
Definition: rpcdce.h:151
#define RPC_C_AUTHN_LEVEL_NONE
Definition: rpcdce.h:146
#define RPC_C_AUTHN_LEVEL_DEFAULT
Definition: rpcdce.h:145
#define RPC_C_AUTHN_INFO_TYPE_HTTP
Definition: rpcdce.h:195
#define RPC_C_AUTHN_WINNT
Definition: rpcdce.h:158
#define RPC_C_AUTHN_NONE
Definition: rpcdce.h:153
SECURITY_STATUS WINAPI FreeContextBuffer(PVOID pv)
Definition: sspi.c:699
SECURITY_STATUS WINAPI EnumerateSecurityPackagesA(PULONG pcPackages, PSecPkgInfoA *ppPackageInfo)
Definition: sspi.c:855
SEC_WINNT_AUTH_IDENTITY_A * TransportCredentials
Definition: rpcdce.h:255
unsigned char * ServerCertificateSubject
Definition: rpcdce.h:260
union _RPC_SECURITY_QOS_V2_A::@3218 u
ULONG AdditionalSecurityInfoType
Definition: rpcdce.h:289
RPC_HTTP_TRANSPORT_CREDENTIALS_A * HttpCredentials
Definition: rpcdce.h:292
ULONG ImpersonationType
Definition: rpcdce.h:267
ULONG Capabilities
Definition: rpcdce.h:265
ULONG IdentityTracking
Definition: rpcdce.h:266
LPWSTR server_principal_name
Definition: rpc_binding.h:50
ULONG cbMaxToken
Definition: sspi.h:107
uint32_t ULONG
Definition: typedefs.h:59
#define SEC_E_OK
Definition: winerror.h:2356
#define RPC_S_UNKNOWN_AUTHN_LEVEL
Definition: winerror.h:1056
#define RPC_S_UNKNOWN_AUTHN_SERVICE
Definition: winerror.h:1055
#define RPC_S_SEC_PKG_ERROR
Definition: winerror.h:1132
#define RPC_S_UNKNOWN_AUTHZ_SERVICE
Definition: winerror.h:1058
SECURITY_STATUS WINAPI AcquireCredentialsHandleA(SEC_CHAR *pszPrincipal, SEC_CHAR *pszPackage, ULONG fCredentialsUse, PLUID pvLogonID, PVOID pAuthData, SEC_GET_KEY_FN pGetKeyFn, PVOID pvGetKeyArgument, PCredHandle phCredential, PTimeStamp ptsExpiry)
Definition: wrapper.c:59
SECURITY_STATUS WINAPI FreeCredentialsHandle(PCredHandle phCredential)
Definition: wrapper.c:151

Referenced by RpcBindingSetAuthInfoA().

◆ RpcBindingSetAuthInfoExW()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingSetAuthInfoExW ( RPC_BINDING_HANDLE  Binding,
RPC_WSTR  ServerPrincName,
ULONG  AuthnLevel,
ULONG  AuthnSvc,
RPC_AUTH_IDENTITY_HANDLE  AuthIdentity,
ULONG  AuthzSvr,
RPC_SECURITY_QOS SecurityQos 
)

Definition at line 1802 of file rpc_binding.c.

1805{
1808 CredHandle cred;
1809 TimeStamp exp;
1810 ULONG package_count;
1811 ULONG i;
1812 PSecPkgInfoW packages;
1813 ULONG cbMaxToken;
1814
1815 TRACE("%p %s %u %u %p %u %p\n", Binding, debugstr_w(ServerPrincName),
1816 AuthnLevel, AuthnSvc, AuthIdentity, AuthzSvr, SecurityQos);
1817
1818 if (SecurityQos)
1819 {
1821
1822 TRACE("SecurityQos { Version=%d, Capabilities=0x%x, IdentityTracking=%d, ImpersonationLevel=%d",
1823 SecurityQos->Version, SecurityQos->Capabilities, SecurityQos->IdentityTracking, SecurityQos->ImpersonationType);
1824 if (SecurityQos->Version >= 2)
1825 {
1826 const RPC_SECURITY_QOS_V2_W *SecurityQos2 = (const RPC_SECURITY_QOS_V2_W *)SecurityQos;
1827 TRACE(", AdditionalSecurityInfoType=%d", SecurityQos2->AdditionalSecurityInfoType);
1829 TRACE(", { %p, 0x%x, %d, %d, %p(%u), %s }",
1830 SecurityQos2->u.HttpCredentials->TransportCredentials,
1831 SecurityQos2->u.HttpCredentials->Flags,
1832 SecurityQos2->u.HttpCredentials->AuthenticationTarget,
1833 SecurityQos2->u.HttpCredentials->NumberOfAuthnSchemes,
1834 SecurityQos2->u.HttpCredentials->AuthnSchemes,
1835 SecurityQos2->u.HttpCredentials->AuthnSchemes ? *SecurityQos2->u.HttpCredentials->AuthnSchemes : 0,
1837 }
1838 TRACE("}\n");
1839 status = RpcQualityOfService_Create(SecurityQos, TRUE, &bind->QOS);
1840 if (status != RPC_S_OK)
1841 return status;
1842 }
1843 else
1844 {
1845 if (bind->QOS) RpcQualityOfService_Release(bind->QOS);
1846 bind->QOS = NULL;
1847 }
1848
1849 if (AuthnSvc == RPC_C_AUTHN_DEFAULT)
1850 AuthnSvc = RPC_C_AUTHN_WINNT;
1851
1852 /* FIXME: the mapping should probably be retrieved using SSPI somehow */
1853 if (AuthnLevel == RPC_C_AUTHN_LEVEL_DEFAULT)
1854 AuthnLevel = RPC_C_AUTHN_LEVEL_NONE;
1855
1856 if ((AuthnLevel == RPC_C_AUTHN_LEVEL_NONE) || (AuthnSvc == RPC_C_AUTHN_NONE))
1857 {
1858 if (bind->AuthInfo) RpcAuthInfo_Release(bind->AuthInfo);
1859 bind->AuthInfo = NULL;
1860 return RPC_S_OK;
1861 }
1862
1863 if (AuthnLevel > RPC_C_AUTHN_LEVEL_PKT_PRIVACY)
1864 {
1865 FIXME("unknown AuthnLevel %u\n", AuthnLevel);
1867 }
1868
1869 /* RPC_C_AUTHN_WINNT ignores the AuthzSvr parameter */
1870 if (AuthzSvr && AuthnSvc != RPC_C_AUTHN_WINNT)
1871 {
1872 FIXME("unsupported AuthzSvr %u\n", AuthzSvr);
1874 }
1875
1876 r = EnumerateSecurityPackagesW(&package_count, &packages);
1877 if (r != SEC_E_OK)
1878 {
1879 ERR("EnumerateSecurityPackagesW failed with error 0x%08x\n", r);
1880 return RPC_S_SEC_PKG_ERROR;
1881 }
1882
1883 for (i = 0; i < package_count; i++)
1884 if (packages[i].wRPCID == AuthnSvc)
1885 break;
1886
1887 if (i == package_count)
1888 {
1889 FIXME("unsupported AuthnSvc %u\n", AuthnSvc);
1890 FreeContextBuffer(packages);
1892 }
1893
1894 TRACE("found package %s for service %u\n", debugstr_w(packages[i].Name), AuthnSvc);
1896 AuthIdentity, NULL, NULL, &cred, &exp);
1897 cbMaxToken = packages[i].cbMaxToken;
1898 FreeContextBuffer(packages);
1899 if (r == ERROR_SUCCESS)
1900 {
1901 RpcAuthInfo *new_auth_info;
1902 r = RpcAuthInfo_Create(AuthnLevel, AuthnSvc, cred, exp, cbMaxToken,
1903 AuthIdentity, &new_auth_info);
1904 if (r == RPC_S_OK)
1905 {
1906 new_auth_info->server_principal_name = RPCRT4_strdupW(ServerPrincName);
1907 if (!ServerPrincName || new_auth_info->server_principal_name)
1908 {
1909 if (bind->AuthInfo) RpcAuthInfo_Release(bind->AuthInfo);
1910 bind->AuthInfo = new_auth_info;
1911 }
1912 else
1913 {
1914 RpcAuthInfo_Release(new_auth_info);
1916 }
1917 }
1918 else
1919 FreeCredentialsHandle(&cred);
1920 return r;
1921 }
1922 else
1923 {
1924 ERR("AcquireCredentialsHandleW failed with error 0x%08x\n", r);
1925 return RPC_S_SEC_PKG_ERROR;
1926 }
1927}
SECURITY_STATUS WINAPI EnumerateSecurityPackagesW(PULONG pcPackages, PSecPkgInfoW *ppPackageInfo)
Definition: sspi.c:709
SEC_WINNT_AUTH_IDENTITY_W * TransportCredentials
Definition: rpcdce.h:245
unsigned short * ServerCertificateSubject
Definition: rpcdce.h:250
RPC_HTTP_TRANSPORT_CREDENTIALS_W * HttpCredentials
Definition: rpcdce.h:279
ULONG AdditionalSecurityInfoType
Definition: rpcdce.h:276
union _RPC_SECURITY_QOS_V2_W::@3217 u
ULONG cbMaxToken
Definition: sspi.h:117
SECURITY_STATUS WINAPI AcquireCredentialsHandleW(SEC_WCHAR *pszPrincipal, SEC_WCHAR *pszPackage, ULONG fCredentialsUse, PLUID pvLogonID, PVOID pAuthData, SEC_GET_KEY_FN pGetKeyFn, PVOID pvGetKeyArgument, PCredHandle phCredential, PTimeStamp ptsExpiry)
Definition: wrapper.c:105

Referenced by RpcBindingSetAuthInfoW().

◆ RpcBindingSetAuthInfoW()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingSetAuthInfoW ( RPC_BINDING_HANDLE  Binding,
RPC_WSTR  ServerPrincName,
ULONG  AuthnLevel,
ULONG  AuthnSvc,
RPC_AUTH_IDENTITY_HANDLE  AuthIdentity,
ULONG  AuthzSvr 
)

Definition at line 1945 of file rpc_binding.c.

1947{
1948 TRACE("%p %s %u %u %p %u\n", Binding, debugstr_w(ServerPrincName),
1949 AuthnLevel, AuthnSvc, AuthIdentity, AuthzSvr);
1950 return RpcBindingSetAuthInfoExW(Binding, ServerPrincName, AuthnLevel, AuthnSvc, AuthIdentity, AuthzSvr, NULL);
1951}
RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingSetAuthInfoExW(RPC_BINDING_HANDLE Binding, RPC_WSTR ServerPrincName, ULONG AuthnLevel, ULONG AuthnSvc, RPC_AUTH_IDENTITY_HANDLE AuthIdentity, ULONG AuthzSvr, RPC_SECURITY_QOS *SecurityQos)
Definition: rpc_binding.c:1802

◆ RpcBindingSetObject()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingSetObject ( RPC_BINDING_HANDLE  Binding,
UUID ObjectUuid 
)

Definition at line 828 of file rpc_binding.c.

829{
831
832 TRACE("(%p,%s)\n", Binding, debugstr_guid(ObjectUuid));
833 if (bind->server) return RPC_S_WRONG_KIND_OF_BINDING;
834 return RPCRT4_SetBindingObject(Binding, ObjectUuid);
835}
#define RPC_S_WRONG_KIND_OF_BINDING
Definition: winerror.h:1012

Referenced by RPC_CreateClientChannel().

◆ RpcBindingSetOption()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingSetOption ( RPC_BINDING_HANDLE  Binding,
ULONG  Option,
ULONG_PTR  OptionValue 
)

Definition at line 1956 of file rpc_binding.c.

1957{
1958 TRACE("(%p, %d, %ld)\n", BindingHandle, Option, OptionValue);
1959
1960 switch (Option)
1961 {
1963 {
1965 RpcBinding *binding = BindingHandle;
1966 int len = MultiByteToWideChar(CP_ACP, 0, cookie->Buffer, cookie->BufferSize, NULL, 0);
1967 WCHAR *str;
1968
1969 if (!(str = HeapAlloc(GetProcessHeap(), 0, (len + 1) * sizeof(WCHAR)))) return RPC_S_OUT_OF_MEMORY;
1970 MultiByteToWideChar(CP_ACP, 0, cookie->Buffer, cookie->BufferSize, str, len);
1971 str[len] = 0;
1972 HeapFree(GetProcessHeap(), 0, binding->CookieAuth);
1973 binding->CookieAuth = str;
1974 break;
1975 }
1976 default:
1977 FIXME("option %u not supported\n", Option);
1978 break;
1979 }
1980 return RPC_S_OK;
1981}
#define GetProcessHeap()
Definition: compat.h:736
#define HeapAlloc
Definition: compat.h:733
#define HeapFree(x, y, z)
Definition: compat.h:735
#define MultiByteToWideChar
Definition: compat.h:110
GLenum GLsizei len
Definition: glext.h:6722
const WCHAR * str
#define RPC_C_OPT_COOKIE_AUTH
Definition: rpcdcep.h:127
Definition: cookie.c:34
_In_ ULONG _Out_ HANDLE * BindingHandle
Definition: tdikrnl.h:1147

◆ RpcBindingToStringBindingA()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingToStringBindingA ( RPC_BINDING_HANDLE  Binding,
RPC_CSTR StringBinding 
)

Definition at line 920 of file rpc_binding.c.

921{
924 RPC_CSTR ObjectUuid;
925
926 TRACE("(%p,%p)\n", Binding, StringBinding);
927
928 if (UuidIsNil(&bind->ObjectUuid, &ret))
929 ObjectUuid = NULL;
930 else
931 {
932 ret = UuidToStringA(&bind->ObjectUuid, &ObjectUuid);
933 if (ret != RPC_S_OK) return ret;
934 }
935
936 ret = RpcStringBindingComposeA(ObjectUuid, (unsigned char*)bind->Protseq, (unsigned char*) bind->NetworkAddr,
937 (unsigned char*) bind->Endpoint, NULL, StringBinding);
938
939 RpcStringFreeA(&ObjectUuid);
940
941 return ret;
942}
RPC_STATUS WINAPI RpcStringBindingComposeA(RPC_CSTR ObjUuid, RPC_CSTR Protseq, RPC_CSTR NetworkAddr, RPC_CSTR Endpoint, RPC_CSTR Options, RPC_CSTR *StringBinding)
Definition: rpc_binding.c:457
RPC_STATUS WINAPI UuidToStringA(UUID *Uuid, RPC_CSTR *StringUuid)
Definition: rpcrt4_main.c:514
int WINAPI UuidIsNil(UUID *Uuid, RPC_STATUS *Status)
Definition: rpcrt4_main.c:268

Referenced by RpcBindingToStringBindingW(), s_context_handle_test(), test_RpcServerUseProtseq(), and test_RpcStringBindingFromBinding().

◆ RpcBindingToStringBindingW()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingToStringBindingW ( RPC_BINDING_HANDLE  Binding,
RPC_WSTR StringBinding 
)

Definition at line 947 of file rpc_binding.c.

948{
950 unsigned char *str = NULL;
951 TRACE("(%p,%p)\n", Binding, StringBinding);
953 *StringBinding = RPCRT4_strdupAtoW((char*)str);
955 return ret;
956}
RPC_STATUS WINAPI RpcBindingToStringBindingA(RPC_BINDING_HANDLE Binding, RPC_CSTR *StringBinding)
Definition: rpc_binding.c:920

Referenced by CreateJob().

◆ RpcBindingVectorFree()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcBindingVectorFree ( RPC_BINDING_VECTOR **  BindingVector)

Definition at line 802 of file rpc_binding.c.

803{
804 ULONG c;
805
806 TRACE("(%p)\n", BindingVector);
807 for (c=0; c<(*BindingVector)->Count; c++) RpcBindingFree(&(*BindingVector)->BindingH[c]);
808 HeapFree(GetProcessHeap(), 0, *BindingVector);
809 *BindingVector = NULL;
810 return RPC_S_OK;
811}
const GLubyte * c
Definition: glext.h:8905
#define c
Definition: ke_i.h:80
RPC_STATUS WINAPI RpcBindingFree(RPC_BINDING_HANDLE *Binding)
Definition: rpc_binding.c:787

Referenced by test_endpoint_mapper(), and test_RpcServerUseProtseq().

◆ RpcCancelThread()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcCancelThread ( void ThreadHandle)

Definition at line 1054 of file rpcrt4_main.c.

1055{
1056 TRACE("(%p)\n", ThreadHandle);
1057 return RpcCancelThreadEx(ThreadHandle, 0);
1058}
RPC_STATUS RPC_ENTRY RpcCancelThreadEx(void *ThreadHandle, LONG Timeout)
Definition: rpcrt4_main.c:1063

◆ RpcCancelThreadEx()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcCancelThreadEx ( void ThreadHandle,
LONG  Timeout 
)

Definition at line 1063 of file rpcrt4_main.c.

1064{
1065 DWORD target_tid;
1066
1067 FIXME("(%p, %d)\n", ThreadHandle, Timeout);
1068
1069 target_tid = GetThreadId(ThreadHandle);
1070 if (!target_tid)
1071 return RPC_S_INVALID_ARG;
1072
1073 if (Timeout)
1074 {
1075 FIXME("(%p, %d)\n", ThreadHandle, Timeout);
1076 return RPC_S_OK;
1077 }
1078 else
1079 return rpc_cancel_thread(target_tid);
1080}
DWORD WINAPI GetThreadId(IN HANDLE Thread)
Definition: thread.c:913
static ULONG Timeout
Definition: ping.c:61
static RPC_STATUS rpc_cancel_thread(DWORD target_tid)
Definition: rpcrt4_main.c:1033

Referenced by RpcCancelThread().

◆ RpcEpRegisterA()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcEpRegisterA ( RPC_IF_HANDLE  IfSpec,
RPC_BINDING_VECTOR BindingVector,
UUID_VECTOR UuidVector,
RPC_CSTR  Annotation 
)

Definition at line 296 of file rpc_epmap.c.

298{
299 return epm_register(IfSpec, BindingVector, UuidVector, Annotation, TRUE);
300}
static RPC_STATUS epm_register(RPC_IF_HANDLE IfSpec, RPC_BINDING_VECTOR *BindingVector, UUID_VECTOR *UuidVector, RPC_CSTR Annotation, BOOL replace)
Definition: rpc_epmap.c:196

Referenced by test_endpoint_mapper().

◆ RpcEpRegisterNoReplaceA()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcEpRegisterNoReplaceA ( RPC_IF_HANDLE  IfSpec,
RPC_BINDING_VECTOR BindingVector,
UUID_VECTOR UuidVector,
RPC_CSTR  Annotation 
)

Definition at line 305 of file rpc_epmap.c.

307{
308 return epm_register(IfSpec, BindingVector, UuidVector, Annotation, FALSE);
309}

◆ RpcEpRegisterNoReplaceW()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcEpRegisterNoReplaceW ( RPC_IF_HANDLE  IfSpec,
RPC_BINDING_VECTOR BindingVector,
UUID_VECTOR UuidVector,
RPC_WSTR  Annotation 
)

Definition at line 329 of file rpc_epmap.c.

331{
332 LPSTR annA = RPCRT4_strdupWtoA(Annotation);
334
335 status = epm_register(IfSpec, BindingVector, UuidVector, (RPC_CSTR)annA, FALSE);
336
337 HeapFree(GetProcessHeap(), 0, annA);
338 return status;
339}

◆ RpcEpRegisterW()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcEpRegisterW ( RPC_IF_HANDLE  IfSpec,
RPC_BINDING_VECTOR BindingVector,
UUID_VECTOR UuidVector,
RPC_WSTR  Annotation 
)

Definition at line 314 of file rpc_epmap.c.

316{
317 LPSTR annA = RPCRT4_strdupWtoA(Annotation);
319
320 status = epm_register(IfSpec, BindingVector, UuidVector, (RPC_CSTR)annA, TRUE);
321
322 HeapFree(GetProcessHeap(), 0, annA);
323 return status;
324}

◆ RpcEpResolveBinding()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcEpResolveBinding ( RPC_BINDING_HANDLE  Binding,
RPC_IF_HANDLE  IfSpec 
)

Definition at line 431 of file rpc_epmap.c.

432{
433 PRPC_CLIENT_INTERFACE If = IfSpec;
436 error_status_t status2;
438 ept_lookup_handle_t entry_handle = NULL;
439 twr_t *tower;
440 twr_t *towers[4] = { NULL };
441 unsigned32 num_towers, i;
443 char *resolved_endpoint = NULL;
444
445 TRACE("(%p,%p)\n", Binding, IfSpec);
446 TRACE(" protseq=%s\n", debugstr_a(bind->Protseq));
447 TRACE(" obj=%s\n", debugstr_guid(&bind->ObjectUuid));
448 TRACE(" networkaddr=%s\n", debugstr_a(bind->NetworkAddr));
449 TRACE(" ifid=%s\n", debugstr_guid(&If->InterfaceId.SyntaxGUID));
450
451 /* just return for fully bound handles */
452 if (bind->Endpoint && (bind->Endpoint[0] != '\0'))
453 return RPC_S_OK;
454
456 if (status != RPC_S_OK) return status;
457
458 status = TowerConstruct(&If->InterfaceId, &If->TransferSyntax, bind->Protseq,
459 ((RpcBinding *)handle)->Endpoint,
460 bind->NetworkAddr, &tower);
461 if (status != RPC_S_OK)
462 {
463 WARN("couldn't get tower\n");
465 return status;
466 }
467
468 while (TRUE)
469 {
470 __TRY
471 {
472 ept_map(handle, &uuid, tower, &entry_handle, ARRAY_SIZE(towers), &num_towers, towers, &status2);
473 /* FIXME: translate status2? */
474 }
476 {
477 status2 = GetExceptionCode();
478 }
480 if (status2 == RPC_S_SERVER_UNAVAILABLE &&
482 {
483 if (start_rpcss())
484 continue;
485 }
486 break;
487 };
488
490 I_RpcFree(tower);
491
492 if (status2 != RPC_S_OK)
493 {
494 ERR("ept_map failed for ifid %s, protseq %s, networkaddr %s\n", debugstr_guid(&If->TransferSyntax.SyntaxGUID), bind->Protseq, bind->NetworkAddr);
495 return status2;
496 }
497
498 for (i = 0; i < num_towers; i++)
499 {
500 /* only parse the tower if we haven't already found a suitable
501 * endpoint, otherwise just free the tower */
502 if (!resolved_endpoint)
503 {
504 status = TowerExplode(towers[i], NULL, NULL, NULL, &resolved_endpoint, NULL);
505 TRACE("status = %d\n", status);
506 }
507 I_RpcFree(towers[i]);
508 }
509
510 if (resolved_endpoint)
511 {
512 RPCRT4_ResolveBinding(Binding, resolved_endpoint);
513 I_RpcFree(resolved_endpoint);
514 return RPC_S_OK;
515 }
516
517 WARN("couldn't find an endpoint\n");
519}
#define ARRAY_SIZE(A)
Definition: main.h:33
unsigned long error_status_t
Definition: basetyps.h:83
#define WARN(fmt,...)
Definition: debug.h:112
#define __TRY
Definition: compat.h:80
#define __ENDTRY
Definition: compat.h:82
void __cdecl ept_map(handle_t h, uuid_p_t object, twr_p_t map_tower, ept_lookup_handle_t *entry_handle, unsigned32 max_towers, unsigned32 *num_towers, twr_p_t *towers, error_status_t *status)
Definition: epmp.c:201
Definition: msctf.idl:550
#define GUID_NULL
Definition: ks.h:106
unsigned int unsigned32
Definition: rpc.c:43
#define __EXCEPT(func)
Definition: exception.h:84
RPC_STATUS RPCRT4_ResolveBinding(RpcBinding *Binding, LPCSTR Endpoint)
Definition: rpc_binding.c:204
RPC_STATUS WINAPI TowerExplode(const twr_t *tower, PRPC_SYNTAX_IDENTIFIER object, PRPC_SYNTAX_IDENTIFIER syntax, char **protseq, char **endpoint, char **address)
Definition: rpc_epmap.c:524
static RPC_STATUS get_epm_handle_client(RPC_BINDING_HANDLE handle, RPC_BINDING_HANDLE *epm_handle)
Definition: rpc_epmap.c:140
RPC_STATUS WINAPI TowerConstruct(const RPC_SYNTAX_IDENTIFIER *object, const RPC_SYNTAX_IDENTIFIER *syntax, const char *protseq, const char *endpoint, const char *address, twr_t **tower)
Definition: rpc_epmap.c:596
static BOOL is_epm_destination_local(RPC_BINDING_HANDLE handle)
Definition: rpc_epmap.c:129
static LONG WINAPI rpc_filter(EXCEPTION_POINTERS *__eptr)
Definition: rpc_epmap.c:184
static BOOL start_rpcss(void)
Definition: rpc_epmap.c:79
void WINAPI I_RpcFree(void *Object)
Definition: rpcrt4_main.c:724
#define GetExceptionCode()
Definition: seh.h:27
RPC_SYNTAX_IDENTIFIER InterfaceId
Definition: rpcdcep.h:117
RPC_SYNTAX_IDENTIFIER TransferSyntax
Definition: rpcdcep.h:118
Definition: rpc.c:45
#define EPT_S_NOT_REGISTERED
Definition: winerror.h:1061
#define RPC_S_SERVER_UNAVAILABLE
Definition: winerror.h:1033

Referenced by I_RpcNegotiateTransferSyntax(), and test_endpoint_mapper().

◆ RpcEpUnregister()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcEpUnregister ( RPC_IF_HANDLE  IfSpec,
RPC_BINDING_VECTOR BindingVector,
UUID_VECTOR UuidVector 
)

Definition at line 344 of file rpc_epmap.c.

346{
347 PRPC_SERVER_INTERFACE If = IfSpec;
348 ULONG i;
350 error_status_t status2;
351 ept_entry_t *entries;
353
354 TRACE("(%p,%p,%p)\n", IfSpec, BindingVector, UuidVector);
355 TRACE(" ifid=%s\n", debugstr_guid(&If->InterfaceId.SyntaxGUID));
356 for (i=0; i<BindingVector->Count; i++) {
357 RpcBinding* bind = BindingVector->BindingH[i];
358 TRACE(" protseq[%d]=%s\n", i, debugstr_a(bind->Protseq));
359 TRACE(" endpoint[%d]=%s\n", i, debugstr_a(bind->Endpoint));
360 }
361 if (UuidVector) {
362 for (i=0; i<UuidVector->Count; i++)
363 TRACE(" obj[%d]=%s\n", i, debugstr_guid(UuidVector->Uuid[i]));
364 }
365
366 entries = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*entries) * BindingVector->Count * (UuidVector ? UuidVector->Count : 1));
367 if (!entries)
368 return RPC_S_OUT_OF_MEMORY;
369
371 if (status != RPC_S_OK)
372 {
373 HeapFree(GetProcessHeap(), 0, entries);
374 return status;
375 }
376
377 for (i = 0; i < BindingVector->Count; i++)
378 {
379 unsigned j;
380 RpcBinding* bind = BindingVector->BindingH[i];
381 for (j = 0; j < (UuidVector ? UuidVector->Count : 1); j++)
382 {
384 bind->Protseq, bind->Endpoint,
385 bind->NetworkAddr,
386 &entries[i*(UuidVector ? UuidVector->Count : 1) + j].tower);
387 if (status != RPC_S_OK) break;
388
389 if (UuidVector)
390 memcpy(&entries[i * UuidVector->Count + j].object, &UuidVector->Uuid[j], sizeof(GUID));
391 else
392 memset(&entries[i].object, 0, sizeof(entries[i].object));
393 }
394 }
395
396 if (status == RPC_S_OK)
397 {
398 __TRY
399 {
400 ept_insert(handle, BindingVector->Count * (UuidVector ? UuidVector->Count : 1),
401 entries, TRUE, &status2);
402 }
404 {
405 status2 = GetExceptionCode();
406 }
408 if (status2 == RPC_S_SERVER_UNAVAILABLE)
409 status2 = EPT_S_NOT_REGISTERED;
410 if (status2 != RPC_S_OK)
411 ERR("ept_insert failed with error %d\n", status2);
412 status = status2; /* FIXME: convert status? */
413 }
415
416 for (i = 0; i < BindingVector->Count; i++)
417 {
418 unsigned j;
419 for (j = 0; j < (UuidVector ? UuidVector->Count : 1); j++)
420 I_RpcFree(entries[i*(UuidVector ? UuidVector->Count : 1) + j].tower);
421 }
422
423 HeapFree(GetProcessHeap(), 0, entries);
424
425 return status;
426}
#define HEAP_ZERO_MEMORY
Definition: compat.h:134
void __cdecl ept_insert(handle_t h, unsigned32 num_ents, ept_entry_t entries[], boolean32 replace, error_status_t *status)
Definition: epmp.c:92
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
static RPC_STATUS get_epm_handle_server(RPC_BINDING_HANDLE *epm_handle)
Definition: rpc_epmap.c:177
#define memset(x, y, z)
Definition: compat.h:39
RPC_BINDING_HANDLE BindingH[1]
Definition: rpcdce.h:58
RPC_SYNTAX_IDENTIFIER InterfaceId
Definition: rpcdcep.h:104
RPC_SYNTAX_IDENTIFIER TransferSyntax
Definition: rpcdcep.h:105
UUID * Uuid[1]
Definition: rpcdce.h:65
ULONG Count
Definition: rpcdce.h:64

Referenced by test_endpoint_mapper().

◆ RpcImpersonateClient()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcImpersonateClient ( RPC_BINDING_HANDLE  Binding)

Definition at line 1056 of file rpc_binding.c.

1057{
1059
1060 TRACE("(%p)\n", BindingHandle);
1061
1064
1066 if (bind->FromConn)
1067 return rpcrt4_conn_impersonate_client(bind->FromConn);
1069}
static RPC_STATUS rpcrt4_conn_impersonate_client(RpcConnection *conn)
Definition: rpc_binding.h:241

Referenced by _RpcAbortPrinter(), _RpcAddForm(), _RpcAddJob(), _RpcAddMonitor(), _RpcAddPort(), _RpcAddPortEx(), _RpcAddPrinterDriver(), _RpcAddPrinterDriverEx(), _RpcAddPrintProcessor(), _RpcAddPrintProvidor(), _RpcClosePrinter(), _RpcCloseSpoolFileHandle(), _RpcCommitSpoolData(), _RpcCommitSpoolData2(), _RpcConfigurePort(), _RpcDeleteForm(), _RpcDeleteMonitor(), _RpcDeletePort(), _RpcDeletePrinter(), _RpcDeletePrinterDriver(), _RpcDeletePrinterDriverEx(), _RpcDeletePrintProcessor(), _RpcDeletePrintProvidor(), _RpcEndDocPrinter(), _RpcEndPagePrinter(), _RpcEnumForms(), _RpcEnumJobs(), _RpcEnumMonitors(), _RpcEnumPorts(), _RpcEnumPrinterDrivers(), _RpcEnumPrinters(), _RpcEnumPrintProcessorDatatypes(), _RpcEnumPrintProcessors(), _RpcGetForm(), _RpcGetJob(), _RpcGetPrinter(), _RpcGetPrinterDataEx(), _RpcGetPrinterDriver(), _RpcGetPrinterDriver2(), _RpcGetPrinterDriverDirectory(), _RpcGetPrintProcessorDirectory(), _RpcGetSpoolFileInfo(), _RpcGetSpoolFileInfo2(), _RpcOpenPrinter(), _RpcPrinterMessageBox(), _RpcReadPrinter(), _RpcResetPrinterEx(), _RpcScheduleJob(), _RpcSeekPrinter(), _RpcSetForm(), _RpcSetJob(), _RpcSetPort(), _RpcSetPrinterDataEx(), _RpcSpoolerInit(), _RpcStartDocPrinter(), _RpcStartPagePrinter(), _RpcWritePrinter(), _RpcXcvData(), IsCallerInteractive(), LsarSetSecurityObject(), RSetServiceObjectSecurity(), s_authinfo_test(), and YGetPrinterDriver2().

◆ RpcMgmtEnableIdleCleanup()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcMgmtEnableIdleCleanup ( void  )

Definition at line 1611 of file rpc_server.c.

1612{
1613 FIXME("(): stub\n");
1614 return RPC_S_OK;
1615}

◆ RpcMgmtEpEltInqBegin()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcMgmtEpEltInqBegin ( RPC_BINDING_HANDLE  EpBinding,
ULONG  InquiryType,
RPC_IF_ID IfId,
ULONG  VersOption,
UUID ObjectUuid,
RPC_EP_INQ_HANDLE InquiryContext 
)

Definition at line 1693 of file rpc_server.c.

1695{
1696 FIXME("(%p,%u,%p,%u,%p,%p): stub\n",
1697 Binding, InquiryType, IfId, VersOption, ObjectUuid, InquiryContext);
1698 return RPC_S_INVALID_BINDING;
1699}

◆ RpcMgmtInqIfIds()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcMgmtInqIfIds ( RPC_BINDING_HANDLE  Binding,
RPC_IF_ID_VECTOR **  IfIdVector 
)

Definition at line 1650 of file rpc_server.c.

1651{
1652 FIXME("(%p,%p): stub\n", Binding, IfIdVector);
1653 return RPC_S_INVALID_BINDING;
1654}

◆ RpcMgmtInqStats()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcMgmtInqStats ( RPC_BINDING_HANDLE  Binding,
RPC_STATS_VECTOR **  Statistics 
)

Definition at line 1659 of file rpc_server.c.

1660{
1661 RPC_STATS_VECTOR *stats;
1662
1663 FIXME("(%p,%p)\n", Binding, Statistics);
1664
1665 if ((stats = HeapAlloc(GetProcessHeap(), 0, sizeof(RPC_STATS_VECTOR))))
1666 {
1667 stats->Count = 1;
1668 stats->Stats[0] = 0;
1669 *Statistics = stats;
1670 return RPC_S_OK;
1671 }
1673}
unsigned int Count
Definition: rpcdce.h:84
ULONG Stats[1]
Definition: rpcdce.h:85
#define RPC_S_OUT_OF_RESOURCES
Definition: winerror.h:1032

◆ RpcMgmtIsServerListening()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcMgmtIsServerListening ( RPC_BINDING_HANDLE  Binding)

Definition at line 1704 of file rpc_server.c.

1705{
1707
1708 TRACE("(%p)\n", Binding);
1709
1710 if (Binding) {
1711 RpcBinding *rpc_binding = (RpcBinding*)Binding;
1712 status = RPCRT4_IsServerListening(rpc_binding->Protseq, rpc_binding->Endpoint);
1713 }else {
1717 }
1718
1719 return status;
1720}
RPC_STATUS RPCRT4_IsServerListening(const char *protseq, const char *endpoint) DECLSPEC_HIDDEN
static BOOL std_listen
Definition: rpc_server.c:100
static HANDLE listen_done_event
Definition: rpc_server.c:104
static CRITICAL_SECTION listen_cs
Definition: rpc_server.c:81
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
#define RPC_S_NOT_LISTENING
Definition: winerror.h:1026

Referenced by _test_is_server_listening(), and _test_is_server_listening2().

◆ RpcMgmtSetAuthorizationFn()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcMgmtSetAuthorizationFn ( RPC_MGMT_AUTHORIZATION_FN  fn)

Definition at line 1725 of file rpc_server.c.

1726{
1727 FIXME("(%p): stub\n", fn);
1728 return RPC_S_OK;
1729}
static GLenum _GLUfuncptr fn
Definition: wgl_font.c:159

◆ RpcMgmtSetCancelTimeout()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcMgmtSetCancelTimeout ( LONG  Timeout)

Definition at line 926 of file rpcrt4_main.c.

927{
928 FIXME("(%d): stub\n", Timeout);
929 return RPC_S_OK;
930}

◆ RpcMgmtSetComTimeout()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcMgmtSetComTimeout ( RPC_BINDING_HANDLE  Binding,
unsigned int  Timeout 
)

Definition at line 1472 of file rpc_binding.c.

1473{
1474 FIXME("(%p, %d): stub\n", BindingHandle, Timeout);
1475 return RPC_S_OK;
1476}

◆ RpcMgmtSetServerStackSize()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcMgmtSetServerStackSize ( ULONG  ThreadStackSize)

Definition at line 1734 of file rpc_server.c.

1735{
1736 FIXME("(0x%x): stub\n", ThreadStackSize);
1737 return RPC_S_OK;
1738}

Referenced by CallPerInstanceInitFunctions().

◆ RpcMgmtStatsVectorFree()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcMgmtStatsVectorFree ( RPC_STATS_VECTOR **  StatsVector)

Definition at line 1678 of file rpc_server.c.

1679{
1680 FIXME("(%p)\n", StatsVector);
1681
1682 if (StatsVector)
1683 {
1684 HeapFree(GetProcessHeap(), 0, *StatsVector);
1685 *StatsVector = NULL;
1686 }
1687 return RPC_S_OK;
1688}

◆ RpcMgmtStopServerListening()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcMgmtStopServerListening ( RPC_BINDING_HANDLE  Binding)

Definition at line 1596 of file rpc_server.c.

1597{
1598 TRACE("(Binding == (RPC_BINDING_HANDLE)^%p)\n", Binding);
1599
1600 if (Binding) {
1601 FIXME("client-side invocation not implemented.\n");
1603 }
1604
1605 return RPCRT4_stop_listen(FALSE);
1606}
static RPC_STATUS RPCRT4_stop_listen(BOOL auto_listen)
Definition: rpc_server.c:779

Referenced by _ServiceControlHandlerEx(), RpcpStopRpcServer(), RpcpStopRpcServerEx(), s_stop(), SamrShutdownSamServer(), service_handler(), ServiceControlHandler(), test_rpc_ncacn_ip_tcp(), test_server_listening(), and test_stop_wait_for_call().

◆ RpcMgmtWaitServerListen()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcMgmtWaitServerListen ( void  )

Definition at line 1539 of file rpc_server.c.

1540{
1541 RpcServerProtseq *protseq;
1542 HANDLE event, wait_thread;
1543
1544 TRACE("()\n");
1545
1547 event = listen_done_event;
1549
1550 if (!event)
1551 return RPC_S_NOT_LISTENING;
1552
1553 TRACE( "waiting for server calls to finish\n" );
1555 TRACE( "done waiting\n" );
1556
1558 /* wait for server threads to finish */
1559 while(1)
1560 {
1561 if (listen_count)
1562 break;
1563
1564 wait_thread = NULL;
1567 {
1568 if ((wait_thread = protseq->server_thread))
1569 {
1570 protseq->server_thread = NULL;
1571 break;
1572 }
1573 }
1575 if (!wait_thread)
1576 break;
1577
1578 TRACE("waiting for thread %u\n", GetThreadId(wait_thread));
1580 WaitForSingleObject(wait_thread, INFINITE);
1581 CloseHandle(wait_thread);
1583 }
1584 if (listen_done_event == event)
1585 {
1587 CloseHandle( event );
1588 }
1590 return RPC_S_OK;
1591}
#define CloseHandle
Definition: compat.h:739
#define INFINITE
Definition: serial.h:102
struct _cl_event * event
Definition: glext.h:7739
uint32_t entry
Definition: isohybrid.c:63
static LONG listen_count
Definition: rpc_server.c:102
static CRITICAL_SECTION server_cs
Definition: rpc_server.c:72
static struct list protseqs
Definition: rpc_server.c:68
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
Definition: list.h:198
HANDLE server_thread
Definition: rpc_server.h:41
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
Definition: synch.c:82

Referenced by RpcpStopRpcServer(), RpcpStopRpcServerEx(), RpcServerListen(), run_server(), server(), test_rpc_ncacn_ip_tcp(), test_server_listening(), and wait_listen_proc().

◆ RpcNetworkInqProtseqsA()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcNetworkInqProtseqsA ( RPC_PROTSEQ_VECTORA **  protseqs)

Definition at line 3971 of file rpc_transport.c.

3972{
3973 RPC_PROTSEQ_VECTORA *pvector;
3974 unsigned int i;
3976
3977 TRACE("(%p)\n", protseqs);
3978
3979 *protseqs = HeapAlloc(GetProcessHeap(), 0, sizeof(RPC_PROTSEQ_VECTORW)+(sizeof(unsigned char*)*ARRAY_SIZE(protseq_list)));
3980 if (!*protseqs)
3981 goto end;
3982 pvector = *protseqs;
3983 pvector->Count = 0;
3984 for (i = 0; i < ARRAY_SIZE(protseq_list); i++)
3985 {
3986 pvector->Protseq[i] = HeapAlloc(GetProcessHeap(), 0, strlen(protseq_list[i].name)+1);
3987 if (pvector->Protseq[i] == NULL)
3988 goto end;
3989 strcpy((char*)pvector->Protseq[i], protseq_list[i].name);
3990 pvector->Count++;
3991 }
3992 status = RPC_S_OK;
3993
3994end:
3995 if (status != RPC_S_OK)
3997 return status;
3998}
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
char * strcpy(char *DstString, const char *SrcString)
Definition: utclib.c:388
GLuint GLuint end
Definition: gl.h:1545
RPC_STATUS WINAPI RpcProtseqVectorFreeA(RPC_PROTSEQ_VECTORA **protseqs)
static const struct protseq_ops protseq_list[]
unsigned char * Protseq[1]
Definition: rpcdce.h:91
unsigned int Count
Definition: rpcdce.h:90
Definition: name.c:39

◆ RpcNetworkInqProtseqsW()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcNetworkInqProtseqsW ( RPC_PROTSEQ_VECTORW **  protseqs)

Definition at line 3938 of file rpc_transport.c.

3939{
3940 RPC_PROTSEQ_VECTORW *pvector;
3941 unsigned int i;
3943
3944 TRACE("(%p)\n", protseqs);
3945
3946 *protseqs = HeapAlloc(GetProcessHeap(), 0, sizeof(RPC_PROTSEQ_VECTORW)+(sizeof(unsigned short*)*ARRAY_SIZE(protseq_list)));
3947 if (!*protseqs)
3948 goto end;
3949 pvector = *protseqs;
3950 pvector->Count = 0;
3951 for (i = 0; i < ARRAY_SIZE(protseq_list); i++)
3952 {
3953 pvector->Protseq[i] = HeapAlloc(GetProcessHeap(), 0, (strlen(protseq_list[i].name)+1)*sizeof(unsigned short));
3954 if (pvector->Protseq[i] == NULL)
3955 goto end;
3957 (WCHAR*)pvector->Protseq[i], strlen(protseq_list[i].name) + 1);
3958 pvector->Count++;
3959 }
3960 status = RPC_S_OK;
3961
3962end:
3963 if (status != RPC_S_OK)
3965 return status;
3966}
RPC_STATUS WINAPI RpcProtseqVectorFreeW(RPC_PROTSEQ_VECTORW **protseqs)
unsigned int Count
Definition: rpcdce.h:96
unsigned short * Protseq[1]
Definition: rpcdce.h:97
char CHAR
Definition: xmlstorage.h:175

◆ RpcNetworkIsProtseqValidA()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcNetworkIsProtseqValidA ( RPC_CSTR  protseq)

Definition at line 3886 of file rpc_transport.c.

3887{
3888 UNICODE_STRING protseqW;
3889
3890 if (RtlCreateUnicodeStringFromAsciiz(&protseqW, (char*)protseq))
3891 {
3893 RtlFreeUnicodeString(&protseqW);
3894 return ret;
3895 }
3896 return RPC_S_OUT_OF_MEMORY;
3897}
NTSYSAPI BOOLEAN NTAPI RtlCreateUnicodeStringFromAsciiz(_Out_ PUNICODE_STRING Destination, _In_ PCSZ Source)
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
RPC_STATUS WINAPI RpcNetworkIsProtseqValidW(RPC_WSTR protseq)

Referenced by test_rpc_ncacn_ip_tcp().

◆ RpcNetworkIsProtseqValidW()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcNetworkIsProtseqValidW ( RPC_WSTR  protseq)

Definition at line 3869 of file rpc_transport.c.

3870{
3871 char ps[0x10];
3872
3873 WideCharToMultiByte(CP_ACP, 0, protseq, -1,
3874 ps, sizeof ps, NULL, NULL);
3876 return RPC_S_OK;
3877
3878 FIXME("Unknown protseq %s\n", debugstr_w(protseq));
3879
3881}
static const struct connection_ops * rpcrt4_get_conn_protseq_ops(const char *protseq)
#define RPC_S_INVALID_RPC_PROTSEQ
Definition: winerror.h:1015

Referenced by RpcNetworkIsProtseqValidA().

◆ RpcObjectSetType()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcObjectSetType ( UUID ObjUuid,
UUID TypeUuid 
)

Definition at line 1281 of file rpc_server.c.

1282{
1285
1286 TRACE("(ObjUUID == %s, TypeUuid == %s).\n", debugstr_guid(ObjUuid), debugstr_guid(TypeUuid));
1287 if ((! ObjUuid) || UuidIsNil(ObjUuid, &dummy)) {
1288 /* nil uuid cannot be remapped */
1289 return RPC_S_INVALID_OBJECT;
1290 }
1291
1292 /* find the mapping for this object if there is one ... */
1293 while (map) {
1294 if (! UuidCompare(ObjUuid, &map->Object, &dummy)) break;
1295 prev = map;
1296 map = map->next;
1297 }
1298 if ((! TypeUuid) || UuidIsNil(TypeUuid, &dummy)) {
1299 /* ... and drop it from the list */
1300 if (map) {
1301 if (prev)
1302 prev->next = map->next;
1303 else
1304 RpcObjTypeMaps = map->next;
1306 }
1307 } else {
1308 /* ... , fail if we found it ... */
1309 if (map)
1311 /* ... otherwise create a new one and add it in. */
1312 map = HeapAlloc(GetProcessHeap(), 0, sizeof(RpcObjTypeMap));
1313 map->Object = *ObjUuid;
1314 map->Type = *TypeUuid;
1315 map->next = NULL;
1316 if (prev)
1317 prev->next = map; /* prev is the last map in the linklist */
1318 else
1320 }
1321
1322 return RPC_S_OK;
1323}
Definition: _map.h:48
static RpcObjTypeMap * RpcObjTypeMaps
Definition: rpc_server.c:65
int WINAPI UuidCompare(UUID *Uuid1, UUID *Uuid2, RPC_STATUS *Status)
Definition: rpcrt4_main.c:209
struct define * next
Definition: compiler.c:65
#define RPC_S_ALREADY_REGISTERED
Definition: winerror.h:1022
#define RPC_S_INVALID_OBJECT
Definition: winerror.h:1142

◆ RpcProtseqVectorFreeA()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcProtseqVectorFreeA ( RPC_PROTSEQ_VECTORA **  protseqs)

Definition at line 3902 of file rpc_transport.c.

3903{
3904 TRACE("(%p)\n", protseqs);
3905
3906 if (*protseqs)
3907 {
3908 unsigned int i;
3909 for (i = 0; i < (*protseqs)->Count; i++)
3910 HeapFree(GetProcessHeap(), 0, (*protseqs)->Protseq[i]);
3912 *protseqs = NULL;
3913 }
3914 return RPC_S_OK;
3915}

Referenced by RpcNetworkInqProtseqsA().

◆ RpcProtseqVectorFreeW()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcProtseqVectorFreeW ( RPC_PROTSEQ_VECTORW **  protseqs)

Definition at line 3920 of file rpc_transport.c.

3921{
3922 TRACE("(%p)\n", protseqs);
3923
3924 if (*protseqs)
3925 {
3926 unsigned int i;
3927 for (i = 0; i < (*protseqs)->Count; i++)
3928 HeapFree(GetProcessHeap(), 0, (*protseqs)->Protseq[i]);
3930 *protseqs = NULL;
3931 }
3932 return RPC_S_OK;
3933}

Referenced by RpcNetworkInqProtseqsW().

◆ RpcRaiseException()

RPCRTAPI DECLSPEC_NORETURN void RPC_ENTRY RpcRaiseException ( RPC_STATUS  exception)

Definition at line 188 of file rpcrt4_main.c.

189{
190 /* shouldn't return */
192 ERR("handler continued execution\n");
193 ExitProcess(1);
194}
VOID WINAPI RaiseException(_In_ DWORD dwExceptionCode, _In_ DWORD dwExceptionFlags, _In_ DWORD nNumberOfArguments, _In_opt_ const ULONG_PTR *lpArguments)
Definition: except.c:700
VOID WINAPI ExitProcess(IN UINT uExitCode)
Definition: proc.c:1487

Referenced by array_buffer_size(), array_compute_and_size_conformance(), array_compute_and_write_conformance(), array_free(), array_memory_size(), array_read_conformance(), array_read_variance_and_unmarshall(), array_write_variance_and_marshall(), call_buffer_sizer(), call_marshaller(), call_unmarshaller(), client_do_args(), client_free_handle(), client_get_handle(), ComplexMarshall(), ComplexUnmarshall(), convert_old_args(), CtxClose(), CtxHello(), CtxOpen(), dispatch_rpc(), do_ndr_async_client_call(), do_ndr_client_call(), EmbeddedComplexSize(), es_data_alloc(), es_data_read(), get_arm_offset_from_union_arm_selector(), hello_CtxClose(), hello_CtxHello(), hello_CtxOpen(), HMETAFILEPICT_UserUnmarshal(), LPSAFEARRAY_UserMarshal(), LPSAFEARRAY_UserSize(), LPSAFEARRAY_UserUnmarshal(), m_CtxClose(), m_CtxHello(), m_CtxOpen(), mes_proc_header_unmarshal(), NdrAllocate(), NdrAsyncServerCall(), NdrBaseTypeMarshall(), NDRCContextBinding(), NDRCContextUnmarshall(), NdrClientContextMarshall(), NdrClientContextUnmarshall(), NdrComplexArrayBufferSize(), NdrComplexArrayFree(), NdrComplexArrayMarshall(), NdrComplexArrayMemorySize(), NdrComplexArrayUnmarshall(), NdrConformantArrayBufferSize(), NdrConformantArrayFree(), NdrConformantArrayMarshall(), NdrConformantArrayMemorySize(), NdrConformantArrayUnmarshall(), NdrConformantStringBufferSize(), NdrConformantStringMarshall(), NdrConformantStringMemorySize(), NdrConformantStringUnmarshall(), NdrConformantStructBufferSize(), NdrConformantStructFree(), NdrConformantStructMarshall(), NdrConformantStructUnmarshall(), NdrConformantVaryingArrayBufferSize(), NdrConformantVaryingArrayFree(), NdrConformantVaryingArrayMarshall(), NdrConformantVaryingArrayMemorySize(), NdrConformantVaryingArrayUnmarshall(), NdrConformantVaryingStructBufferSize(), NdrConformantVaryingStructFree(), NdrConformantVaryingStructMarshall(), NdrConformantVaryingStructMemorySize(), NdrConformantVaryingStructUnmarshall(), NdrContextHandleBufferSize(), NdrContextHandleMarshall(), NdrContextHandleUnmarshall(), NdrFixedArrayBufferSize(), NdrFixedArrayFree(), NdrFixedArrayMarshall(), NdrFixedArrayMemorySize(), NdrFixedArrayUnmarshall(), NdrGetBuffer(), NdrInterfacePointerMarshall(), NdrInterfacePointerUnmarshall(), NdrMesProcEncodeDecode(), NdrNonConformantStringBufferSize(), NdrNonConformantStringMarshall(), NdrNonConformantStringMemorySize(), NdrNonConformantStringUnmarshall(), NdrpCompleteAsyncServerCall(), NdrPointerUnmarshall(), NdrProxyGetBuffer(), NdrProxyInitialize(), NdrProxySendReceive(), NdrRangeBufferSize(), NdrRangeMarshall(), NdrRangeMemorySize(), NdrRangeUnmarshall(), NDRSContextMarshall2(), NDRSContextUnmarshall2(), NdrSendReceive(), NdrServerContextMarshall(), NdrServerContextNewMarshall(), NdrServerContextNewUnmarshall(), NdrServerContextUnmarshall(), NdrStubCall2(), NdrStubForwardingFunction(), NdrStubGetBuffer(), NdrVaryingArrayBufferSize(), NdrVaryingArrayFree(), NdrVaryingArrayMarshall(), NdrVaryingArrayMemorySize(), NdrVaryingArrayUnmarshall(), PointerBufferSize(), PointerMarshall(), PointerMemorySize(), PointerUnmarshall(), PSAMPR_SERVER_NAME_bind(), ReadConformance(), ReadVariance(), RpcSsDestroyClientContext(), safe_buffer_increment(), safe_buffer_length_increment(), safe_copy_from_buffer(), safe_copy_to_buffer(), safe_multiply(), SAFEARRAY_GetUnionType(), SizeConformance(), SizeVariance(), STGMEDIUM_UserUnmarshal(), stub_do_args(), type_stack_size(), union_arm_marshall(), union_arm_unmarshall(), validate_string_data(), WriteConformance(), and WriteVariance().

◆ RpcRevertToSelf()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcRevertToSelf ( void  )

Definition at line 1463 of file rpc_binding.c.

1464{
1465 TRACE("\n");
1466 return RpcRevertToSelfEx(NULL);
1467}
RPC_STATUS WINAPI RpcRevertToSelfEx(RPC_BINDING_HANDLE BindingHandle)
Definition: rpc_binding.c:1089

Referenced by _RpcAbortPrinter(), _RpcAddForm(), _RpcAddJob(), _RpcAddMonitor(), _RpcAddPort(), _RpcAddPortEx(), _RpcAddPrinterDriver(), _RpcAddPrinterDriverEx(), _RpcAddPrintProcessor(), _RpcAddPrintProvidor(), _RpcClosePrinter(), _RpcCloseSpoolFileHandle(), _RpcCommitSpoolData(), _RpcCommitSpoolData2(), _RpcConfigurePort(), _RpcDeleteForm(), _RpcDeleteMonitor(), _RpcDeletePort(), _RpcDeletePrinter(), _RpcDeletePrinterDriver(), _RpcDeletePrinterDriverEx(), _RpcDeletePrintProcessor(), _RpcDeletePrintProvidor(), _RpcEndDocPrinter(), _RpcEndPagePrinter(), _RpcEnumForms(), _RpcEnumJobs(), _RpcEnumMonitors(), _RpcEnumPorts(), _RpcEnumPrinterDrivers(), _RpcEnumPrinters(), _RpcEnumPrintProcessorDatatypes(), _RpcEnumPrintProcessors(), _RpcGetForm(), _RpcGetJob(), _RpcGetPrinter(), _RpcGetPrinterDataEx(), _RpcGetPrinterDriver(), _RpcGetPrinterDriver2(), _RpcGetPrinterDriverDirectory(), _RpcGetPrintProcessorDirectory(), _RpcGetSpoolFileInfo(), _RpcGetSpoolFileInfo2(), _RpcOpenPrinter(), _RpcPrinterMessageBox(), _RpcReadPrinter(), _RpcResetPrinterEx(), _RpcScheduleJob(), _RpcSeekPrinter(), _RpcSetForm(), _RpcSetJob(), _RpcSetPort(), _RpcSetPrinterDataEx(), _RpcSpoolerInit(), _RpcStartDocPrinter(), _RpcStartPagePrinter(), _RpcWritePrinter(), _RpcXcvData(), IsCallerInteractive(), LsarSetSecurityObject(), RSetServiceObjectSecurity(), s_authinfo_test(), and YGetPrinterDriver2().

◆ RpcRevertToSelfEx()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcRevertToSelfEx ( RPC_BINDING_HANDLE  Binding)

Definition at line 1089 of file rpc_binding.c.

1090{
1092
1093 TRACE("(%p)\n", BindingHandle);
1094
1097
1099 if (bind->FromConn)
1100 return rpcrt4_conn_revert_to_self(bind->FromConn);
1102}
static RPC_STATUS rpcrt4_conn_revert_to_self(RpcConnection *conn)
Definition: rpc_binding.h:247

Referenced by RpcRevertToSelf().

◆ RpcServerInqBindings()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcServerInqBindings ( RPC_BINDING_VECTOR **  BindingVector)

Definition at line 861 of file rpc_server.c.

862{
864 DWORD count;
866 RpcConnection* conn;
867
868 if (BindingVector)
869 TRACE("(*BindingVector == ^%p)\n", *BindingVector);
870 else
871 ERR("(BindingVector == NULL!!?)\n");
872
874 /* count connections */
875 count = 0;
878 LIST_FOR_EACH_ENTRY(conn, &ps->listeners, RpcConnection, protseq_entry)
879 count++;
881 }
882 if (count) {
883 /* export bindings */
884 *BindingVector = HeapAlloc(GetProcessHeap(), 0,
885 sizeof(RPC_BINDING_VECTOR) +
886 sizeof(RPC_BINDING_HANDLE)*(count-1));
887 (*BindingVector)->Count = count;
888 count = 0;
891 LIST_FOR_EACH_ENTRY(conn, &ps->listeners, RpcConnection, protseq_entry) {
892 RPCRT4_MakeBinding((RpcBinding**)&(*BindingVector)->BindingH[count],
893 conn);
894 count++;
895 }
897 }
899 } else {
900 *BindingVector = NULL;
902 }
904 return status;
905}
RPC_STATUS RPCRT4_MakeBinding(RpcBinding **Binding, RpcConnection *Connection)
Definition: rpc_binding.c:232
struct list listeners
Definition: rpc_server.h:36
CRITICAL_SECTION cs
Definition: rpc_server.h:38
#define RPC_S_NO_BINDINGS
Definition: winerror.h:1029

Referenced by test_endpoint_mapper(), and test_RpcServerUseProtseq().

◆ RpcServerInqDefaultPrincNameA()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcServerInqDefaultPrincNameA ( ULONG  AuthnSvc,
RPC_CSTR PrincName 
)

Definition at line 1481 of file rpc_server.c.

1482{
1484 RPC_WSTR principalW;
1485
1486 TRACE("%u, %p\n", AuthnSvc, PrincName);
1487
1488 if ((ret = RpcServerInqDefaultPrincNameW( AuthnSvc, &principalW )) == RPC_S_OK)
1489 {
1490 if (!(*PrincName = (RPC_CSTR)RPCRT4_strdupWtoA( principalW ))) return RPC_S_OUT_OF_MEMORY;
1491 RpcStringFreeW( &principalW );
1492 }
1493 return ret;
1494}
RPC_STATUS RPC_ENTRY RpcServerInqDefaultPrincNameW(ULONG AuthnSvc, RPC_WSTR *PrincName)
Definition: rpc_server.c:1499

Referenced by test_RpcServerInqDefaultPrincName().

◆ RpcServerInqDefaultPrincNameW()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcServerInqDefaultPrincNameW ( ULONG  AuthnSvc,
RPC_WSTR PrincName 
)

Definition at line 1499 of file rpc_server.c.

1500{
1501 ULONG len = 0;
1502
1503 FIXME("%u, %p\n", AuthnSvc, PrincName);
1504
1505 if (AuthnSvc != RPC_C_AUTHN_WINNT) return RPC_S_UNKNOWN_AUTHN_SERVICE;
1506
1507 GetUserNameExW( NameSamCompatible, NULL, &len );
1509
1510 if (!(*PrincName = HeapAlloc( GetProcessHeap(), 0, len * sizeof(WCHAR) )))
1511 return RPC_S_OUT_OF_MEMORY;
1512
1513 GetUserNameExW( NameSamCompatible, *PrincName, &len );
1514 return RPC_S_OK;
1515}
#define ERROR_MORE_DATA
Definition: dderror.h:13
BOOLEAN WINAPI GetUserNameExW(EXTENDED_NAME_FORMAT NameFormat, LPWSTR lpNameBuffer, PULONG nSize)
Definition: sspi.c:1079
DWORD WINAPI GetLastError(void)
Definition: except.c:1042
#define RPC_S_INTERNAL_ERROR
Definition: winerror.h:1074

Referenced by RpcServerInqDefaultPrincNameA().

◆ RpcServerListen()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcServerListen ( unsigned int  MinimumCallThreads,
unsigned int  MaxCalls,
unsigned int  DontWait 
)

◆ RpcServerRegisterAuthInfoA()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcServerRegisterAuthInfoA ( RPC_CSTR  ServerPrincName,
ULONG  AuthnSvc,
RPC_AUTH_KEY_RETRIEVAL_FN  GetKeyFn,
void Arg 
)

◆ RpcServerRegisterAuthInfoW()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcServerRegisterAuthInfoW ( RPC_WSTR  ServerPrincName,
ULONG  AuthnSvc,
RPC_AUTH_KEY_RETRIEVAL_FN  GetKeyFn,
void Arg 
)

◆ RpcServerRegisterIf()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcServerRegisterIf ( RPC_IF_HANDLE  IfSpec,
UUID MgrTypeUuid,
RPC_MGR_EPV MgrEpv 
)

Definition at line 1116 of file rpc_server.c.

1117{
1118 TRACE("(%p,%s,%p)\n", IfSpec, debugstr_guid(MgrTypeUuid), MgrEpv);
1119 return RpcServerRegisterIf3( IfSpec, MgrTypeUuid, MgrEpv, 0, RPC_C_LISTEN_MAX_CALLS_DEFAULT, (UINT)-1, NULL, NULL );
1120}
unsigned int UINT
Definition: ndis.h:50
RPC_STATUS WINAPI RpcServerRegisterIf3(RPC_IF_HANDLE IfSpec, UUID *MgrTypeUuid, RPC_MGR_EPV *MgrEpv, UINT Flags, UINT MaxCalls, UINT MaxRpcSize, RPC_IF_CALLBACK_FN *IfCallbackFn, void *SecurityDescriptor)
Definition: rpc_server.c:1144
#define RPC_C_LISTEN_MAX_CALLS_DEFAULT
Definition: rpcdce.h:122

Referenced by DsSetupInit(), LrpcThreadProc(), LsarStartRpcServer(), main(), RpcpAddInterface(), RpcServerThread(), RPCSS_Initialize(), RpcThreadRoutine(), run_server(), SampStartRpcServer(), ScmStartRpcServer(), server(), StartRpcServer(), test_endpoint_mapper(), test_ndr_buffer(), test_rpc_ncacn_ip_tcp(), and test_server_listening().

◆ RpcServerRegisterIf2()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcServerRegisterIf2 ( RPC_IF_HANDLE  IfSpec,
UUID MgrTypeUuid,
RPC_MGR_EPV MgrEpv,
unsigned int  Flags,
unsigned int  MaxCalls,
unsigned int  MaxRpcSize,
RPC_IF_CALLBACK_FN IfCallbackFn 
)

◆ RpcServerRegisterIf3()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcServerRegisterIf3 ( RPC_IF_HANDLE  IfSpec,
UUID MgrTypeUuid,
RPC_MGR_EPV MgrEpv,
unsigned int  Flags,
unsigned int  MaxCalls,
unsigned int  MaxRpcSize,
RPC_IF_CALLBACK_FN IfCallbackFn,
void SecurityDescriptor 
)

◆ RpcServerRegisterIfEx()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcServerRegisterIfEx ( RPC_IF_HANDLE  IfSpec,
UUID MgrTypeUuid,
RPC_MGR_EPV MgrEpv,
unsigned int  Flags,
unsigned int  MaxCalls,
RPC_IF_CALLBACK_FN IfCallbackFn 
)

◆ RpcServerUnregisterIf()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcServerUnregisterIf ( RPC_IF_HANDLE  IfSpec,
UUID MgrTypeUuid,
unsigned int  WaitForCallsToComplete 
)

◆ RpcServerUnregisterIfEx()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcServerUnregisterIfEx ( RPC_IF_HANDLE  IfSpec,
UUID MgrTypeUuid,
int  RundownContextHandles 
)

Definition at line 1253 of file rpc_server.c.

1254{
1255 FIXME("(IfSpec == (RPC_IF_HANDLE)^%p, MgrTypeUuid == %s, RundownContextHandles == %d): stub\n",
1256 IfSpec, debugstr_guid(MgrTypeUuid), RundownContextHandles);
1257
1258 return RPC_S_OK;
1259}

Referenced by RpcpStopRpcServerEx().

◆ RpcServerUseProtseqA()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcServerUseProtseqA ( RPC_CSTR  Protseq,
unsigned int  MaxCalls,
void SecurityDescriptor 
)

Definition at line 1060 of file rpc_server.c.

1061{
1063 RpcServerProtseq* ps;
1064
1065 TRACE("(Protseq == %s, MaxCalls == %d, SecurityDescriptor == ^%p)\n", debugstr_a((char*)Protseq), MaxCalls, SecurityDescriptor);
1066
1067 status = RPCRT4_get_or_create_serverprotseq(MaxCalls, (const char *)Protseq, &ps);
1068 if (status != RPC_S_OK)
1069 return status;
1070
1071 return RPCRT4_use_protseq(ps, NULL);
1072}
static RPC_STATUS RPCRT4_get_or_create_serverprotseq(UINT MaxCalls, const char *Protseq, RpcServerProtseq **ps)
Definition: rpc_server.c:987
static RPC_STATUS RPCRT4_use_protseq(RpcServerProtseq *ps, const char *endpoint)
Definition: rpc_server.c:832
_In_ USHORT _In_ ULONG _In_ PSOCKADDR _In_ PSOCKADDR _Reserved_ ULONG _In_opt_ PVOID _In_opt_ const WSK_CLIENT_CONNECTION_DISPATCH _In_opt_ PEPROCESS _In_opt_ PETHREAD _In_opt_ PSECURITY_DESCRIPTOR SecurityDescriptor
Definition: wsk.h:191

Referenced by test_RpcServerUseProtseq().

◆ RpcServerUseProtseqEpA()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcServerUseProtseqEpA ( RPC_CSTR  Protseq,
unsigned int  MaxCalls,
RPC_CSTR  Endpoint,
void SecurityDescriptor 
)

◆ RpcServerUseProtseqEpExA()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcServerUseProtseqEpExA ( RPC_CSTR  Protseq,
unsigned int  MaxCalls,
RPC_CSTR  Endpoint,
void SecurityDescriptor,
PRPC_POLICY  Policy 
)

◆ RpcServerUseProtseqEpExW()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcServerUseProtseqEpExW ( RPC_WSTR  Protseq,
unsigned int  MaxCalls,
RPC_WSTR  Endpoint,
void SecurityDescriptor,
PRPC_POLICY  Policy 
)

◆ RpcServerUseProtseqEpW()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcServerUseProtseqEpW ( RPC_WSTR  Protseq,
unsigned int  MaxCalls,
RPC_WSTR  Endpoint,
void SecurityDescriptor 
)

◆ RpcServerUseProtseqW()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcServerUseProtseqW ( RPC_WSTR  Protseq,
unsigned int  MaxCalls,
void SecurityDescriptor 
)

Definition at line 1077 of file rpc_server.c.

1078{
1080 RpcServerProtseq* ps;
1081 LPSTR ProtseqA;
1082
1083 TRACE("Protseq == %s, MaxCalls == %d, SecurityDescriptor == ^%p)\n", debugstr_w(Protseq), MaxCalls, SecurityDescriptor);
1084
1085 ProtseqA = RPCRT4_strdupWtoA(Protseq);
1086 status = RPCRT4_get_or_create_serverprotseq(MaxCalls, ProtseqA, &ps);
1087 RPCRT4_strfree(ProtseqA);
1088 if (status != RPC_S_OK)
1089 return status;
1090
1091 return RPCRT4_use_protseq(ps, NULL);
1092}

◆ RpcStringBindingComposeA()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcStringBindingComposeA ( RPC_CSTR  ObjUuid,
RPC_CSTR  Protseq,
RPC_CSTR  NetworkAddr,
RPC_CSTR  Endpoint,
RPC_CSTR  Options,
RPC_CSTR StringBinding 
)

Definition at line 457 of file rpc_binding.c.

460{
461 DWORD len = 1;
463
464 TRACE( "(%s,%s,%s,%s,%s,%p)\n",
465 debugstr_a( (char*)ObjUuid ), debugstr_a( (char*)Protseq ),
466 debugstr_a( (char*)NetworkAddr ), debugstr_a( (char*)Endpoint ),
467 debugstr_a( (char*)Options ), StringBinding );
468
469 /* overestimate for each component for escaping of delimiters */
470 if (ObjUuid && *ObjUuid) len += strlen((char*)ObjUuid) * 2 + 1;
471 if (Protseq && *Protseq) len += strlen((char*)Protseq) * 2 + 1;
472 if (NetworkAddr && *NetworkAddr) len += strlen((char*)NetworkAddr) * 2;
473 if (Endpoint && *Endpoint) len += strlen((char*)Endpoint) * 2 + 2;
474 if (Options && *Options) len += strlen((char*)Options) * 2 + 2;
475
477 *StringBinding = data;
478
479 if (ObjUuid && *ObjUuid) {
481 *data++ = '@';
482 }
483 if (Protseq && *Protseq) {
485 *data++ = ':';
486 }
487 if (NetworkAddr && *NetworkAddr)
489
490 if ((Endpoint && *Endpoint) ||
491 (Options && *Options)) {
492 *data++ = '[';
493 if (Endpoint && *Endpoint) {
495 if (Options && *Options) *data++ = ',';
496 }
497 if (Options && *Options) {
499 }
500 *data++ = ']';
501 }
502 *data = 0;
503
504 return RPC_S_OK;
505}
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
static RPC_CSTR escape_string_binding_component(RPC_CSTR string_binding, const unsigned char *component)
Definition: rpc_binding.c:338

Referenced by client(), EVENTLOG_HANDLE_A_bind(), RpcBindingToStringBindingA(), SVCCTL_HANDLEA_bind(), test_endpoint_mapper(), test_ndr_buffer(), test_reconnect(), test_rpc_ncacn_ip_tcp(), test_RpcStringBindingFromBinding(), and test_server_listening().

◆ RpcStringBindingComposeW()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcStringBindingComposeW ( RPC_WSTR  ObjUuid,
RPC_WSTR  Protseq,
RPC_WSTR  NetworkAddr,
RPC_WSTR  Endpoint,
RPC_WSTR  Options,
RPC_WSTR StringBinding 
)

Definition at line 510 of file rpc_binding.c.

513{
514 DWORD len = 1;
516
517 TRACE("(%s,%s,%s,%s,%s,%p)\n",
518 debugstr_w( ObjUuid ), debugstr_w( Protseq ),
519 debugstr_w( NetworkAddr ), debugstr_w( Endpoint ),
520 debugstr_w( Options ), StringBinding);
521
522 /* overestimate for each component for escaping of delimiters */
523 if (ObjUuid && *ObjUuid) len += lstrlenW(ObjUuid) * 2 + 1;
524 if (Protseq && *Protseq) len += lstrlenW(Protseq) * 2 + 1;
525 if (NetworkAddr && *NetworkAddr) len += lstrlenW(NetworkAddr) * 2;
526 if (Endpoint && *Endpoint) len += lstrlenW(Endpoint) * 2 + 2;
527 if (Options && *Options) len += lstrlenW(Options) * 2 + 2;
528
529 data = HeapAlloc(GetProcessHeap(), 0, len*sizeof(WCHAR));
530 *StringBinding = data;
531
532 if (ObjUuid && *ObjUuid) {
534 *data++ = '@';
535 }
536 if (Protseq && *Protseq) {
538 *data++ = ':';
539 }
540 if (NetworkAddr && *NetworkAddr) {
542 }
543 if ((Endpoint && *Endpoint) ||
544 (Options && *Options)) {
545 *data++ = '[';
546 if (Endpoint && *Endpoint) {
548 if (Options && *Options) *data++ = ',';
549 }
550 if (Options && *Options) {
552 }
553 *data++ = ']';
554 }
555 *data = 0;
556
557 return RPC_S_OK;
558}
#define lstrlenW
Definition: compat.h:750
static RPC_WSTR escape_string_binding_componentW(RPC_WSTR string_binding, const WCHAR *component)
Definition: rpc_binding.c:359

Referenced by __wine_msi_call_dll_function(), ATSVC_HANDLE_bind(), BROWSER_IDENTIFY_HANDLE_bind(), CreateProcessWithLogonW(), DNSRSLVR_HANDLE_bind(), DsSetupBind(), EVENTLOG_HANDLE_W_bind(), get_irot_handle(), LOGONSRV_HANDLE_bind(), NetpBind(), PLSAPR_SERVER_NAME_bind(), PnpBindRpc(), PREGISTRY_SERVER_NAME_bind(), PSAMPR_SERVER_NAME_bind(), RPC_CreateClientChannel(), ScCreateStatusBinding(), SRVSVC_HANDLE_bind(), SVCCTL_HANDLEW_bind(), WINSPOOL_HANDLE_bind(), WKSSVC_IDENTIFY_HANDLE_bind(), WKSSVC_IMPERSONATE_HANDLE_bind(), and WLANSVC_HANDLE_bind().

◆ RpcStringBindingParseA()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcStringBindingParseA ( RPC_CSTR  StringBinding,
RPC_CSTR ObjUuid,
RPC_CSTR Protseq,
RPC_CSTR NetworkAddr,
RPC_CSTR Endpoint,
RPC_CSTR NetworkOptions 
)

Definition at line 564 of file rpc_binding.c.

567{
568 const unsigned char *data, *next;
569 static const char ep_opt[] = "endpoint=";
570 BOOL endpoint_already_found = FALSE;
571
572 TRACE("(%s,%p,%p,%p,%p,%p)\n", debugstr_a((char*)StringBinding),
573 ObjUuid, Protseq, NetworkAddr, Endpoint, Options);
574
575 if (ObjUuid) *ObjUuid = NULL;
576 if (Protseq) *Protseq = NULL;
577 if (NetworkAddr) *NetworkAddr = NULL;
578 if (Endpoint) *Endpoint = NULL;
579 if (Options) *Options = NULL;
580
581 data = StringBinding;
582
584 if (next) {
585 UUID uuid;
588 status = UuidFromStringA(str_uuid, &uuid);
589 if (status != RPC_S_OK) {
590 HeapFree(GetProcessHeap(), 0, str_uuid);
591 return status;
592 }
593 if (ObjUuid)
594 *ObjUuid = str_uuid;
595 else
596 HeapFree(GetProcessHeap(), 0, str_uuid);
597 data = next+1;
598 }
599
601 if (next) {
602 if (Protseq) *Protseq = unescape_string_binding_component(data, next - data);
603 data = next+1;
604 } else {
605 goto fail;
606 }
607
609 if (next) {
610 const unsigned char *close;
611 RPC_CSTR opt;
612
613 if (NetworkAddr) *NetworkAddr = unescape_string_binding_component(data, next - data);
614 data = next+1;
616 if (!close) goto fail;
617
618 /* tokenize options */
619 while (data < close) {
621 if (!next || next > close) next = close;
622 /* FIXME: this is kind of inefficient */
624 data = next+1;
625
626 /* parse option */
628 if (!next) {
629 /* not an option, must be an endpoint */
630 if (endpoint_already_found) goto fail;
631 if (Endpoint) *Endpoint = opt;
632 else HeapFree(GetProcessHeap(), 0, opt);
633 endpoint_already_found = TRUE;
634 } else {
635 if (strncmp((const char *)opt, ep_opt, strlen(ep_opt)) == 0) {
636 /* endpoint option */
637 if (endpoint_already_found) goto fail;
638 if (Endpoint) *Endpoint = unescape_string_binding_component(next+1, -1);
639 HeapFree(GetProcessHeap(), 0, opt);
640 endpoint_already_found = TRUE;
641 } else {
642 /* network option */
643 if (Options) {
644 if (*Options) {
645 /* FIXME: this is kind of inefficient */
646 *Options = (unsigned char*) RPCRT4_strconcatA( (char*)*Options, (char *)opt);
647 HeapFree(GetProcessHeap(), 0, opt);
648 } else
649 *Options = opt;
650 } else
651 HeapFree(GetProcessHeap(), 0, opt);
652 }
653 }
654 }
655
656 data = close+1;
657 if (*data) goto fail;
658 }
659 else if (NetworkAddr)
660 *NetworkAddr = unescape_string_binding_component(data, -1);
661
662 return RPC_S_OK;
663
664fail:
665 if (ObjUuid) RpcStringFreeA(ObjUuid);
666 if (Protseq) RpcStringFreeA(Protseq);
667 if (NetworkAddr) RpcStringFreeA(NetworkAddr);
668 if (Endpoint) RpcStringFreeA(Endpoint);
671}
int strncmp(const char *String1, const char *String2, ACPI_SIZE Count)
Definition: utclib.c:534
#define close
Definition: acwin.h:98
unsigned int BOOL
Definition: ntddk_ex.h:94
static unsigned __int64 next
Definition: rand_nt.c:6
static LPSTR RPCRT4_strconcatA(LPSTR dst, LPCSTR src)
Definition: rpc_binding.c:308
static const unsigned char * string_binding_find_delimiter(const unsigned char *string_binding, unsigned char delim)
Definition: rpc_binding.c:380
static RPC_CSTR unescape_string_binding_component(const unsigned char *string_binding, int len)
Definition: rpc_binding.c:410
#define RPC_S_INVALID_STRING_BINDING
Definition: winerror.h:1011

Referenced by RpcBindingFromStringBindingA(), s_context_handle_test(), and test_RpcStringBindingParseA().

◆ RpcStringBindingParseW()

RPCRTAPI RPC_STATUS RPC_ENTRY RpcStringBindingParseW ( RPC_WSTR  StringBinding,
RPC_WSTR ObjUuid,
RPC_WSTR Protseq,
RPC_WSTR NetworkAddr,
RPC_WSTR Endpoint,
RPC_WSTR NetworkOptions 
)

Definition at line 676 of file rpc_binding.c.

679{
680 const WCHAR *data, *next;
681 static const WCHAR ep_opt[] = {'e','n','d','p','o','i','n','t','=',0};
682 BOOL endpoint_already_found = FALSE;
683
684 TRACE("(%s,%p,%p,%p,%p,%p)\n", debugstr_w(StringBinding),
685 ObjUuid, Protseq, NetworkAddr, Endpoint, Options);
686
687 if (ObjUuid) *ObjUuid = NULL;
688 if (Protseq) *Protseq = NULL;
689 if (NetworkAddr) *NetworkAddr = NULL;
690 if (Endpoint) *Endpoint = NULL;
691 if (Options) *Options = NULL;
692
693 data = StringBinding;
694
696 if (next) {
697 UUID uuid;
700 status = UuidFromStringW(str_uuid, &uuid);
701 if (status != RPC_S_OK) {
702 HeapFree(GetProcessHeap(), 0, str_uuid);
703 return status;
704 }
705 if (ObjUuid)
706 *ObjUuid = str_uuid;
707 else
708 HeapFree(GetProcessHeap(), 0, str_uuid);
709 data = next+1;
710 }
711
713 if (next) {
714 if (Protseq) *Protseq = unescape_string_binding_componentW(data, next - data);
715 data = next+1;
716 } else {
717 goto fail;
718 }
719
721 if (next) {
722 const WCHAR *close;
723 RPC_WSTR opt;
724
725 if (NetworkAddr) *NetworkAddr = unescape_string_binding_componentW(data, next - data);
726 data = next+1;
728 if (!close) goto fail;
729
730 /* tokenize options */
731 while (data < close) {
733 if (!next || next > close) next = close;
734 /* FIXME: this is kind of inefficient */
736 data = next+1;
737
738 /* parse option */
740 if (!next) {
741 /* not an option, must be an endpoint */
742 if (endpoint_already_found) goto fail;
743 if (Endpoint) *Endpoint = opt;
744 else HeapFree(GetProcessHeap(), 0, opt);
745 endpoint_already_found = TRUE;
746 } else {
747 if (wcsncmp(opt, ep_opt, lstrlenW(ep_opt)) == 0) {
748 /* endpoint option */
749 if (endpoint_already_found) goto fail;
750 if (Endpoint) *Endpoint = unescape_string_binding_componentW(next+1, -1);
751 HeapFree(GetProcessHeap(), 0, opt);
752 endpoint_already_found = TRUE;
753 } else {
754 /* network option */
755 if (Options) {
756 if (*Options) {
757 /* FIXME: this is kind of inefficient */
759 HeapFree(GetProcessHeap(), 0, opt);
760 } else
761 *Options = opt;
762 } else
763 HeapFree(GetProcessHeap(), 0, opt);
764 }
765 }
766 }
767
768 data = close+1;
769 if (*data) goto fail;
770 } else if (NetworkAddr)
771 *NetworkAddr = unescape_string_binding_componentW(data, -1);
772
773 return RPC_S_OK;
774
775fail:
776 if (ObjUuid) RpcStringFreeW(ObjUuid);
777 if (Protseq) RpcStringFreeW(Protseq);
778 if (NetworkAddr) RpcStringFreeW(NetworkAddr);
779 if (Endpoint) RpcStringFreeW(Endpoint);
782}
static const WCHAR * string_binding_find_delimiterW(const WCHAR *string_binding, WCHAR delim)
Definition: rpc_binding.c:395
static RPC_WSTR unescape_string_binding_componentW(const WCHAR *string_binding, int len)
Definition: rpc_binding.c:432
static LPWSTR RPCRT4_strconcatW(LPWSTR dst, LPCWSTR src)
Definition: rpc_binding.c:322
_Check_return_ _CRTIMP int __cdecl wcsncmp(_In_reads_or_z_(_MaxCount) const wchar_t *_Str1, _In_reads_or_z_(_MaxCount) const wchar_t *_Str2, _In_ size_t _MaxCount)

Referenced by CreateJob(), and RpcBindingFromStringBindingW().

◆ RpcStringFreeA()

◆ RpcStringFreeW()

◆ UuidCompare()

RPCRTAPI signed int RPC_ENTRY UuidCompare ( UUID Uuid1,
UUID Uuid2,
RPC_STATUS Status_ 
)

Definition at line 209 of file rpcrt4_main.c.

210{
211 int i;
212
213 TRACE("(%s,%s)\n", debugstr_guid(Uuid1), debugstr_guid(Uuid2));
214
215 *Status = RPC_S_OK;
216
217 if (!Uuid1) Uuid1 = &uuid_nil;
218 if (!Uuid2) Uuid2 = &uuid_nil;
219
220 if (Uuid1 == Uuid2) return 0;
221
222 if (Uuid1->Data1 != Uuid2->Data1)
223 return Uuid1->Data1 < Uuid2->Data1 ? -1 : 1;
224
225 if (Uuid1->Data2 != Uuid2->Data2)
226 return Uuid1->Data2 < Uuid2->Data2 ? -1 : 1;
227
228 if (Uuid1->Data3 != Uuid2->Data3)
229 return Uuid1->Data3 < Uuid2->Data3 ? -1 : 1;
230
231 for (i = 0; i < 8; i++) {
232 if (Uuid1->Data4[i] < Uuid2->Data4[i])
233 return -1;
234 if (Uuid1->Data4[i] > Uuid2->Data4[i])
235 return 1;
236 }
237
238 return 0;
239}
Status
Definition: gdiplustypes.h:25
static UUID uuid_nil
Definition: rpcrt4_main.c:60

◆ UuidCreate()

RPCRTAPI RPC_STATUS RPC_ENTRY UuidCreate ( UUID Uuid)

Definition at line 305 of file rpcrt4_main.c.

306{
307 RtlGenRandom(Uuid, sizeof(*Uuid));
308 /* Clear the version bits and set the version (4) */
309 Uuid->Data3 &= 0x0fff;
310 Uuid->Data3 |= (4 << 12);
311 /* Set the topmost bits of Data4 (clock_seq_hi_and_reserved) as
312 * specified in RFC 4122, section 4.4.
313 */
314 Uuid->Data4[0] &= 0x3f;
315 Uuid->Data4[0] |= 0x80;
316
317 TRACE("%s\n", debugstr_guid(Uuid));
318
319 return RPC_S_OK;
320}
#define RtlGenRandom
Definition: ntsecapi.h:691

Referenced by AllocAndInitializeTelemetryContext(), CoCreateGuid(), CreateInstanceKey(), CRYPT_CreateMachineGuid(), generate_ipid(), GetCurrentHwProfileW(), InstallDevice(), NetClassInstaller(), RpcAssoc_Alloc(), rpcrt4_ncacn_http_open(), RpcServerAssoc_UpdateContextHandle(), test_QueryPathOfRegTypeLib(), test_UuidCreate(), and uuid_generate().

◆ UuidCreateNil()

RPCRTAPI RPC_STATUS RPC_ENTRY UuidCreateNil ( UUID Uuid)

Definition at line 284 of file rpcrt4_main.c.

285{
286 *Uuid = uuid_nil;
287 return RPC_S_OK;
288}

◆ UuidCreateSequential()

RPCRTAPI RPC_STATUS RPC_ENTRY UuidCreateSequential ( UUID Uuid)

Definition at line 390 of file rpcrt4_main.c.

391{
392 static BOOL initialised;
393 static int count;
394
396 static ULONGLONG timelast;
397 static WORD sequence;
398
399 static DWORD status;
401
403
404 if (!initialised) {
405 RPC_UuidGetSystemTime(&timelast);
407
408 sequence = ((rand() & 0xff) << 8) + (rand() & 0xff);
409 sequence &= 0x1fff;
410
412 initialised = TRUE;
413 }
414
415 /* Generate time element of the UUID. Account for going faster
416 than our clock as well as the clock going backwards. */
417 while (1) {
419 if (time > timelast) {
420 count = 0;
421 break;
422 }
423 if (time < timelast) {
424 sequence = (sequence + 1) & 0x1fff;
425 count = 0;
426 break;
427 }
429 count++;
430 break;
431 }
432 }
433
434 timelast = time;
435 time += count;
436
437 /* Pack the information into the UUID structure. */
438
439 Uuid->Data1 = (ULONG)(time & 0xffffffff);
440 Uuid->Data2 = (unsigned short)((time >> 32) & 0xffff);
441 Uuid->Data3 = (unsigned short)((time >> 48) & 0x0fff);
442
443 /* This is a version 1 UUID */
444 Uuid->Data3 |= (1 << 12);
445
446 Uuid->Data4[0] = sequence & 0xff;
447 Uuid->Data4[1] = (sequence & 0x3f00) >> 8;
448 Uuid->Data4[1] |= 0x80;
449 memcpy(&Uuid->Data4[2], address, ADDRESS_BYTES_NEEDED);
450
452
453 TRACE("%s\n", debugstr_guid(Uuid));
454
455 return status;
456}
static struct recvd_message * sequence
Definition: SystemMenu.c:63
unsigned short(__cdecl typeof(TIFFCurrentDirectory))(struct tiff *)
Definition: typeof.h:94
unsigned short WORD
Definition: ntddk_ex.h:93
GLuint address
Definition: glext.h:9393
_Check_return_ int __cdecl rand(void)
Definition: rand.c:10
#define MAX_ADAPTER_ADDRESS_LENGTH
Definition: iptypes.h:28
__u16 time
Definition: mkdosfs.c:8
static CRITICAL_SECTION uuid_cs
Definition: rpcrt4_main.c:62
static RPC_STATUS RPC_UuidGetNodeAddress(BYTE *address)
Definition: rpcrt4_main.c:344
static void RPC_UuidGetSystemTime(ULONGLONG *time)
Definition: rpcrt4_main.c:331
#define TICKS_PER_CLOCK_TICK
Definition: rpcrt4_main.c:324
#define ADDRESS_BYTES_NEEDED
Definition: rpcrt4_main.c:342
uint64_t ULONGLONG
Definition: typedefs.h:67
unsigned char BYTE
Definition: xxhash.c:193

Referenced by I_UuidCreate().

◆ UuidEqual()

RPCRTAPI int RPC_ENTRY UuidEqual ( UUID Uuid1,
UUID Uuid2,
RPC_STATUS Status_ 
)

Definition at line 252 of file rpcrt4_main.c.

253{
254 TRACE("(%s,%s)\n", debugstr_guid(Uuid1), debugstr_guid(Uuid2));
255 return !UuidCompare(Uuid1, Uuid2, Status);
256}

◆ UuidFromStringA()

RPCRTAPI RPC_STATUS RPC_ENTRY UuidFromStringA ( RPC_CSTR  StringUuid,
UUID Uuid 
)

Definition at line 574 of file rpcrt4_main.c.

575{
576 int i;
577
578 if (!s) return UuidCreateNil( uuid );
579
580 if (strlen((char*)s) != 36) return RPC_S_INVALID_STRING_UUID;
581
582 if ((s[8]!='-') || (s[13]!='-') || (s[18]!='-') || (s[23]!='-'))
584
585 for (i=0; i<36; i++)
586 {
587 if ((i == 8)||(i == 13)||(i == 18)||(i == 23)) continue;
588 if (s[i] > 'f' || (!hex2bin[s[i]] && s[i] != '0')) return RPC_S_INVALID_STRING_UUID;
589 }
590
591 /* in form XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX */
592
593 uuid->Data1 = (hex2bin[s[0]] << 28 | hex2bin[s[1]] << 24 | hex2bin[s[2]] << 20 | hex2bin[s[3]] << 16 |
594 hex2bin[s[4]] << 12 | hex2bin[s[5]] << 8 | hex2bin[s[6]] << 4 | hex2bin[s[7]]);
595 uuid->Data2 = hex2bin[s[9]] << 12 | hex2bin[s[10]] << 8 | hex2bin[s[11]] << 4 | hex2bin[s[12]];
596 uuid->Data3 = hex2bin[s[14]] << 12 | hex2bin[s[15]] << 8 | hex2bin[s[16]] << 4 | hex2bin[s[17]];
597
598 /* these are just sequential bytes */
599 uuid->Data4[0] = hex2bin[s[19]] << 4 | hex2bin[s[20]];
600 uuid->Data4[1] = hex2bin[s[21]] << 4 | hex2bin[s[22]];
601 uuid->Data4[2] = hex2bin[s[24]] << 4 | hex2bin[s[25]];
602 uuid->Data4[3] = hex2bin[s[26]] << 4 | hex2bin[s[27]];
603 uuid->Data4[4] = hex2bin[s[28]] << 4 | hex2bin[s[29]];
604 uuid->Data4[5] = hex2bin[s[30]] << 4 | hex2bin[s[31]];
605 uuid->Data4[6] = hex2bin[s[32]] << 4 | hex2bin[s[33]];
606 uuid->Data4[7] = hex2bin[s[34]] << 4 | hex2bin[s[35]];
607 return RPC_S_OK;
608}
GLdouble s
Definition: gl.h:2039
static const BYTE hex2bin[]
Definition: rpcrt4_main.c:560
RPC_STATUS WINAPI UuidCreateNil(UUID *Uuid)
Definition: rpcrt4_main.c:284
#define RPC_S_INVALID_STRING_UUID
Definition: winerror.h:1016

Referenced by RpcBindingFromStringBindingA(), RpcStringBindingParseA(), and UuidConversionAndComparison().

◆ UuidFromStringW()

RPCRTAPI RPC_STATUS RPC_ENTRY UuidFromStringW ( RPC_WSTR  StringUuid,
UUID Uuid 
)

Definition at line 614 of file rpcrt4_main.c.

615{
616 int i;
617
618 if (!s) return UuidCreateNil( uuid );
619
620 if (lstrlenW(s) != 36) return RPC_S_INVALID_STRING_UUID;
621
622 if ((s[8]!='-') || (s[13]!='-') || (s[18]!='-') || (s[23]!='-'))
624
625 for (i=0; i<36; i++)
626 {
627 if ((i == 8)||(i == 13)||(i == 18)||(i == 23)) continue;
628 if (s[i] > 'f' || (!hex2bin[s[i]] && s[i] != '0')) return RPC_S_INVALID_STRING_UUID;
629 }
630
631 /* in form XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX */
632
633 uuid->Data1 = (hex2bin[s[0]] << 28 | hex2bin[s[1]] << 24 | hex2bin[s[2]] << 20 | hex2bin[s[3]] << 16 |
634 hex2bin[s[4]] << 12 | hex2bin[s[5]] << 8 | hex2bin[s[6]] << 4 | hex2bin[s[7]]);
635 uuid->Data2 = hex2bin[s[9]] << 12 | hex2bin[s[10]] << 8 | hex2bin[s[11]] << 4 | hex2bin[s[12]];
636 uuid->Data3 = hex2bin[s[14]] << 12 | hex2bin[s[15]] << 8 | hex2bin[s[16]] << 4 | hex2bin[s[17]];
637
638 /* these are just sequential bytes */
639 uuid->Data4[0] = hex2bin[s[19]] << 4 | hex2bin[s[20]];
640 uuid->Data4[1] = hex2bin[s[21]] << 4 | hex2bin[s[22]];
641 uuid->Data4[2] = hex2bin[s[24]] << 4 | hex2bin[s[25]];
642 uuid->Data4[3] = hex2bin[s[26]] << 4 | hex2bin[s[27]];
643 uuid->Data4[4] = hex2bin[s[28]] << 4 | hex2bin[s[29]];
644 uuid->Data4[5] = hex2bin[s[30]] << 4 | hex2bin[s[31]];
645 uuid->Data4[6] = hex2bin[s[32]] << 4 | hex2bin[s[33]];
646 uuid->Data4[7] = hex2bin[s[34]] << 4 | hex2bin[s[35]];
647 return RPC_S_OK;
648}

Referenced by CM_Enumerate_Classes_Ex(), get_token(), GetVersionInformationFromInfFile(), InitProbeListPage(), PARSER_GetInfClassW(), pSetupGuidFromString(), RpcBindingFromStringBindingW(), RpcStringBindingParseW(), SETUP_CreateDevicesList(), SETUP_CreateInterfaceList(), SetupDiClassGuidsFromNameExW(), SetupDiInstallDeviceInterfaces(), SetupDiOpenDeviceInfoW(), SetupDiOpenDeviceInterfaceW(), and UuidConversionAndComparison().

◆ UuidHash()

RPCRTAPI unsigned short RPC_ENTRY UuidHash ( UUID Uuid,
RPC_STATUS Status_ 
)

Definition at line 476 of file rpcrt4_main.c.

477{
478 BYTE *data = (BYTE*)uuid;
479 short c0 = 0, c1 = 0, x, y;
480 unsigned int i;
481
482 if (!uuid) data = (BYTE*)(uuid = &uuid_nil);
483
484 TRACE("(%s)\n", debugstr_guid(uuid));
485
486 for (i=0; i<sizeof(UUID); i++) {
487 c0 += data[i];
488 c1 += c0;
489 }
490
491 x = -c1 % 255;
492 if (x < 0) x += 255;
493
494 y = (c1 - c0) % 255;
495 if (y < 0) y += 255;
496
497 *Status = RPC_S_OK;
498 return y*256 + x;
499}
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
GUID UUID
Definition: module.h:1093

◆ UuidIsNil()

RPCRTAPI int RPC_ENTRY UuidIsNil ( UUID Uuid,
RPC_STATUS Status_ 
)

Definition at line 268 of file rpcrt4_main.c.

269{
270 TRACE("(%s)\n", debugstr_guid(Uuid));
271 if (!Uuid) return TRUE;
272 return !UuidCompare(Uuid, &uuid_nil, Status);
273}

◆ UuidToStringA()

RPCRTAPI RPC_STATUS RPC_ENTRY UuidToStringA ( UUID Uuid,
RPC_CSTR StringUuid 
)

Definition at line 514 of file rpcrt4_main.c.

515{
516 *StringUuid = HeapAlloc( GetProcessHeap(), 0, sizeof(char) * 37);
517
518 if(!(*StringUuid))
519 return RPC_S_OUT_OF_MEMORY;
520
521 if (!Uuid) Uuid = &uuid_nil;
522
523 sprintf( (char*)*StringUuid, "%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
524 Uuid->Data1, Uuid->Data2, Uuid->Data3,
525 Uuid->Data4[0], Uuid->Data4[1], Uuid->Data4[2],
526 Uuid->Data4[3], Uuid->Data4[4], Uuid->Data4[5],
527 Uuid->Data4[6], Uuid->Data4[7] );
528
529 return RPC_S_OK;
530}
#define sprintf(buf, format,...)
Definition: sprintf.c:55

Referenced by RpcBindingToStringBindingA(), and UuidConversionAndComparison().

◆ UuidToStringW()

RPCRTAPI RPC_STATUS RPC_ENTRY UuidToStringW ( UUID Uuid,
RPC_WSTR StringUuid 
)

Definition at line 540 of file rpcrt4_main.c.

541{
542 char buf[37];
543
544 if (!Uuid) Uuid = &uuid_nil;
545
546 sprintf(buf, "%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
547 Uuid->Data1, Uuid->Data2, Uuid->Data3,
548 Uuid->Data4[0], Uuid->Data4[1], Uuid->Data4[2],
549 Uuid->Data4[3], Uuid->Data4[4], Uuid->Data4[5],
550 Uuid->Data4[6], Uuid->Data4[7] );
551
552 *StringUuid = RPCRT4_strdupAtoW(buf);
553
554 if(!(*StringUuid))
555 return RPC_S_OUT_OF_MEMORY;
556
557 return RPC_S_OK;
558}
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751

Referenced by CM_Open_Class_Key_ExW(), CreateInstanceKey(), get_settingid(), GuidToString(), NetClassInstaller(), pSetupStringFromGuid(), SETUPDI_CreateDrvKey(), SetupDiInstallDevice(), and UuidConversionAndComparison().