| // Copyright © 2015, Brian Vincent |
| // Licensed under the MIT License <LICENSE.md> |
| // This module contains the DCE RPC runtime APIs. |
| pub type RPC_CSTR = *mut ::c_uchar; |
| pub type RPC_WSTR = *mut ::wchar_t; |
| pub type RPC_CWSTR = *const ::wchar_t; |
| pub type RPC_BINDING_HANDLE = ::I_RPC_HANDLE; |
| pub type handle_t = RPC_BINDING_HANDLE; |
| pub type rpc_binding_handle_t = RPC_BINDING_HANDLE; |
| pub type UUID = ::GUID; |
| pub type uuid_t = UUID; |
| STRUCT!{struct RPC_BINDING_VECTOR { |
| Count: ::c_ulong, |
| BindingH: [RPC_BINDING_HANDLE; 1], |
| }} |
| pub type rpc_binding_vector_t = RPC_BINDING_VECTOR; |
| STRUCT!{struct UUID_VECTOR { |
| Count: ::c_ulong, |
| Uuid: [*mut UUID; 1], |
| }} |
| pub type uuid_vector_t = UUID_VECTOR; |
| pub type RPC_IF_HANDLE = *mut ::c_void; |
| STRUCT!{struct RPC_IF_ID { |
| Uuid: UUID, |
| VersMajor: ::c_ushort, |
| VersMinor: ::c_ushort, |
| }} |
| pub const RPC_C_BINDING_INFINITE_TIMEOUT: ::DWORD = 10; |
| pub const RPC_C_BINDING_MIN_TIMEOUT: ::DWORD = 0; |
| pub const RPC_C_BINDING_DEFAULT_TIMEOUT: ::DWORD = 5; |
| pub const RPC_C_BINDING_MAX_TIMEOUT: ::DWORD = 9; |
| pub const RPC_C_CANCEL_INFINITE_TIMEOUT: ::c_int = -1; |
| pub const RPC_C_LISTEN_MAX_CALLS_DEFAULT: ::DWORD = 1234; |
| pub const RPC_C_PROTSEQ_MAX_REQS_DEFAULT: ::DWORD = 10; |
| pub const RPC_C_BIND_TO_ALL_NICS: ::DWORD = 1; |
| pub const RPC_C_USE_INTERNET_PORT: ::DWORD = 0x1; |
| pub const RPC_C_USE_INTRANET_PORT: ::DWORD = 0x2; |
| pub const RPC_C_DONT_FAIL: ::DWORD = 0x4; |
| pub const RPC_C_RPCHTTP_USE_LOAD_BALANCE: ::DWORD = 0x8; |
| pub const RPC_C_MQ_TEMPORARY: ::DWORD = 0x0000; |
| pub const RPC_C_MQ_PERMANENT: ::DWORD = 0x0001; |
| pub const RPC_C_MQ_CLEAR_ON_OPEN: ::DWORD = 0x0002; |
| pub const RPC_C_MQ_USE_EXISTING_SECURITY: ::DWORD = 0x0004; |
| pub const RPC_C_MQ_AUTHN_LEVEL_NONE: ::DWORD = 0x0000; |
| pub const RPC_C_MQ_AUTHN_LEVEL_PKT_INTEGRITY: ::DWORD = 0x0008; |
| pub const RPC_C_MQ_AUTHN_LEVEL_PKT_PRIVACY: ::DWORD = 0x0010; |
| pub const RPC_C_OPT_MQ_DELIVERY: ::DWORD = 1; |
| pub const RPC_C_OPT_MQ_PRIORITY: ::DWORD = 2; |
| pub const RPC_C_OPT_MQ_JOURNAL: ::DWORD = 3; |
| pub const RPC_C_OPT_MQ_ACKNOWLEDGE: ::DWORD = 4; |
| pub const RPC_C_OPT_MQ_AUTHN_SERVICE: ::DWORD = 5; |
| pub const RPC_C_OPT_MQ_AUTHN_LEVEL: ::DWORD = 6; |
| pub const RPC_C_OPT_MQ_TIME_TO_REACH_QUEUE: ::DWORD = 7; |
| pub const RPC_C_OPT_MQ_TIME_TO_BE_RECEIVED: ::DWORD = 8; |
| pub const RPC_C_OPT_BINDING_NONCAUSAL: ::DWORD = 9; |
| pub const RPC_C_OPT_SECURITY_CALLBACK: ::DWORD = 10; |
| pub const RPC_C_OPT_UNIQUE_BINDING: ::DWORD = 11; |
| pub const RPC_C_OPT_CALL_TIMEOUT: ::DWORD = 12; |
| pub const RPC_C_OPT_DONT_LINGER: ::DWORD = 13; |
| pub const RPC_C_OPT_TRUST_PEER: ::DWORD = 14; |
| pub const RPC_C_OPT_ASYNC_BLOCK: ::DWORD = 15; |
| pub const RPC_C_OPT_OPTIMIZE_TIME: ::DWORD = 16; |
| pub const RPC_C_OPT_MAX_OPTIONS: ::DWORD = 17; |
| pub const RPC_C_MQ_EXPRESS: ::DWORD = 0; |
| pub const RPC_C_MQ_RECOVERABLE: ::DWORD = 1; |
| pub const RPC_C_MQ_JOURNAL_NONE: ::DWORD = 0; |
| pub const RPC_C_MQ_JOURNAL_DEADLETTER: ::DWORD = 1; |
| pub const RPC_C_MQ_JOURNAL_ALWAYS: ::DWORD = 2; |
| pub const RPC_C_FULL_CERT_CHAIN: ::DWORD = 0x0001; |
| STRUCT!{struct RPC_PROTSEQ_VECTORA { |
| Count: ::c_uint, |
| Protseq: [*mut ::c_uchar; 1], |
| }} |
| STRUCT!{struct RPC_PROTSEQ_VECTORW { |
| Count: ::c_uint, |
| Protseq: [*mut ::c_ushort; 1], |
| }} |
| STRUCT!{struct RPC_POLICY { |
| Length: ::c_uint, |
| EndpointFlags: ::c_ulong, |
| NICFlags: ::c_ulong, |
| }} |
| pub type PRPC_POLICY = *mut RPC_POLICY; |
| pub type RPC_OBJECT_INQ_FN = Option<unsafe extern "system" fn( |
| ObjectUuid: *mut UUID, TypeUuid: *mut UUID, Status: *mut ::RPC_STATUS, |
| )>; |
| pub type RPC_IF_CALLBACK_FN = Option<unsafe extern "system" fn( |
| InterfaceUuid: RPC_IF_HANDLE, Context: *mut ::c_void, |
| ) -> ::RPC_STATUS>; |
| pub type RPC_SECURITY_CALLBACK_FN = Option<unsafe extern "system" fn(Context: *mut ::c_void)>; |
| pub type RPC_MGR_EPV = ::c_void; |
| STRUCT!{struct RPC_STATS_VECTOR { |
| Count: ::c_uint, |
| Stats: [::c_ulong; 1], |
| }} |
| pub const RPC_C_STATS_CALLS_IN: ::c_ulong = 0; |
| pub const RPC_C_STATS_CALLS_OUT: ::c_ulong = 1; |
| pub const RPC_C_STATS_PKTS_IN: ::c_ulong = 2; |
| pub const RPC_C_STATS_PKTS_OUT: ::c_ulong = 3; |
| STRUCT!{struct RPC_IF_ID_VECTOR { |
| Count: ::c_ulong, |
| IfId: [*mut RPC_IF_ID; 1], |
| }} |
| pub type RPC_AUTH_IDENTITY_HANDLE = *mut ::c_void; |
| pub type RPC_AUTHZ_HANDLE = *mut ::c_void; |
| pub const RPC_C_AUTHN_LEVEL_DEFAULT: ::DWORD = 0; |
| pub const RPC_C_AUTHN_LEVEL_NONE: ::DWORD = 1; |
| pub const RPC_C_AUTHN_LEVEL_CONNECT: ::DWORD = 2; |
| pub const RPC_C_AUTHN_LEVEL_CALL: ::DWORD = 3; |
| pub const RPC_C_AUTHN_LEVEL_PKT: ::DWORD = 4; |
| pub const RPC_C_AUTHN_LEVEL_PKT_INTEGRITY: ::DWORD = 5; |
| pub const RPC_C_AUTHN_LEVEL_PKT_PRIVACY: ::DWORD = 6; |
| pub const RPC_C_IMP_LEVEL_DEFAULT: ::DWORD = 0; |
| pub const RPC_C_IMP_LEVEL_ANONYMOUS: ::DWORD = 1; |
| pub const RPC_C_IMP_LEVEL_IDENTIFY: ::DWORD = 2; |
| pub const RPC_C_IMP_LEVEL_IMPERSONATE: ::DWORD = 3; |
| pub const RPC_C_IMP_LEVEL_DELEGATE: ::DWORD = 4; |
| pub const RPC_C_QOS_IDENTITY_STATIC: ::DWORD = 0; |
| pub const RPC_C_QOS_IDENTITY_DYNAMIC: ::DWORD = 1; |
| pub const RPC_C_QOS_CAPABILITIES_DEFAULT: ::DWORD = 0x0; |
| pub const RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH: ::DWORD = 0x1; |
| pub const RPC_C_QOS_CAPABILITIES_MAKE_FULLSIC: ::DWORD = 0x2; |
| pub const RPC_C_QOS_CAPABILITIES_ANY_AUTHORITY: ::DWORD = 0x4; |
| pub const RPC_C_QOS_CAPABILITIES_IGNORE_DELEGATE_FAILURE: ::DWORD = 0x8; |
| pub const RPC_C_QOS_CAPABILITIES_LOCAL_MA_HINT: ::DWORD = 0x10; |
| pub const RPC_C_QOS_CAPABILITIES_SCHANNEL_FULL_AUTH_IDENTITY: ::DWORD = 0x20; |
| pub const RPC_C_PROTECT_LEVEL_DEFAULT: ::DWORD = RPC_C_AUTHN_LEVEL_DEFAULT; |
| pub const RPC_C_PROTECT_LEVEL_NONE: ::DWORD = RPC_C_AUTHN_LEVEL_NONE; |
| pub const RPC_C_PROTECT_LEVEL_CONNECT: ::DWORD = RPC_C_AUTHN_LEVEL_CONNECT; |
| pub const RPC_C_PROTECT_LEVEL_CALL: ::DWORD = RPC_C_AUTHN_LEVEL_CALL; |
| pub const RPC_C_PROTECT_LEVEL_PKT: ::DWORD = RPC_C_AUTHN_LEVEL_PKT; |
| pub const RPC_C_PROTECT_LEVEL_PKT_INTEGRITY: ::DWORD = RPC_C_AUTHN_LEVEL_PKT_INTEGRITY; |
| pub const RPC_C_PROTECT_LEVEL_PKT_PRIVACY: ::DWORD = RPC_C_AUTHN_LEVEL_PKT_PRIVACY; |
| pub const RPC_C_AUTHN_NONE: ::DWORD = 0; |
| pub const RPC_C_AUTHN_DCE_PRIVATE: ::DWORD = 1; |
| pub const RPC_C_AUTHN_DCE_PUBLIC: ::DWORD = 2; |
| pub const RPC_C_AUTHN_DEC_PUBLIC: ::DWORD = 4; |
| pub const RPC_C_AUTHN_GSS_NEGOTIATE: ::DWORD = 9; |
| pub const RPC_C_AUTHN_WINNT: ::DWORD = 10; |
| pub const RPC_C_AUTHN_GSS_SCHANNEL: ::DWORD = 14; |
| pub const RPC_C_AUTHN_GSS_KERBEROS: ::DWORD = 16; |
| pub const RPC_C_AUTHN_DPA: ::DWORD = 17; |
| pub const RPC_C_AUTHN_MSN: ::DWORD = 18; |
| pub const RPC_C_AUTHN_DIGEST: ::DWORD = 21; |
| pub const RPC_C_AUTHN_KERNEL: ::DWORD = 20; |
| pub const RPC_C_AUTHN_NEGO_EXTENDER: ::DWORD = 30; |
| pub const RPC_C_AUTHN_PKU2U: ::DWORD = 31; |
| pub const RPC_C_AUTHN_LIVE_SSP: ::DWORD = 32; |
| pub const RPC_C_AUTHN_LIVEXP_SSP: ::DWORD = 35; |
| pub const RPC_C_AUTHN_MSONLINE: ::DWORD = 82; |
| pub const RPC_C_AUTHN_MQ: ::DWORD = 100; |
| pub const RPC_C_AUTHN_DEFAULT: ::DWORD = 0xFFFFFFFF; |
| pub const RPC_C_NO_CREDENTIALS: ::DWORD = 0xFFFFFFFF; |
| pub const RPC_C_SECURITY_QOS_VERSION: ::DWORD = 1; |
| pub const RPC_C_SECURITY_QOS_VERSION_1: ::DWORD = 1; |
| STRUCT!{struct RPC_SECURITY_QOS { |
| Version: ::c_ulong, |
| Capabilities: ::c_ulong, |
| IdentityTracking: ::c_ulong, |
| ImpersonationType: ::c_ulong, |
| }} |
| pub type PRPC_SECURITY_QOS = *mut RPC_SECURITY_QOS; |
| STRUCT!{struct SEC_WINNT_AUTH_IDENTITY_W { |
| User: *mut ::c_ushort, |
| UserLength: ::c_ulong, |
| Domain: *mut ::c_ushort, |
| DomainLength: ::c_ulong, |
| Password: *mut ::c_ushort, |
| PasswordLength: ::c_ulong, |
| Flags: ::c_ulong, |
| }} |
| pub type PSEC_WINNT_AUTH_IDENTITY_W = *mut SEC_WINNT_AUTH_IDENTITY_W; |
| STRUCT!{struct SEC_WINNT_AUTH_IDENTITY_A { |
| User: *mut ::c_uchar, |
| UserLength: ::c_ulong, |
| Domain: *mut ::c_uchar, |
| DomainLength: ::c_ulong, |
| Password: *mut ::c_uchar, |
| PasswordLength: ::c_ulong, |
| Flags: ::c_ulong, |
| }} |
| pub type PSEC_WINNT_AUTH_IDENTITY_A = *mut SEC_WINNT_AUTH_IDENTITY_A; |
| pub const RPC_C_AUTHN_INFO_TYPE_HTTP: ::c_ulong = 1; |
| pub const RPC_C_HTTP_AUTHN_TARGET_SERVER: ::c_ulong = 1; |
| pub const RPC_C_HTTP_AUTHN_TARGET_PROXY: ::c_ulong = 2; |
| pub const RPC_C_HTTP_AUTHN_SCHEME_BASIC: ::c_ulong = 0x00000001; |
| pub const RPC_C_HTTP_AUTHN_SCHEME_NTLM: ::c_ulong = 0x00000002; |
| pub const RPC_C_HTTP_AUTHN_SCHEME_PASSPORT: ::c_ulong = 0x00000004; |
| pub const RPC_C_HTTP_AUTHN_SCHEME_DIGEST: ::c_ulong = 0x00000008; |
| pub const RPC_C_HTTP_AUTHN_SCHEME_NEGOTIATE: ::c_ulong = 0x00000010; |
| pub const RPC_C_HTTP_AUTHN_SCHEME_CERT: ::c_ulong = 0x00010000; |
| pub const RPC_C_HTTP_FLAG_USE_SSL: ::c_ulong = 1; |
| pub const RPC_C_HTTP_FLAG_USE_FIRST_AUTH_SCHEME: ::c_ulong = 2; |
| pub const RPC_C_HTTP_FLAG_IGNORE_CERT_CN_INVALID: ::c_ulong = 8; |
| pub const RPC_C_HTTP_FLAG_ENABLE_CERT_REVOCATION_CHECK: ::c_ulong = 16; |
| STRUCT!{struct RPC_HTTP_TRANSPORT_CREDENTIALS_W { |
| TransportCredentials: *mut SEC_WINNT_AUTH_IDENTITY_W, |
| Flags: ::c_ulong, |
| AuthenticationTarget: ::c_ulong, |
| NumberOfAuthnSchemes: ::c_ulong, |
| AuthnSchemes: *mut ::c_ulong, |
| ServerCertificateSubject: *mut ::c_ushort, |
| }} |
| pub type PRPC_HTTP_TRANSPORT_CREDENTIALS_W = *mut RPC_HTTP_TRANSPORT_CREDENTIALS_W; |
| STRUCT!{struct RPC_HTTP_TRANSPORT_CREDENTIALS_A { |
| TransportCredentials: *mut SEC_WINNT_AUTH_IDENTITY_A, |
| Flags: ::c_ulong, |
| AuthenticationTarget: ::c_ulong, |
| NumberOfAuthnSchemes: ::c_ulong, |
| AuthnSchemes: *mut ::c_ulong, |
| ServerCertificateSubject: *mut ::c_uchar, |
| }} |
| pub type PRPC_HTTP_TRANSPORT_CREDENTIALS_A = *mut RPC_HTTP_TRANSPORT_CREDENTIALS_A; |
| STRUCT!{struct RPC_HTTP_TRANSPORT_CREDENTIALS_V2_W { |
| TransportCredentials: *mut SEC_WINNT_AUTH_IDENTITY_W, |
| Flags: ::c_ulong, |
| AuthenticationTarget: ::c_ulong, |
| NumberOfAuthnSchemes: ::c_ulong, |
| AuthnSchemes: *mut ::c_ulong, |
| ServerCertificateSubject: *mut ::c_ushort, |
| ProxyCredentials: *mut SEC_WINNT_AUTH_IDENTITY_W, |
| NumberOfProxyAuthnSchemes: ::c_ulong, |
| ProxyAuthnSchemes: *mut ::c_ulong, |
| }} |
| pub type PRPC_HTTP_TRANSPORT_CREDENTIALS_V2_W = *mut RPC_HTTP_TRANSPORT_CREDENTIALS_V2_W; |
| STRUCT!{struct RPC_HTTP_TRANSPORT_CREDENTIALS_V2_A { |
| TransportCredentials: *mut SEC_WINNT_AUTH_IDENTITY_A, |
| Flags: ::c_ulong, |
| AuthenticationTarget: ::c_ulong, |
| NumberOfAuthnSchemes: ::c_ulong, |
| AuthnSchemes: *mut ::c_ulong, |
| ServerCertificateSubject: *mut ::c_uchar, |
| ProxyCredentials: *mut SEC_WINNT_AUTH_IDENTITY_A, |
| NumberOfProxyAuthnSchemes: ::c_ulong, |
| ProxyAuthnSchemes: *mut ::c_ulong, |
| }} |
| pub type PRPC_HTTP_TRANSPORT_CREDENTIALS_V2_A = *mut RPC_HTTP_TRANSPORT_CREDENTIALS_V2_A; |
| STRUCT!{struct RPC_HTTP_TRANSPORT_CREDENTIALS_V3_W { |
| TransportCredentials: RPC_AUTH_IDENTITY_HANDLE, |
| Flags: ::c_ulong, |
| AuthenticationTarget: ::c_ulong, |
| NumberOfAuthnSchemes: ::c_ulong, |
| AuthnSchemes: *mut ::c_ulong, |
| ServerCertificateSubject: *mut ::c_ushort, |
| ProxyCredentials: *mut RPC_AUTH_IDENTITY_HANDLE, |
| NumberOfProxyAuthnSchemes: ::c_ulong, |
| ProxyAuthnSchemes: *mut ::c_ulong, |
| }} |
| pub type PRPC_HTTP_TRANSPORT_CREDENTIALS_V3_W = *mut RPC_HTTP_TRANSPORT_CREDENTIALS_V3_W; |
| STRUCT!{struct RPC_HTTP_TRANSPORT_CREDENTIALS_V3_A { |
| TransportCredentials: RPC_AUTH_IDENTITY_HANDLE, |
| Flags: ::c_ulong, |
| AuthenticationTarget: ::c_ulong, |
| NumberOfAuthnSchemes: ::c_ulong, |
| AuthnSchemes: *mut ::c_ulong, |
| ServerCertificateSubject: *mut ::c_uchar, |
| ProxyCredentials: *mut RPC_AUTH_IDENTITY_HANDLE, |
| NumberOfProxyAuthnSchemes: ::c_ulong, |
| ProxyAuthnSchemes: *mut ::c_ulong, |
| }} |
| pub type PRPC_HTTP_TRANSPORT_CREDENTIALS_V3_A = *mut RPC_HTTP_TRANSPORT_CREDENTIALS_V3_A; |
| STRUCT!{struct RPC_SECURITY_QOS_V2_W_union { |
| HttpCredentials: *mut RPC_HTTP_TRANSPORT_CREDENTIALS_W, |
| }} |
| STRUCT!{struct RPC_SECURITY_QOS_V2_W { |
| Version: ::c_ulong, |
| Capabilities: ::c_ulong, |
| IdentityTracking: ::c_ulong, |
| ImpersonationType: ::c_ulong, |
| AdditionalSecurityInfoType: ::c_ulong, |
| u: RPC_SECURITY_QOS_V2_W_union, |
| }} |
| pub type PRPC_SECURITY_QOS_V2_W = *mut RPC_SECURITY_QOS_V2_W; |
| STRUCT!{struct RPC_SECURITY_QOS_V2_A_union { |
| HttpCredentials: *mut RPC_HTTP_TRANSPORT_CREDENTIALS_A, |
| }} |
| STRUCT!{struct RPC_SECURITY_QOS_V2_A { |
| Version: ::c_ulong, |
| Capabilities: ::c_ulong, |
| IdentityTracking: ::c_ulong, |
| ImpersonationType: ::c_ulong, |
| AdditionalSecurityInfoType: ::c_ulong, |
| u: RPC_SECURITY_QOS_V2_A_union, |
| }} |
| pub type PRPC_SECURITY_QOS_V2_A = *mut RPC_SECURITY_QOS_V2_A; |
| STRUCT!{struct RPC_SECURITY_QOS_V3_W_union { |
| HttpCredentials: *mut RPC_HTTP_TRANSPORT_CREDENTIALS_W, |
| }} |
| STRUCT!{struct RPC_SECURITY_QOS_V3_W { |
| Version: ::c_ulong, |
| Capabilities: ::c_ulong, |
| IdentityTracking: ::c_ulong, |
| ImpersonationType: ::c_ulong, |
| AdditionalSecurityInfoType: ::c_ulong, |
| u: RPC_SECURITY_QOS_V3_W_union, |
| Sid: *mut ::c_void, |
| }} |
| pub type PRPC_SECURITY_QOS_V3_W = *mut RPC_SECURITY_QOS_V3_W; |
| STRUCT!{struct RPC_SECURITY_QOS_V3_A_union { |
| HttpCredentials: *mut RPC_HTTP_TRANSPORT_CREDENTIALS_A, |
| }} |
| STRUCT!{struct RPC_SECURITY_QOS_V3_A { |
| Version: ::c_ulong, |
| Capabilities: ::c_ulong, |
| IdentityTracking: ::c_ulong, |
| ImpersonationType: ::c_ulong, |
| AdditionalSecurityInfoType: ::c_ulong, |
| u: RPC_SECURITY_QOS_V3_A_union, |
| Sid: *mut ::c_void, |
| }} |
| pub type PRPC_SECURITY_QOS_V3_A = *mut RPC_SECURITY_QOS_V3_A; |
| STRUCT!{struct RPC_SECURITY_QOS_V4_W_union { |
| HttpCredentials: *mut RPC_HTTP_TRANSPORT_CREDENTIALS_W, |
| }} |
| STRUCT!{struct RPC_SECURITY_QOS_V4_W { |
| Version: ::c_ulong, |
| Capabilities: ::c_ulong, |
| IdentityTracking: ::c_ulong, |
| ImpersonationType: ::c_ulong, |
| AdditionalSecurityInfoType: ::c_ulong, |
| u: RPC_SECURITY_QOS_V4_W_union, |
| Sid: *mut ::c_void, |
| EffectiveOnly: ::c_uint, |
| }} |
| pub type PRPC_SECURITY_QOS_V4_W = *mut RPC_SECURITY_QOS_V4_W; |
| STRUCT!{struct RPC_SECURITY_QOS_V4_A_union { |
| HttpCredentials: *mut RPC_HTTP_TRANSPORT_CREDENTIALS_A, |
| }} |
| STRUCT!{struct RPC_SECURITY_QOS_V4_A { |
| Version: ::c_ulong, |
| Capabilities: ::c_ulong, |
| IdentityTracking: ::c_ulong, |
| ImpersonationType: ::c_ulong, |
| AdditionalSecurityInfoType: ::c_ulong, |
| u: RPC_SECURITY_QOS_V4_A_union, |
| Sid: *mut ::c_void, |
| EffectiveOnly: ::c_uint, |
| }} |
| pub type PRPC_SECURITY_QOS_V4_A = *mut RPC_SECURITY_QOS_V4_A; |
| STRUCT!{struct RPC_SECURITY_QOS_V5_W_union { |
| HttpCredentials: *mut RPC_HTTP_TRANSPORT_CREDENTIALS_W, |
| }} |
| STRUCT!{struct RPC_SECURITY_QOS_V5_W { |
| Version: ::c_ulong, |
| Capabilities: ::c_ulong, |
| IdentityTracking: ::c_ulong, |
| ImpersonationType: ::c_ulong, |
| AdditionalSecurityInfoType: ::c_ulong, |
| u: RPC_SECURITY_QOS_V5_W_union, |
| Sid: *mut ::c_void, |
| EffectiveOnly: ::c_uint, |
| ServerSecurityDescriptor: *mut ::c_void, |
| }} |
| pub type PRPC_SECURITY_QOS_V5_W = *mut RPC_SECURITY_QOS_V5_W; |
| STRUCT!{struct RPC_SECURITY_QOS_V5_A_union { |
| HttpCredentials: *mut RPC_HTTP_TRANSPORT_CREDENTIALS_A, |
| }} |
| STRUCT!{struct RPC_SECURITY_QOS_V5_A { |
| Version: ::c_ulong, |
| Capabilities: ::c_ulong, |
| IdentityTracking: ::c_ulong, |
| ImpersonationType: ::c_ulong, |
| AdditionalSecurityInfoType: ::c_ulong, |
| u: RPC_SECURITY_QOS_V5_A_union, |
| Sid: *mut ::c_void, |
| EffectiveOnly: ::c_uint, |
| ServerSecurityDescriptor: *mut ::c_void, |
| }} |
| pub type PRPC_SECURITY_QOS_V5_A = *mut RPC_SECURITY_QOS_V5_A; |
| pub const RPC_PROTSEQ_TCP: ::c_ulong = 0x1; |
| pub const RPC_PROTSEQ_NMP: ::c_ulong = 0x2; |
| pub const RPC_PROTSEQ_LRPC: ::c_ulong = 0x3; |
| pub const RPC_PROTSEQ_HTTP: ::c_ulong = 0x4; |
| pub const RPC_BHT_OBJECT_UUID_VALID: ::c_ulong = 0x1; |
| pub const RPC_BHO_NONCAUSAL: ::c_ulong = 0x1; |
| pub const RPC_BHO_DONTLINGER: ::c_ulong = 0x2; |
| pub const RPC_BHO_EXCLUSIVE_AND_GUARANTEED: ::c_ulong = 0x4; |
| STRUCT!{struct RPC_BINDING_HANDLE_TEMPLATE_V1_W_union { |
| Reserved: *mut ::c_ushort, |
| }} |
| STRUCT!{struct RPC_BINDING_HANDLE_TEMPLATE_V1_W { |
| Version: ::c_ulong, |
| Flags: ::c_ulong, |
| ProtocolSequence: ::c_ulong, |
| NetworkAddress: *mut ::c_ushort, |
| StringEndpoint: *mut ::c_ushort, |
| u1: RPC_BINDING_HANDLE_TEMPLATE_V1_W_union, |
| ObjectUuid: UUID, |
| }} |
| pub type PRPC_BINDING_HANDLE_TEMPLATE_V1_W = *mut RPC_BINDING_HANDLE_TEMPLATE_V1_W; |
| STRUCT!{struct RPC_BINDING_HANDLE_TEMPLATE_V1_A_union { |
| Reserved: *mut ::c_uchar, |
| }} |
| STRUCT!{struct RPC_BINDING_HANDLE_TEMPLATE_V1_A { |
| Version: ::c_ulong, |
| Flags: ::c_ulong, |
| ProtocolSequence: ::c_ulong, |
| NetworkAddress: *mut ::c_uchar, |
| StringEndpoint: *mut ::c_uchar, |
| u1: RPC_BINDING_HANDLE_TEMPLATE_V1_A_union, |
| ObjectUuid: UUID, |
| }} |
| pub type PRPC_BINDING_HANDLE_TEMPLATE_V1_A = *mut RPC_BINDING_HANDLE_TEMPLATE_V1_A; |
| STRUCT!{struct RPC_BINDING_HANDLE_SECURITY_V1_W { |
| Version: ::c_ulong, |
| ServerPrincName: *mut ::c_ushort, |
| AuthnLevel: ::c_ulong, |
| AuthnSvc: ::c_ulong, |
| AuthIdentity: *mut SEC_WINNT_AUTH_IDENTITY_W, |
| SecurityQos: *mut RPC_SECURITY_QOS, |
| }} |
| pub type PRPC_BINDING_HANDLE_SECURITY_V1_W = *mut RPC_BINDING_HANDLE_SECURITY_V1_W; |
| STRUCT!{struct RPC_BINDING_HANDLE_SECURITY_V1_A { |
| Version: ::c_ulong, |
| ServerPrincName: *mut ::c_uchar, |
| AuthnLevel: ::c_ulong, |
| AuthnSvc: ::c_ulong, |
| AuthIdentity: *mut SEC_WINNT_AUTH_IDENTITY_A, |
| SecurityQos: *mut RPC_SECURITY_QOS, |
| }} |
| pub type PRPC_BINDING_HANDLE_SECURITY_V1_A = *mut RPC_BINDING_HANDLE_SECURITY_V1_A; |
| STRUCT!{struct RPC_BINDING_HANDLE_OPTIONS_V1 { |
| Version: ::c_ulong, |
| Flags: ::c_ulong, |
| ComTimeout: ::c_ulong, |
| CallTimeout: ::c_ulong, |
| }} |
| pub type PRPC_BINDING_HANDLE_OPTIONS_V1 = *mut RPC_BINDING_HANDLE_OPTIONS_V1; |
| ENUM!{enum RPC_HTTP_REDIRECTOR_STAGE { |
| RPCHTTP_RS_REDIRECT = 1, |
| RPCHTTP_RS_ACCESS_1, |
| RPCHTTP_RS_SESSION, |
| RPCHTTP_RS_ACCESS_2, |
| RPCHTTP_RS_INTERFACE, |
| }} |
| pub type RPC_NEW_HTTP_PROXY_CHANNEL = Option<unsafe extern "system" fn( |
| RedirectorStage: RPC_HTTP_REDIRECTOR_STAGE, ServerName: RPC_WSTR, ServerPort: RPC_WSTR, |
| RemoteUser: RPC_WSTR, AuthType: RPC_WSTR, ResourceUuid: *mut ::c_void, |
| SessionId: *mut ::c_void, Interface: *mut ::c_void, Reserved: *mut ::c_void, Flags: ::c_ulong, |
| NewServerName: *mut RPC_WSTR, NewServerPort: *mut RPC_WSTR, |
| ) -> ::RPC_STATUS>; |
| pub type RPC_HTTP_PROXY_FREE_STRING = Option<unsafe extern "system" fn(String: RPC_WSTR)>; |
| pub const RPC_C_AUTHZ_NONE: ::DWORD = 0; |
| pub const RPC_C_AUTHZ_NAME: ::DWORD = 1; |
| pub const RPC_C_AUTHZ_DCE: ::DWORD = 2; |
| pub const RPC_C_AUTHZ_DEFAULT: ::DWORD = 0xffffffff; |
| pub type RPC_AUTH_KEY_RETRIEVAL_FN = Option<unsafe extern "system" fn( |
| Arg: *mut ::c_void, ServerPrincName: RPC_WSTR, KeyVer: ::c_ulong, Key: *mut *mut ::c_void, |
| Status: *mut ::RPC_STATUS, |
| )>; |
| STRUCT!{struct RPC_CLIENT_INFORMATION1 { |
| UserName: *mut ::c_uchar, |
| ComputerName: *mut ::c_uchar, |
| Privilege: ::c_ushort, |
| AuthFlags: ::c_ulong, |
| }} |
| pub type PRPC_CLIENT_INFORMATION1 = *mut RPC_CLIENT_INFORMATION1; |
| pub type RPC_EP_INQ_HANDLE = *mut ::I_RPC_HANDLE; |
| pub const RPC_C_EP_ALL_ELTS: ::c_ulong = 0; |
| pub const RPC_C_EP_MATCH_BY_IF: ::c_ulong = 1; |
| pub const RPC_C_EP_MATCH_BY_OBJ: ::c_ulong = 2; |
| pub const RPC_C_EP_MATCH_BY_BOTH: ::c_ulong = 3; |
| pub const RPC_C_VERS_ALL: ::c_ulong = 1; |
| pub const RPC_C_VERS_COMPATIBLE: ::c_ulong = 2; |
| pub const RPC_C_VERS_EXACT: ::c_ulong = 3; |
| pub const RPC_C_VERS_MAJOR_ONLY: ::c_ulong = 4; |
| pub const RPC_C_VERS_UPTO: ::c_ulong = 5; |
| pub type RPC_MGMT_AUTHORIZATION_FN = Option<unsafe extern "system" fn( |
| ClientBinding: RPC_BINDING_HANDLE, RequestedMgmtOperation: ::c_ulong, |
| Status: *mut ::RPC_STATUS, |
| ) -> ::c_int>; |
| pub const RPC_C_MGMT_INQ_IF_IDS: ::c_ulong = 0; |
| pub const RPC_C_MGMT_INQ_PRINC_NAME: ::c_ulong = 1; |
| pub const RPC_C_MGMT_INQ_STATS: ::c_ulong = 2; |
| pub const RPC_C_MGMT_IS_SERVER_LISTEN: ::c_ulong = 3; |
| pub const RPC_C_MGMT_STOP_SERVER_LISTEN: ::c_ulong = 4; |
| pub const RPC_IF_AUTOLISTEN: ::c_uint = 0x0001; |
| pub const RPC_IF_OLE: ::c_uint = 0x0002; |
| pub const RPC_IF_ALLOW_UNKNOWN_AUTHORITY: ::c_uint = 0x0004; |
| pub const RPC_IF_ALLOW_SECURE_ONLY: ::c_uint = 0x0008; |
| pub const RPC_IF_ALLOW_CALLBACKS_WITH_NO_AUTH: ::c_uint = 0x0010; |
| pub const RPC_IF_ALLOW_LOCAL_ONLY: ::c_uint = 0x0020; |
| pub const RPC_IF_SEC_NO_CACHE: ::c_uint = 0x0040; |
| pub const RPC_IF_SEC_CACHE_PER_PROC: ::c_uint = 0x0080; |
| pub const RPC_IF_ASYNC_CALLBACK: ::c_uint = 0x0100; |
| pub const RPC_FW_IF_FLAG_DCOM: ::c_uint = 0x0001; |
| pub type RPC_INTERFACE_GROUP = *mut ::c_void; |
| pub type PRPC_INTERFACE_GROUP = *mut *mut ::c_void; |
| STRUCT!{struct RPC_ENDPOINT_TEMPLATEW { |
| Version: ::c_ulong, |
| ProtSeq: RPC_WSTR, |
| Endpoint: RPC_WSTR, |
| SecurityDescriptor: *mut ::c_void, |
| Backlog: ::c_ulong, |
| }} |
| pub type PRPC_ENDPOINT_TEMPLATEW = *mut RPC_ENDPOINT_TEMPLATEW; |
| STRUCT!{struct RPC_ENDPOINT_TEMPLATEA { |
| Version: ::c_ulong, |
| ProtSeq: RPC_CSTR, |
| Endpoint: RPC_CSTR, |
| SecurityDescriptor: *mut ::c_void, |
| Backlog: ::c_ulong, |
| }} |
| pub type PRPC_ENDPOINT_TEMPLATEA = *mut RPC_ENDPOINT_TEMPLATEA; |
| STRUCT!{struct RPC_INTERFACE_TEMPLATEA { |
| Version: ::c_ulong, |
| IfSpec: RPC_IF_HANDLE, |
| MgrTypeUuid: *mut UUID, |
| MgrEpv: *mut RPC_MGR_EPV, |
| Flags: ::c_uint, |
| MaxCalls: ::c_uint, |
| MaxRpcSize: ::c_uint, |
| IfCallback: *mut RPC_IF_CALLBACK_FN, |
| UuidVector: *mut UUID_VECTOR, |
| Annotation: RPC_CSTR, |
| SecurityDescriptor: *mut ::c_void, |
| }} |
| pub type PRPC_INTERFACE_TEMPLATEA = *mut RPC_INTERFACE_TEMPLATEA; |
| STRUCT!{struct RPC_INTERFACE_TEMPLATEW { |
| Version: ::c_ulong, |
| IfSpec: RPC_IF_HANDLE, |
| MgrTypeUuid: *mut UUID, |
| MgrEpv: *mut RPC_MGR_EPV, |
| Flags: ::c_uint, |
| MaxCalls: ::c_uint, |
| MaxRpcSize: ::c_uint, |
| IfCallback: *mut RPC_IF_CALLBACK_FN, |
| UuidVector: *mut UUID_VECTOR, |
| Annotation: RPC_WSTR, |
| SecurityDescriptor: *mut ::c_void, |
| }} |
| pub type PRPC_INTERFACE_TEMPLATEW = *mut RPC_INTERFACE_TEMPLATEW; |
| pub type RPC_INTERFACE_GROUP_IDLE_CALLBACK_FN = Option<unsafe extern "system" fn( |
| IfGroup: RPC_INTERFACE_GROUP, IdleCallbackContext: *mut ::c_void, IsGroupIdle: ::c_ulong, |
| )>; |