1 // Copyright © 2015, Brian Vincent 2 // Licensed under the MIT License <LICENSE.md> 3 // This module contains the DCE RPC runtime APIs. 4 pub type RPC_CSTR = *mut ::c_uchar; 5 pub type RPC_WSTR = *mut ::wchar_t; 6 pub type RPC_CWSTR = *const ::wchar_t; 7 pub type RPC_BINDING_HANDLE = ::I_RPC_HANDLE; 8 pub type handle_t = RPC_BINDING_HANDLE; 9 pub type rpc_binding_handle_t = RPC_BINDING_HANDLE; 10 pub type UUID = ::GUID; 11 pub type uuid_t = UUID; 12 STRUCT!{struct RPC_BINDING_VECTOR { 13 Count: ::c_ulong, 14 BindingH: [RPC_BINDING_HANDLE; 1], 15 }} 16 pub type rpc_binding_vector_t = RPC_BINDING_VECTOR; 17 STRUCT!{struct UUID_VECTOR { 18 Count: ::c_ulong, 19 Uuid: [*mut UUID; 1], 20 }} 21 pub type uuid_vector_t = UUID_VECTOR; 22 pub type RPC_IF_HANDLE = *mut ::c_void; 23 STRUCT!{struct RPC_IF_ID { 24 Uuid: UUID, 25 VersMajor: ::c_ushort, 26 VersMinor: ::c_ushort, 27 }} 28 pub const RPC_C_BINDING_INFINITE_TIMEOUT: ::DWORD = 10; 29 pub const RPC_C_BINDING_MIN_TIMEOUT: ::DWORD = 0; 30 pub const RPC_C_BINDING_DEFAULT_TIMEOUT: ::DWORD = 5; 31 pub const RPC_C_BINDING_MAX_TIMEOUT: ::DWORD = 9; 32 pub const RPC_C_CANCEL_INFINITE_TIMEOUT: ::c_int = -1; 33 pub const RPC_C_LISTEN_MAX_CALLS_DEFAULT: ::DWORD = 1234; 34 pub const RPC_C_PROTSEQ_MAX_REQS_DEFAULT: ::DWORD = 10; 35 pub const RPC_C_BIND_TO_ALL_NICS: ::DWORD = 1; 36 pub const RPC_C_USE_INTERNET_PORT: ::DWORD = 0x1; 37 pub const RPC_C_USE_INTRANET_PORT: ::DWORD = 0x2; 38 pub const RPC_C_DONT_FAIL: ::DWORD = 0x4; 39 pub const RPC_C_RPCHTTP_USE_LOAD_BALANCE: ::DWORD = 0x8; 40 pub const RPC_C_MQ_TEMPORARY: ::DWORD = 0x0000; 41 pub const RPC_C_MQ_PERMANENT: ::DWORD = 0x0001; 42 pub const RPC_C_MQ_CLEAR_ON_OPEN: ::DWORD = 0x0002; 43 pub const RPC_C_MQ_USE_EXISTING_SECURITY: ::DWORD = 0x0004; 44 pub const RPC_C_MQ_AUTHN_LEVEL_NONE: ::DWORD = 0x0000; 45 pub const RPC_C_MQ_AUTHN_LEVEL_PKT_INTEGRITY: ::DWORD = 0x0008; 46 pub const RPC_C_MQ_AUTHN_LEVEL_PKT_PRIVACY: ::DWORD = 0x0010; 47 pub const RPC_C_OPT_MQ_DELIVERY: ::DWORD = 1; 48 pub const RPC_C_OPT_MQ_PRIORITY: ::DWORD = 2; 49 pub const RPC_C_OPT_MQ_JOURNAL: ::DWORD = 3; 50 pub const RPC_C_OPT_MQ_ACKNOWLEDGE: ::DWORD = 4; 51 pub const RPC_C_OPT_MQ_AUTHN_SERVICE: ::DWORD = 5; 52 pub const RPC_C_OPT_MQ_AUTHN_LEVEL: ::DWORD = 6; 53 pub const RPC_C_OPT_MQ_TIME_TO_REACH_QUEUE: ::DWORD = 7; 54 pub const RPC_C_OPT_MQ_TIME_TO_BE_RECEIVED: ::DWORD = 8; 55 pub const RPC_C_OPT_BINDING_NONCAUSAL: ::DWORD = 9; 56 pub const RPC_C_OPT_SECURITY_CALLBACK: ::DWORD = 10; 57 pub const RPC_C_OPT_UNIQUE_BINDING: ::DWORD = 11; 58 pub const RPC_C_OPT_CALL_TIMEOUT: ::DWORD = 12; 59 pub const RPC_C_OPT_DONT_LINGER: ::DWORD = 13; 60 pub const RPC_C_OPT_TRUST_PEER: ::DWORD = 14; 61 pub const RPC_C_OPT_ASYNC_BLOCK: ::DWORD = 15; 62 pub const RPC_C_OPT_OPTIMIZE_TIME: ::DWORD = 16; 63 pub const RPC_C_OPT_MAX_OPTIONS: ::DWORD = 17; 64 pub const RPC_C_MQ_EXPRESS: ::DWORD = 0; 65 pub const RPC_C_MQ_RECOVERABLE: ::DWORD = 1; 66 pub const RPC_C_MQ_JOURNAL_NONE: ::DWORD = 0; 67 pub const RPC_C_MQ_JOURNAL_DEADLETTER: ::DWORD = 1; 68 pub const RPC_C_MQ_JOURNAL_ALWAYS: ::DWORD = 2; 69 pub const RPC_C_FULL_CERT_CHAIN: ::DWORD = 0x0001; 70 STRUCT!{struct RPC_PROTSEQ_VECTORA { 71 Count: ::c_uint, 72 Protseq: [*mut ::c_uchar; 1], 73 }} 74 STRUCT!{struct RPC_PROTSEQ_VECTORW { 75 Count: ::c_uint, 76 Protseq: [*mut ::c_ushort; 1], 77 }} 78 STRUCT!{struct RPC_POLICY { 79 Length: ::c_uint, 80 EndpointFlags: ::c_ulong, 81 NICFlags: ::c_ulong, 82 }} 83 pub type PRPC_POLICY = *mut RPC_POLICY; 84 pub type RPC_OBJECT_INQ_FN = Option<unsafe extern "system" fn( 85 ObjectUuid: *mut UUID, TypeUuid: *mut UUID, Status: *mut ::RPC_STATUS, 86 )>; 87 pub type RPC_IF_CALLBACK_FN = Option<unsafe extern "system" fn( 88 InterfaceUuid: RPC_IF_HANDLE, Context: *mut ::c_void, 89 ) -> ::RPC_STATUS>; 90 pub type RPC_SECURITY_CALLBACK_FN = Option<unsafe extern "system" fn(Context: *mut ::c_void)>; 91 pub type RPC_MGR_EPV = ::c_void; 92 STRUCT!{struct RPC_STATS_VECTOR { 93 Count: ::c_uint, 94 Stats: [::c_ulong; 1], 95 }} 96 pub const RPC_C_STATS_CALLS_IN: ::c_ulong = 0; 97 pub const RPC_C_STATS_CALLS_OUT: ::c_ulong = 1; 98 pub const RPC_C_STATS_PKTS_IN: ::c_ulong = 2; 99 pub const RPC_C_STATS_PKTS_OUT: ::c_ulong = 3; 100 STRUCT!{struct RPC_IF_ID_VECTOR { 101 Count: ::c_ulong, 102 IfId: [*mut RPC_IF_ID; 1], 103 }} 104 pub type RPC_AUTH_IDENTITY_HANDLE = *mut ::c_void; 105 pub type RPC_AUTHZ_HANDLE = *mut ::c_void; 106 pub const RPC_C_AUTHN_LEVEL_DEFAULT: ::DWORD = 0; 107 pub const RPC_C_AUTHN_LEVEL_NONE: ::DWORD = 1; 108 pub const RPC_C_AUTHN_LEVEL_CONNECT: ::DWORD = 2; 109 pub const RPC_C_AUTHN_LEVEL_CALL: ::DWORD = 3; 110 pub const RPC_C_AUTHN_LEVEL_PKT: ::DWORD = 4; 111 pub const RPC_C_AUTHN_LEVEL_PKT_INTEGRITY: ::DWORD = 5; 112 pub const RPC_C_AUTHN_LEVEL_PKT_PRIVACY: ::DWORD = 6; 113 pub const RPC_C_IMP_LEVEL_DEFAULT: ::DWORD = 0; 114 pub const RPC_C_IMP_LEVEL_ANONYMOUS: ::DWORD = 1; 115 pub const RPC_C_IMP_LEVEL_IDENTIFY: ::DWORD = 2; 116 pub const RPC_C_IMP_LEVEL_IMPERSONATE: ::DWORD = 3; 117 pub const RPC_C_IMP_LEVEL_DELEGATE: ::DWORD = 4; 118 pub const RPC_C_QOS_IDENTITY_STATIC: ::DWORD = 0; 119 pub const RPC_C_QOS_IDENTITY_DYNAMIC: ::DWORD = 1; 120 pub const RPC_C_QOS_CAPABILITIES_DEFAULT: ::DWORD = 0x0; 121 pub const RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH: ::DWORD = 0x1; 122 pub const RPC_C_QOS_CAPABILITIES_MAKE_FULLSIC: ::DWORD = 0x2; 123 pub const RPC_C_QOS_CAPABILITIES_ANY_AUTHORITY: ::DWORD = 0x4; 124 pub const RPC_C_QOS_CAPABILITIES_IGNORE_DELEGATE_FAILURE: ::DWORD = 0x8; 125 pub const RPC_C_QOS_CAPABILITIES_LOCAL_MA_HINT: ::DWORD = 0x10; 126 pub const RPC_C_QOS_CAPABILITIES_SCHANNEL_FULL_AUTH_IDENTITY: ::DWORD = 0x20; 127 pub const RPC_C_PROTECT_LEVEL_DEFAULT: ::DWORD = RPC_C_AUTHN_LEVEL_DEFAULT; 128 pub const RPC_C_PROTECT_LEVEL_NONE: ::DWORD = RPC_C_AUTHN_LEVEL_NONE; 129 pub const RPC_C_PROTECT_LEVEL_CONNECT: ::DWORD = RPC_C_AUTHN_LEVEL_CONNECT; 130 pub const RPC_C_PROTECT_LEVEL_CALL: ::DWORD = RPC_C_AUTHN_LEVEL_CALL; 131 pub const RPC_C_PROTECT_LEVEL_PKT: ::DWORD = RPC_C_AUTHN_LEVEL_PKT; 132 pub const RPC_C_PROTECT_LEVEL_PKT_INTEGRITY: ::DWORD = RPC_C_AUTHN_LEVEL_PKT_INTEGRITY; 133 pub const RPC_C_PROTECT_LEVEL_PKT_PRIVACY: ::DWORD = RPC_C_AUTHN_LEVEL_PKT_PRIVACY; 134 pub const RPC_C_AUTHN_NONE: ::DWORD = 0; 135 pub const RPC_C_AUTHN_DCE_PRIVATE: ::DWORD = 1; 136 pub const RPC_C_AUTHN_DCE_PUBLIC: ::DWORD = 2; 137 pub const RPC_C_AUTHN_DEC_PUBLIC: ::DWORD = 4; 138 pub const RPC_C_AUTHN_GSS_NEGOTIATE: ::DWORD = 9; 139 pub const RPC_C_AUTHN_WINNT: ::DWORD = 10; 140 pub const RPC_C_AUTHN_GSS_SCHANNEL: ::DWORD = 14; 141 pub const RPC_C_AUTHN_GSS_KERBEROS: ::DWORD = 16; 142 pub const RPC_C_AUTHN_DPA: ::DWORD = 17; 143 pub const RPC_C_AUTHN_MSN: ::DWORD = 18; 144 pub const RPC_C_AUTHN_DIGEST: ::DWORD = 21; 145 pub const RPC_C_AUTHN_KERNEL: ::DWORD = 20; 146 pub const RPC_C_AUTHN_NEGO_EXTENDER: ::DWORD = 30; 147 pub const RPC_C_AUTHN_PKU2U: ::DWORD = 31; 148 pub const RPC_C_AUTHN_LIVE_SSP: ::DWORD = 32; 149 pub const RPC_C_AUTHN_LIVEXP_SSP: ::DWORD = 35; 150 pub const RPC_C_AUTHN_MSONLINE: ::DWORD = 82; 151 pub const RPC_C_AUTHN_MQ: ::DWORD = 100; 152 pub const RPC_C_AUTHN_DEFAULT: ::DWORD = 0xFFFFFFFF; 153 pub const RPC_C_NO_CREDENTIALS: ::DWORD = 0xFFFFFFFF; 154 pub const RPC_C_SECURITY_QOS_VERSION: ::DWORD = 1; 155 pub const RPC_C_SECURITY_QOS_VERSION_1: ::DWORD = 1; 156 STRUCT!{struct RPC_SECURITY_QOS { 157 Version: ::c_ulong, 158 Capabilities: ::c_ulong, 159 IdentityTracking: ::c_ulong, 160 ImpersonationType: ::c_ulong, 161 }} 162 pub type PRPC_SECURITY_QOS = *mut RPC_SECURITY_QOS; 163 STRUCT!{struct SEC_WINNT_AUTH_IDENTITY_W { 164 User: *mut ::c_ushort, 165 UserLength: ::c_ulong, 166 Domain: *mut ::c_ushort, 167 DomainLength: ::c_ulong, 168 Password: *mut ::c_ushort, 169 PasswordLength: ::c_ulong, 170 Flags: ::c_ulong, 171 }} 172 pub type PSEC_WINNT_AUTH_IDENTITY_W = *mut SEC_WINNT_AUTH_IDENTITY_W; 173 STRUCT!{struct SEC_WINNT_AUTH_IDENTITY_A { 174 User: *mut ::c_uchar, 175 UserLength: ::c_ulong, 176 Domain: *mut ::c_uchar, 177 DomainLength: ::c_ulong, 178 Password: *mut ::c_uchar, 179 PasswordLength: ::c_ulong, 180 Flags: ::c_ulong, 181 }} 182 pub type PSEC_WINNT_AUTH_IDENTITY_A = *mut SEC_WINNT_AUTH_IDENTITY_A; 183 pub const RPC_C_AUTHN_INFO_TYPE_HTTP: ::c_ulong = 1; 184 pub const RPC_C_HTTP_AUTHN_TARGET_SERVER: ::c_ulong = 1; 185 pub const RPC_C_HTTP_AUTHN_TARGET_PROXY: ::c_ulong = 2; 186 pub const RPC_C_HTTP_AUTHN_SCHEME_BASIC: ::c_ulong = 0x00000001; 187 pub const RPC_C_HTTP_AUTHN_SCHEME_NTLM: ::c_ulong = 0x00000002; 188 pub const RPC_C_HTTP_AUTHN_SCHEME_PASSPORT: ::c_ulong = 0x00000004; 189 pub const RPC_C_HTTP_AUTHN_SCHEME_DIGEST: ::c_ulong = 0x00000008; 190 pub const RPC_C_HTTP_AUTHN_SCHEME_NEGOTIATE: ::c_ulong = 0x00000010; 191 pub const RPC_C_HTTP_AUTHN_SCHEME_CERT: ::c_ulong = 0x00010000; 192 pub const RPC_C_HTTP_FLAG_USE_SSL: ::c_ulong = 1; 193 pub const RPC_C_HTTP_FLAG_USE_FIRST_AUTH_SCHEME: ::c_ulong = 2; 194 pub const RPC_C_HTTP_FLAG_IGNORE_CERT_CN_INVALID: ::c_ulong = 8; 195 pub const RPC_C_HTTP_FLAG_ENABLE_CERT_REVOCATION_CHECK: ::c_ulong = 16; 196 STRUCT!{struct RPC_HTTP_TRANSPORT_CREDENTIALS_W { 197 TransportCredentials: *mut SEC_WINNT_AUTH_IDENTITY_W, 198 Flags: ::c_ulong, 199 AuthenticationTarget: ::c_ulong, 200 NumberOfAuthnSchemes: ::c_ulong, 201 AuthnSchemes: *mut ::c_ulong, 202 ServerCertificateSubject: *mut ::c_ushort, 203 }} 204 pub type PRPC_HTTP_TRANSPORT_CREDENTIALS_W = *mut RPC_HTTP_TRANSPORT_CREDENTIALS_W; 205 STRUCT!{struct RPC_HTTP_TRANSPORT_CREDENTIALS_A { 206 TransportCredentials: *mut SEC_WINNT_AUTH_IDENTITY_A, 207 Flags: ::c_ulong, 208 AuthenticationTarget: ::c_ulong, 209 NumberOfAuthnSchemes: ::c_ulong, 210 AuthnSchemes: *mut ::c_ulong, 211 ServerCertificateSubject: *mut ::c_uchar, 212 }} 213 pub type PRPC_HTTP_TRANSPORT_CREDENTIALS_A = *mut RPC_HTTP_TRANSPORT_CREDENTIALS_A; 214 STRUCT!{struct RPC_HTTP_TRANSPORT_CREDENTIALS_V2_W { 215 TransportCredentials: *mut SEC_WINNT_AUTH_IDENTITY_W, 216 Flags: ::c_ulong, 217 AuthenticationTarget: ::c_ulong, 218 NumberOfAuthnSchemes: ::c_ulong, 219 AuthnSchemes: *mut ::c_ulong, 220 ServerCertificateSubject: *mut ::c_ushort, 221 ProxyCredentials: *mut SEC_WINNT_AUTH_IDENTITY_W, 222 NumberOfProxyAuthnSchemes: ::c_ulong, 223 ProxyAuthnSchemes: *mut ::c_ulong, 224 }} 225 pub type PRPC_HTTP_TRANSPORT_CREDENTIALS_V2_W = *mut RPC_HTTP_TRANSPORT_CREDENTIALS_V2_W; 226 STRUCT!{struct RPC_HTTP_TRANSPORT_CREDENTIALS_V2_A { 227 TransportCredentials: *mut SEC_WINNT_AUTH_IDENTITY_A, 228 Flags: ::c_ulong, 229 AuthenticationTarget: ::c_ulong, 230 NumberOfAuthnSchemes: ::c_ulong, 231 AuthnSchemes: *mut ::c_ulong, 232 ServerCertificateSubject: *mut ::c_uchar, 233 ProxyCredentials: *mut SEC_WINNT_AUTH_IDENTITY_A, 234 NumberOfProxyAuthnSchemes: ::c_ulong, 235 ProxyAuthnSchemes: *mut ::c_ulong, 236 }} 237 pub type PRPC_HTTP_TRANSPORT_CREDENTIALS_V2_A = *mut RPC_HTTP_TRANSPORT_CREDENTIALS_V2_A; 238 STRUCT!{struct RPC_HTTP_TRANSPORT_CREDENTIALS_V3_W { 239 TransportCredentials: RPC_AUTH_IDENTITY_HANDLE, 240 Flags: ::c_ulong, 241 AuthenticationTarget: ::c_ulong, 242 NumberOfAuthnSchemes: ::c_ulong, 243 AuthnSchemes: *mut ::c_ulong, 244 ServerCertificateSubject: *mut ::c_ushort, 245 ProxyCredentials: *mut RPC_AUTH_IDENTITY_HANDLE, 246 NumberOfProxyAuthnSchemes: ::c_ulong, 247 ProxyAuthnSchemes: *mut ::c_ulong, 248 }} 249 pub type PRPC_HTTP_TRANSPORT_CREDENTIALS_V3_W = *mut RPC_HTTP_TRANSPORT_CREDENTIALS_V3_W; 250 STRUCT!{struct RPC_HTTP_TRANSPORT_CREDENTIALS_V3_A { 251 TransportCredentials: RPC_AUTH_IDENTITY_HANDLE, 252 Flags: ::c_ulong, 253 AuthenticationTarget: ::c_ulong, 254 NumberOfAuthnSchemes: ::c_ulong, 255 AuthnSchemes: *mut ::c_ulong, 256 ServerCertificateSubject: *mut ::c_uchar, 257 ProxyCredentials: *mut RPC_AUTH_IDENTITY_HANDLE, 258 NumberOfProxyAuthnSchemes: ::c_ulong, 259 ProxyAuthnSchemes: *mut ::c_ulong, 260 }} 261 pub type PRPC_HTTP_TRANSPORT_CREDENTIALS_V3_A = *mut RPC_HTTP_TRANSPORT_CREDENTIALS_V3_A; 262 STRUCT!{struct RPC_SECURITY_QOS_V2_W_union { 263 HttpCredentials: *mut RPC_HTTP_TRANSPORT_CREDENTIALS_W, 264 }} 265 STRUCT!{struct RPC_SECURITY_QOS_V2_W { 266 Version: ::c_ulong, 267 Capabilities: ::c_ulong, 268 IdentityTracking: ::c_ulong, 269 ImpersonationType: ::c_ulong, 270 AdditionalSecurityInfoType: ::c_ulong, 271 u: RPC_SECURITY_QOS_V2_W_union, 272 }} 273 pub type PRPC_SECURITY_QOS_V2_W = *mut RPC_SECURITY_QOS_V2_W; 274 STRUCT!{struct RPC_SECURITY_QOS_V2_A_union { 275 HttpCredentials: *mut RPC_HTTP_TRANSPORT_CREDENTIALS_A, 276 }} 277 STRUCT!{struct RPC_SECURITY_QOS_V2_A { 278 Version: ::c_ulong, 279 Capabilities: ::c_ulong, 280 IdentityTracking: ::c_ulong, 281 ImpersonationType: ::c_ulong, 282 AdditionalSecurityInfoType: ::c_ulong, 283 u: RPC_SECURITY_QOS_V2_A_union, 284 }} 285 pub type PRPC_SECURITY_QOS_V2_A = *mut RPC_SECURITY_QOS_V2_A; 286 STRUCT!{struct RPC_SECURITY_QOS_V3_W_union { 287 HttpCredentials: *mut RPC_HTTP_TRANSPORT_CREDENTIALS_W, 288 }} 289 STRUCT!{struct RPC_SECURITY_QOS_V3_W { 290 Version: ::c_ulong, 291 Capabilities: ::c_ulong, 292 IdentityTracking: ::c_ulong, 293 ImpersonationType: ::c_ulong, 294 AdditionalSecurityInfoType: ::c_ulong, 295 u: RPC_SECURITY_QOS_V3_W_union, 296 Sid: *mut ::c_void, 297 }} 298 pub type PRPC_SECURITY_QOS_V3_W = *mut RPC_SECURITY_QOS_V3_W; 299 STRUCT!{struct RPC_SECURITY_QOS_V3_A_union { 300 HttpCredentials: *mut RPC_HTTP_TRANSPORT_CREDENTIALS_A, 301 }} 302 STRUCT!{struct RPC_SECURITY_QOS_V3_A { 303 Version: ::c_ulong, 304 Capabilities: ::c_ulong, 305 IdentityTracking: ::c_ulong, 306 ImpersonationType: ::c_ulong, 307 AdditionalSecurityInfoType: ::c_ulong, 308 u: RPC_SECURITY_QOS_V3_A_union, 309 Sid: *mut ::c_void, 310 }} 311 pub type PRPC_SECURITY_QOS_V3_A = *mut RPC_SECURITY_QOS_V3_A; 312 STRUCT!{struct RPC_SECURITY_QOS_V4_W_union { 313 HttpCredentials: *mut RPC_HTTP_TRANSPORT_CREDENTIALS_W, 314 }} 315 STRUCT!{struct RPC_SECURITY_QOS_V4_W { 316 Version: ::c_ulong, 317 Capabilities: ::c_ulong, 318 IdentityTracking: ::c_ulong, 319 ImpersonationType: ::c_ulong, 320 AdditionalSecurityInfoType: ::c_ulong, 321 u: RPC_SECURITY_QOS_V4_W_union, 322 Sid: *mut ::c_void, 323 EffectiveOnly: ::c_uint, 324 }} 325 pub type PRPC_SECURITY_QOS_V4_W = *mut RPC_SECURITY_QOS_V4_W; 326 STRUCT!{struct RPC_SECURITY_QOS_V4_A_union { 327 HttpCredentials: *mut RPC_HTTP_TRANSPORT_CREDENTIALS_A, 328 }} 329 STRUCT!{struct RPC_SECURITY_QOS_V4_A { 330 Version: ::c_ulong, 331 Capabilities: ::c_ulong, 332 IdentityTracking: ::c_ulong, 333 ImpersonationType: ::c_ulong, 334 AdditionalSecurityInfoType: ::c_ulong, 335 u: RPC_SECURITY_QOS_V4_A_union, 336 Sid: *mut ::c_void, 337 EffectiveOnly: ::c_uint, 338 }} 339 pub type PRPC_SECURITY_QOS_V4_A = *mut RPC_SECURITY_QOS_V4_A; 340 STRUCT!{struct RPC_SECURITY_QOS_V5_W_union { 341 HttpCredentials: *mut RPC_HTTP_TRANSPORT_CREDENTIALS_W, 342 }} 343 STRUCT!{struct RPC_SECURITY_QOS_V5_W { 344 Version: ::c_ulong, 345 Capabilities: ::c_ulong, 346 IdentityTracking: ::c_ulong, 347 ImpersonationType: ::c_ulong, 348 AdditionalSecurityInfoType: ::c_ulong, 349 u: RPC_SECURITY_QOS_V5_W_union, 350 Sid: *mut ::c_void, 351 EffectiveOnly: ::c_uint, 352 ServerSecurityDescriptor: *mut ::c_void, 353 }} 354 pub type PRPC_SECURITY_QOS_V5_W = *mut RPC_SECURITY_QOS_V5_W; 355 STRUCT!{struct RPC_SECURITY_QOS_V5_A_union { 356 HttpCredentials: *mut RPC_HTTP_TRANSPORT_CREDENTIALS_A, 357 }} 358 STRUCT!{struct RPC_SECURITY_QOS_V5_A { 359 Version: ::c_ulong, 360 Capabilities: ::c_ulong, 361 IdentityTracking: ::c_ulong, 362 ImpersonationType: ::c_ulong, 363 AdditionalSecurityInfoType: ::c_ulong, 364 u: RPC_SECURITY_QOS_V5_A_union, 365 Sid: *mut ::c_void, 366 EffectiveOnly: ::c_uint, 367 ServerSecurityDescriptor: *mut ::c_void, 368 }} 369 pub type PRPC_SECURITY_QOS_V5_A = *mut RPC_SECURITY_QOS_V5_A; 370 pub const RPC_PROTSEQ_TCP: ::c_ulong = 0x1; 371 pub const RPC_PROTSEQ_NMP: ::c_ulong = 0x2; 372 pub const RPC_PROTSEQ_LRPC: ::c_ulong = 0x3; 373 pub const RPC_PROTSEQ_HTTP: ::c_ulong = 0x4; 374 pub const RPC_BHT_OBJECT_UUID_VALID: ::c_ulong = 0x1; 375 pub const RPC_BHO_NONCAUSAL: ::c_ulong = 0x1; 376 pub const RPC_BHO_DONTLINGER: ::c_ulong = 0x2; 377 pub const RPC_BHO_EXCLUSIVE_AND_GUARANTEED: ::c_ulong = 0x4; 378 STRUCT!{struct RPC_BINDING_HANDLE_TEMPLATE_V1_W_union { 379 Reserved: *mut ::c_ushort, 380 }} 381 STRUCT!{struct RPC_BINDING_HANDLE_TEMPLATE_V1_W { 382 Version: ::c_ulong, 383 Flags: ::c_ulong, 384 ProtocolSequence: ::c_ulong, 385 NetworkAddress: *mut ::c_ushort, 386 StringEndpoint: *mut ::c_ushort, 387 u1: RPC_BINDING_HANDLE_TEMPLATE_V1_W_union, 388 ObjectUuid: UUID, 389 }} 390 pub type PRPC_BINDING_HANDLE_TEMPLATE_V1_W = *mut RPC_BINDING_HANDLE_TEMPLATE_V1_W; 391 STRUCT!{struct RPC_BINDING_HANDLE_TEMPLATE_V1_A_union { 392 Reserved: *mut ::c_uchar, 393 }} 394 STRUCT!{struct RPC_BINDING_HANDLE_TEMPLATE_V1_A { 395 Version: ::c_ulong, 396 Flags: ::c_ulong, 397 ProtocolSequence: ::c_ulong, 398 NetworkAddress: *mut ::c_uchar, 399 StringEndpoint: *mut ::c_uchar, 400 u1: RPC_BINDING_HANDLE_TEMPLATE_V1_A_union, 401 ObjectUuid: UUID, 402 }} 403 pub type PRPC_BINDING_HANDLE_TEMPLATE_V1_A = *mut RPC_BINDING_HANDLE_TEMPLATE_V1_A; 404 STRUCT!{struct RPC_BINDING_HANDLE_SECURITY_V1_W { 405 Version: ::c_ulong, 406 ServerPrincName: *mut ::c_ushort, 407 AuthnLevel: ::c_ulong, 408 AuthnSvc: ::c_ulong, 409 AuthIdentity: *mut SEC_WINNT_AUTH_IDENTITY_W, 410 SecurityQos: *mut RPC_SECURITY_QOS, 411 }} 412 pub type PRPC_BINDING_HANDLE_SECURITY_V1_W = *mut RPC_BINDING_HANDLE_SECURITY_V1_W; 413 STRUCT!{struct RPC_BINDING_HANDLE_SECURITY_V1_A { 414 Version: ::c_ulong, 415 ServerPrincName: *mut ::c_uchar, 416 AuthnLevel: ::c_ulong, 417 AuthnSvc: ::c_ulong, 418 AuthIdentity: *mut SEC_WINNT_AUTH_IDENTITY_A, 419 SecurityQos: *mut RPC_SECURITY_QOS, 420 }} 421 pub type PRPC_BINDING_HANDLE_SECURITY_V1_A = *mut RPC_BINDING_HANDLE_SECURITY_V1_A; 422 STRUCT!{struct RPC_BINDING_HANDLE_OPTIONS_V1 { 423 Version: ::c_ulong, 424 Flags: ::c_ulong, 425 ComTimeout: ::c_ulong, 426 CallTimeout: ::c_ulong, 427 }} 428 pub type PRPC_BINDING_HANDLE_OPTIONS_V1 = *mut RPC_BINDING_HANDLE_OPTIONS_V1; 429 ENUM!{enum RPC_HTTP_REDIRECTOR_STAGE { 430 RPCHTTP_RS_REDIRECT = 1, 431 RPCHTTP_RS_ACCESS_1, 432 RPCHTTP_RS_SESSION, 433 RPCHTTP_RS_ACCESS_2, 434 RPCHTTP_RS_INTERFACE, 435 }} 436 pub type RPC_NEW_HTTP_PROXY_CHANNEL = Option<unsafe extern "system" fn( 437 RedirectorStage: RPC_HTTP_REDIRECTOR_STAGE, ServerName: RPC_WSTR, ServerPort: RPC_WSTR, 438 RemoteUser: RPC_WSTR, AuthType: RPC_WSTR, ResourceUuid: *mut ::c_void, 439 SessionId: *mut ::c_void, Interface: *mut ::c_void, Reserved: *mut ::c_void, Flags: ::c_ulong, 440 NewServerName: *mut RPC_WSTR, NewServerPort: *mut RPC_WSTR, 441 ) -> ::RPC_STATUS>; 442 pub type RPC_HTTP_PROXY_FREE_STRING = Option<unsafe extern "system" fn(String: RPC_WSTR)>; 443 pub const RPC_C_AUTHZ_NONE: ::DWORD = 0; 444 pub const RPC_C_AUTHZ_NAME: ::DWORD = 1; 445 pub const RPC_C_AUTHZ_DCE: ::DWORD = 2; 446 pub const RPC_C_AUTHZ_DEFAULT: ::DWORD = 0xffffffff; 447 pub type RPC_AUTH_KEY_RETRIEVAL_FN = Option<unsafe extern "system" fn( 448 Arg: *mut ::c_void, ServerPrincName: RPC_WSTR, KeyVer: ::c_ulong, Key: *mut *mut ::c_void, 449 Status: *mut ::RPC_STATUS, 450 )>; 451 STRUCT!{struct RPC_CLIENT_INFORMATION1 { 452 UserName: *mut ::c_uchar, 453 ComputerName: *mut ::c_uchar, 454 Privilege: ::c_ushort, 455 AuthFlags: ::c_ulong, 456 }} 457 pub type PRPC_CLIENT_INFORMATION1 = *mut RPC_CLIENT_INFORMATION1; 458 pub type RPC_EP_INQ_HANDLE = *mut ::I_RPC_HANDLE; 459 pub const RPC_C_EP_ALL_ELTS: ::c_ulong = 0; 460 pub const RPC_C_EP_MATCH_BY_IF: ::c_ulong = 1; 461 pub const RPC_C_EP_MATCH_BY_OBJ: ::c_ulong = 2; 462 pub const RPC_C_EP_MATCH_BY_BOTH: ::c_ulong = 3; 463 pub const RPC_C_VERS_ALL: ::c_ulong = 1; 464 pub const RPC_C_VERS_COMPATIBLE: ::c_ulong = 2; 465 pub const RPC_C_VERS_EXACT: ::c_ulong = 3; 466 pub const RPC_C_VERS_MAJOR_ONLY: ::c_ulong = 4; 467 pub const RPC_C_VERS_UPTO: ::c_ulong = 5; 468 pub type RPC_MGMT_AUTHORIZATION_FN = Option<unsafe extern "system" fn( 469 ClientBinding: RPC_BINDING_HANDLE, RequestedMgmtOperation: ::c_ulong, 470 Status: *mut ::RPC_STATUS, 471 ) -> ::c_int>; 472 pub const RPC_C_MGMT_INQ_IF_IDS: ::c_ulong = 0; 473 pub const RPC_C_MGMT_INQ_PRINC_NAME: ::c_ulong = 1; 474 pub const RPC_C_MGMT_INQ_STATS: ::c_ulong = 2; 475 pub const RPC_C_MGMT_IS_SERVER_LISTEN: ::c_ulong = 3; 476 pub const RPC_C_MGMT_STOP_SERVER_LISTEN: ::c_ulong = 4; 477 pub const RPC_IF_AUTOLISTEN: ::c_uint = 0x0001; 478 pub const RPC_IF_OLE: ::c_uint = 0x0002; 479 pub const RPC_IF_ALLOW_UNKNOWN_AUTHORITY: ::c_uint = 0x0004; 480 pub const RPC_IF_ALLOW_SECURE_ONLY: ::c_uint = 0x0008; 481 pub const RPC_IF_ALLOW_CALLBACKS_WITH_NO_AUTH: ::c_uint = 0x0010; 482 pub const RPC_IF_ALLOW_LOCAL_ONLY: ::c_uint = 0x0020; 483 pub const RPC_IF_SEC_NO_CACHE: ::c_uint = 0x0040; 484 pub const RPC_IF_SEC_CACHE_PER_PROC: ::c_uint = 0x0080; 485 pub const RPC_IF_ASYNC_CALLBACK: ::c_uint = 0x0100; 486 pub const RPC_FW_IF_FLAG_DCOM: ::c_uint = 0x0001; 487 pub type RPC_INTERFACE_GROUP = *mut ::c_void; 488 pub type PRPC_INTERFACE_GROUP = *mut *mut ::c_void; 489 STRUCT!{struct RPC_ENDPOINT_TEMPLATEW { 490 Version: ::c_ulong, 491 ProtSeq: RPC_WSTR, 492 Endpoint: RPC_WSTR, 493 SecurityDescriptor: *mut ::c_void, 494 Backlog: ::c_ulong, 495 }} 496 pub type PRPC_ENDPOINT_TEMPLATEW = *mut RPC_ENDPOINT_TEMPLATEW; 497 STRUCT!{struct RPC_ENDPOINT_TEMPLATEA { 498 Version: ::c_ulong, 499 ProtSeq: RPC_CSTR, 500 Endpoint: RPC_CSTR, 501 SecurityDescriptor: *mut ::c_void, 502 Backlog: ::c_ulong, 503 }} 504 pub type PRPC_ENDPOINT_TEMPLATEA = *mut RPC_ENDPOINT_TEMPLATEA; 505 STRUCT!{struct RPC_INTERFACE_TEMPLATEA { 506 Version: ::c_ulong, 507 IfSpec: RPC_IF_HANDLE, 508 MgrTypeUuid: *mut UUID, 509 MgrEpv: *mut RPC_MGR_EPV, 510 Flags: ::c_uint, 511 MaxCalls: ::c_uint, 512 MaxRpcSize: ::c_uint, 513 IfCallback: *mut RPC_IF_CALLBACK_FN, 514 UuidVector: *mut UUID_VECTOR, 515 Annotation: RPC_CSTR, 516 SecurityDescriptor: *mut ::c_void, 517 }} 518 pub type PRPC_INTERFACE_TEMPLATEA = *mut RPC_INTERFACE_TEMPLATEA; 519 STRUCT!{struct RPC_INTERFACE_TEMPLATEW { 520 Version: ::c_ulong, 521 IfSpec: RPC_IF_HANDLE, 522 MgrTypeUuid: *mut UUID, 523 MgrEpv: *mut RPC_MGR_EPV, 524 Flags: ::c_uint, 525 MaxCalls: ::c_uint, 526 MaxRpcSize: ::c_uint, 527 IfCallback: *mut RPC_IF_CALLBACK_FN, 528 UuidVector: *mut UUID_VECTOR, 529 Annotation: RPC_WSTR, 530 SecurityDescriptor: *mut ::c_void, 531 }} 532 pub type PRPC_INTERFACE_TEMPLATEW = *mut RPC_INTERFACE_TEMPLATEW; 533 pub type RPC_INTERFACE_GROUP_IDLE_CALLBACK_FN = Option<unsafe extern "system" fn( 534 IfGroup: RPC_INTERFACE_GROUP, IdleCallbackContext: *mut ::c_void, IsGroupIdle: ::c_ulong, 535 )>; 536