1 /** 2 * Windows API header module 3 * 4 * Translated from MinGW Windows headers 5 * 6 * Authors: Stewart Gordon 7 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) 8 * Source: $(DRUNTIMESRC core/sys/windows/_winldap.d) 9 */ 10 /// Automatically imported and edited from the druntime module 11 /// core.sys.windows.winldap for the auto-generated win32 package. 12 module win32.winldap; 13 //version (Windows): 14 @system: 15 16 version (ANSI) {} else version = Unicode; 17 18 /* Comment from MinGW 19 winldap.h - Header file for the Windows LDAP API 20 21 Written by Filip Navara <xnavara@volny.cz> 22 23 References: 24 The C LDAP Application Program Interface 25 http://www.watersprings.org/pub/id/draft-ietf-ldapext-ldap-c-api-05.txt 26 27 Lightweight Directory Access Protocol Reference 28 http://msdn.microsoft.com/library/en-us/netdir/ldap/ldap_reference.asp 29 30 This library is distributed in the hope that it will be useful, 31 but WITHOUT ANY WARRANTY; without even the implied warranty of 32 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 33 */ 34 35 import win32.schannel, win32.winber; 36 import win32.wincrypt, win32.windef; 37 38 //align(4): 39 40 enum { 41 LDAP_VERSION1 = 1, 42 LDAP_VERSION2 = 2, 43 LDAP_VERSION3 = 3, 44 LDAP_VERSION = LDAP_VERSION2, 45 LDAP_VERSION_MIN = LDAP_VERSION2, 46 LDAP_VERSION_MAX = LDAP_VERSION3 47 } 48 49 /* MinGW defines ANSI and Unicode versions as LDAP_VENDOR_NAME and 50 * LDAP_VENDOR_NAME_W respectively; similarly with other string constants 51 * defined in this module. 52 */ 53 const TCHAR[] LDAP_VENDOR_NAME = "Microsoft Corporation."; 54 55 enum LDAP_API_VERSION = 2004; 56 enum LDAP_VENDOR_VERSION = 510; 57 enum LDAP_API_INFO_VERSION = 1; 58 enum LDAP_FEATURE_INFO_VERSION = 1; 59 60 enum { 61 LDAP_SUCCESS = 0x00, 62 LDAP_OPT_SUCCESS = LDAP_SUCCESS, 63 LDAP_OPERATIONS_ERROR, 64 LDAP_PROTOCOL_ERROR, 65 LDAP_TIMELIMIT_EXCEEDED, 66 LDAP_SIZELIMIT_EXCEEDED, 67 LDAP_COMPARE_FALSE, 68 LDAP_COMPARE_TRUE, 69 LDAP_STRONG_AUTH_NOT_SUPPORTED, 70 LDAP_AUTH_METHOD_NOT_SUPPORTED = LDAP_STRONG_AUTH_NOT_SUPPORTED, 71 LDAP_STRONG_AUTH_REQUIRED, 72 LDAP_REFERRAL_V2, 73 LDAP_PARTIAL_RESULTS = LDAP_REFERRAL_V2, 74 LDAP_REFERRAL, 75 LDAP_ADMIN_LIMIT_EXCEEDED, 76 LDAP_UNAVAILABLE_CRIT_EXTENSION, 77 LDAP_CONFIDENTIALITY_REQUIRED, 78 LDAP_SASL_BIND_IN_PROGRESS, // = 0x0e 79 LDAP_NO_SUCH_ATTRIBUTE = 0x10, 80 LDAP_UNDEFINED_TYPE, 81 LDAP_INAPPROPRIATE_MATCHING, 82 LDAP_CONSTRAINT_VIOLATION, 83 LDAP_TYPE_OR_VALUE_EXISTS, 84 LDAP_ATTRIBUTE_OR_VALUE_EXISTS = LDAP_TYPE_OR_VALUE_EXISTS, 85 LDAP_INVALID_SYNTAX, // = 0x15 86 LDAP_NO_SUCH_OBJECT = 0x20, 87 LDAP_ALIAS_PROBLEM, 88 LDAP_INVALID_DN_SYNTAX, 89 LDAP_IS_LEAF, 90 LDAP_ALIAS_DEREF_PROBLEM, // = 0x24 91 LDAP_INAPPROPRIATE_AUTH = 0x30, 92 LDAP_INVALID_CREDENTIALS, 93 LDAP_INSUFFICIENT_ACCESS, 94 LDAP_INSUFFICIENT_RIGHTS = LDAP_INSUFFICIENT_ACCESS, 95 LDAP_BUSY, 96 LDAP_UNAVAILABLE, 97 LDAP_UNWILLING_TO_PERFORM, 98 LDAP_LOOP_DETECT, // = 0x36 99 LDAP_NAMING_VIOLATION = 0x40, 100 LDAP_OBJECT_CLASS_VIOLATION, 101 LDAP_NOT_ALLOWED_ON_NONLEAF, 102 LDAP_NOT_ALLOWED_ON_RDN, 103 LDAP_ALREADY_EXISTS, 104 LDAP_NO_OBJECT_CLASS_MODS, 105 LDAP_RESULTS_TOO_LARGE, 106 LDAP_AFFECTS_MULTIPLE_DSAS, // = 0x47 107 LDAP_OTHER = 0x50, 108 LDAP_SERVER_DOWN, 109 LDAP_LOCAL_ERROR, 110 LDAP_ENCODING_ERROR, 111 LDAP_DECODING_ERROR, 112 LDAP_TIMEOUT, 113 LDAP_AUTH_UNKNOWN, 114 LDAP_FILTER_ERROR, 115 LDAP_USER_CANCELLED, 116 LDAP_PARAM_ERROR, 117 LDAP_NO_MEMORY, 118 LDAP_CONNECT_ERROR, 119 LDAP_NOT_SUPPORTED, 120 LDAP_CONTROL_NOT_FOUND, 121 LDAP_NO_RESULTS_RETURNED, 122 LDAP_MORE_RESULTS_TO_RETURN, 123 LDAP_CLIENT_LOOP, 124 LDAP_REFERRAL_LIMIT_EXCEEDED // = 0x61 125 } 126 127 enum { 128 LDAP_PORT = 389, 129 LDAP_SSL_PORT = 636, 130 LDAP_GC_PORT = 3268, 131 LDAP_SSL_GC_PORT = 3269 132 } 133 134 enum void* 135 LDAP_OPT_OFF = null, 136 LDAP_OPT_ON = cast(void*) 1; 137 138 enum { 139 LDAP_OPT_API_INFO = 0x00, 140 LDAP_OPT_DESC, 141 LDAP_OPT_DEREF, 142 LDAP_OPT_SIZELIMIT, 143 LDAP_OPT_TIMELIMIT, 144 LDAP_OPT_THREAD_FN_PTRS, 145 LDAP_OPT_REBIND_FN, 146 LDAP_OPT_REBIND_ARG, 147 LDAP_OPT_REFERRALS, 148 LDAP_OPT_RESTART, 149 LDAP_OPT_SSL, 150 LDAP_OPT_TLS = LDAP_OPT_SSL, 151 LDAP_OPT_IO_FN_PTRS, // = 0x0b 152 LDAP_OPT_CACHE_FN_PTRS = 0x0d, 153 LDAP_OPT_CACHE_STRATEGY, 154 LDAP_OPT_CACHE_ENABLE, 155 LDAP_OPT_REFERRAL_HOP_LIMIT, 156 LDAP_OPT_PROTOCOL_VERSION, 157 LDAP_OPT_VERSION = LDAP_OPT_PROTOCOL_VERSION, 158 LDAP_OPT_SERVER_CONTROLS, 159 LDAP_OPT_CLIENT_CONTROLS, // = 0x13 160 LDAP_OPT_API_FEATURE_INFO = 0x15, 161 LDAP_OPT_HOST_NAME = 0x30, 162 LDAP_OPT_ERROR_NUMBER, 163 LDAP_OPT_ERROR_STRING, 164 LDAP_OPT_SERVER_ERROR, 165 LDAP_OPT_SERVER_EXT_ERROR, // = 0x34 166 LDAP_OPT_PING_KEEP_ALIVE = 0x36, 167 LDAP_OPT_PING_WAIT_TIME, 168 LDAP_OPT_PING_LIMIT, // = 0x38 169 LDAP_OPT_DNSDOMAIN_NAME = 0x3b, 170 LDAP_OPT_GETDSNAME_FLAGS = 0x3d, 171 LDAP_OPT_HOST_REACHABLE, 172 LDAP_OPT_PROMPT_CREDENTIALS, 173 LDAP_OPT_TCP_KEEPALIVE, // = 0x40 174 LDAP_OPT_REFERRAL_CALLBACK = 0x70, 175 LDAP_OPT_CLIENT_CERTIFICATE = 0x80, 176 LDAP_OPT_SERVER_CERTIFICATE, // = 0x81 177 LDAP_OPT_AUTO_RECONNECT = 0x91, 178 LDAP_OPT_SSPI_FLAGS, 179 LDAP_OPT_SSL_INFO, 180 LDAP_OPT_TLS_INFO = LDAP_OPT_SSL_INFO, 181 LDAP_OPT_REF_DEREF_CONN_PER_MSG, 182 LDAP_OPT_SIGN, 183 LDAP_OPT_ENCRYPT, 184 LDAP_OPT_SASL_METHOD, 185 LDAP_OPT_AREC_EXCLUSIVE, 186 LDAP_OPT_SECURITY_CONTEXT, 187 LDAP_OPT_ROOTDSE_CACHE // = 0x9a 188 } 189 190 enum { 191 LDAP_DEREF_NEVER, 192 LDAP_DEREF_SEARCHING, 193 LDAP_DEREF_FINDING, 194 LDAP_DEREF_ALWAYS 195 } 196 197 enum LDAP_NO_LIMIT = 0; 198 199 const TCHAR[] LDAP_CONTROL_REFERRALS = "1.2.840.113556.1.4.616"; 200 201 // FIXME: check type (declared with U suffix in MinGW) 202 enum : uint { 203 LDAP_CHASE_SUBORDINATE_REFERRALS = 0x20, 204 LDAP_CHASE_EXTERNAL_REFERRALS = 0x40 205 } 206 207 enum { 208 LDAP_SCOPE_DEFAULT = -1, 209 LDAP_SCOPE_BASE, 210 LDAP_SCOPE_ONELEVEL, 211 LDAP_SCOPE_SUBTREE 212 } 213 214 enum { 215 LDAP_MOD_ADD, 216 LDAP_MOD_DELETE, 217 LDAP_MOD_REPLACE, 218 LDAP_MOD_BVALUES = 0x80 219 } 220 221 enum : int { 222 LDAP_RES_BIND = 0x61, 223 LDAP_RES_SEARCH_ENTRY = 0x64, 224 LDAP_RES_SEARCH_RESULT = 0x65, 225 LDAP_RES_MODIFY = 0x67, 226 LDAP_RES_ADD = 0x69, 227 LDAP_RES_DELETE = 0x6b, 228 LDAP_RES_MODRDN = 0x6d, 229 LDAP_RES_COMPARE = 0x6f, 230 LDAP_RES_SEARCH_REFERENCE = 0x73, 231 LDAP_RES_EXTENDED = 0x78, 232 LDAP_RES_ANY = -1 233 } 234 235 enum { 236 LDAP_MSG_ONE, 237 LDAP_MSG_ALL, 238 LDAP_MSG_RECEIVED 239 } 240 241 const TCHAR[] 242 LDAP_SERVER_SORT_OID = "1.2.840.113556.1.4.473", 243 LDAP_SERVER_RESP_SORT_OID = "1.2.840.113556.1.4.474", 244 LDAP_PAGED_RESULT_OID_STRING = "1.2.840.113556.1.4.319", 245 LDAP_CONTROL_VLVREQUEST = "2.16.840.1.113730.3.4.9", 246 LDAP_CONTROL_VLVRESPONSE = "2.16.840.1.113730.3.4.10", 247 LDAP_START_TLS_OID = "1.3.6.1.4.1.1466.20037", 248 LDAP_TTL_EXTENDED_OP_OID = "1.3.6.1.4.1.1466.101.119.1"; 249 250 enum { 251 LDAP_AUTH_NONE = 0x00U, 252 LDAP_AUTH_SIMPLE = 0x80U, 253 LDAP_AUTH_SASL = 0x83U, 254 LDAP_AUTH_OTHERKIND = 0x86U, 255 LDAP_AUTH_EXTERNAL = LDAP_AUTH_OTHERKIND | 0x0020U, 256 LDAP_AUTH_SICILY = LDAP_AUTH_OTHERKIND | 0x0200U, 257 LDAP_AUTH_NEGOTIATE = LDAP_AUTH_OTHERKIND | 0x0400U, 258 LDAP_AUTH_MSN = LDAP_AUTH_OTHERKIND | 0x0800U, 259 LDAP_AUTH_NTLM = LDAP_AUTH_OTHERKIND | 0x1000U, 260 LDAP_AUTH_DIGEST = LDAP_AUTH_OTHERKIND | 0x4000U, 261 LDAP_AUTH_DPA = LDAP_AUTH_OTHERKIND | 0x2000U, 262 LDAP_AUTH_SSPI = LDAP_AUTH_NEGOTIATE 263 } 264 265 enum { 266 LDAP_FILTER_AND = 0xa0, 267 LDAP_FILTER_OR, 268 LDAP_FILTER_NOT, 269 LDAP_FILTER_EQUALITY, 270 LDAP_FILTER_SUBSTRINGS, 271 LDAP_FILTER_GE, 272 LDAP_FILTER_LE, // = 0xa6 273 LDAP_FILTER_APPROX = 0xa8, 274 LDAP_FILTER_EXTENSIBLE, 275 LDAP_FILTER_PRESENT = 0x87 276 } 277 278 enum { 279 LDAP_SUBSTRING_INITIAL = 0x80, 280 LDAP_SUBSTRING_ANY, 281 LDAP_SUBSTRING_FINAL 282 } 283 284 // should be opaque structure 285 struct LDAP { 286 struct _ld_sp { 287 UINT_PTR sb_sd; 288 UCHAR[(10*ULONG.sizeof)+1] Reserved1; 289 ULONG_PTR sb_naddr; 290 UCHAR[(6*ULONG.sizeof)] Reserved2; 291 } 292 _ld_sp ld_sp; 293 PCHAR ld_host; 294 ULONG ld_version; 295 UCHAR ld_lberoptions; 296 int ld_deref; 297 int ld_timelimit; 298 int ld_sizelimit; 299 int ld_errno; 300 PCHAR ld_matched; 301 PCHAR ld_error; 302 } 303 alias LDAP* PLDAP; 304 305 // should be opaque structure 306 struct LDAPMessage { 307 ULONG lm_msgid; 308 ULONG lm_msgtype; 309 BerElement* lm_ber; 310 LDAPMessage* lm_chain; 311 LDAPMessage* lm_next; 312 ULONG lm_time; 313 } 314 alias LDAPMessage* PLDAPMessage; 315 316 struct LDAP_TIMEVAL { 317 LONG tv_sec; 318 LONG tv_usec; 319 } 320 alias LDAP_TIMEVAL* PLDAP_TIMEVAL; 321 322 struct LDAPAPIInfoA { 323 int ldapai_info_version; 324 int ldapai_api_version; 325 int ldapai_protocol_version; 326 char** ldapai_extensions; 327 char* ldapai_vendor_name; 328 int ldapai_vendor_version; 329 } 330 alias LDAPAPIInfoA* PLDAPAPIInfoA; 331 332 struct LDAPAPIInfoW { 333 int ldapai_info_version; 334 int ldapai_api_version; 335 int ldapai_protocol_version; 336 PWCHAR* ldapai_extensions; 337 PWCHAR ldapai_vendor_name; 338 int ldapai_vendor_version; 339 } 340 alias LDAPAPIInfoW* PLDAPAPIInfoW; 341 342 struct LDAPAPIFeatureInfoA { 343 int ldapaif_info_version; 344 char* ldapaif_name; 345 int ldapaif_version; 346 } 347 alias LDAPAPIFeatureInfoA* PLDAPAPIFeatureInfoA; 348 349 struct LDAPAPIFeatureInfoW { 350 int ldapaif_info_version; 351 PWCHAR ldapaif_name; 352 int ldapaif_version; 353 } 354 alias LDAPAPIFeatureInfoW* PLDAPAPIFeatureInfoW; 355 356 struct LDAPControlA { 357 PCHAR ldctl_oid; 358 BerValue ldctl_value; 359 BOOLEAN ldctl_iscritical; 360 } 361 alias LDAPControlA* PLDAPControlA; 362 363 struct LDAPControlW { 364 PWCHAR ldctl_oid; 365 BerValue ldctl_value; 366 BOOLEAN ldctl_iscritical; 367 } 368 alias LDAPControlW* PLDAPControlW; 369 370 /* Do we really need these? In MinGW, LDAPModA/W have only mod_op, mod_type 371 * and mod_vals, and macros are used to simulate anonymous unions in those 372 * structures. 373 */ 374 union mod_vals_u_tA { 375 PCHAR* modv_strvals; 376 BerValue** modv_bvals; 377 } 378 379 union mod_vals_u_tW { 380 PWCHAR* modv_strvals; 381 BerValue** modv_bvals; 382 } 383 384 struct LDAPModA { 385 ULONG mod_op; 386 PCHAR mod_type; 387 388 union { 389 mod_vals_u_tA mod_vals; 390 // The following members are defined as macros in MinGW. 391 PCHAR* mod_values; 392 BerValue** mod_bvalues; 393 } 394 } 395 alias LDAPModA* PLDAPModA; 396 397 struct LDAPModW { 398 ULONG mod_op; 399 PWCHAR mod_type; 400 401 union { 402 mod_vals_u_tW mod_vals; 403 // The following members are defined as macros in MinGW. 404 PWCHAR* mod_values; 405 BerValue** mod_bvalues; 406 } 407 } 408 alias LDAPModW* PLDAPModW; 409 410 /* Opaque structure 411 * http://msdn.microsoft.com/library/en-us/ldap/ldap/ldapsearch.asp 412 */ 413 struct LDAPSearch; 414 alias LDAPSearch* PLDAPSearch; 415 416 struct LDAPSortKeyA { 417 PCHAR sk_attrtype; 418 PCHAR sk_matchruleoid; 419 BOOLEAN sk_reverseorder; 420 } 421 alias LDAPSortKeyA* PLDAPSortKeyA; 422 423 struct LDAPSortKeyW { 424 PWCHAR sk_attrtype; 425 PWCHAR sk_matchruleoid; 426 BOOLEAN sk_reverseorder; 427 } 428 alias LDAPSortKeyW* PLDAPSortKeyW; 429 430 /* MinGW defines these as immediate function typedefs, which don't translate 431 * well into D. 432 */ 433 extern (C) { 434 alias ULONG function(PLDAP, PLDAP, PWCHAR, PCHAR, ULONG, PVOID, PVOID, 435 PLDAP*) QUERYFORCONNECTION; 436 alias BOOLEAN function(PLDAP, PLDAP, PWCHAR, PCHAR, PLDAP, ULONG, PVOID, 437 PVOID, ULONG) NOTIFYOFNEWCONNECTION; 438 alias ULONG function(PLDAP, PLDAP) DEREFERENCECONNECTION; 439 alias BOOLEAN function(PLDAP, PSecPkgContext_IssuerListInfoEx, 440 PCCERT_CONTEXT*) QUERYCLIENTCERT; 441 } 442 443 struct LDAP_REFERRAL_CALLBACK { 444 ULONG SizeOfCallbacks; 445 QUERYFORCONNECTION* QueryForConnection; 446 NOTIFYOFNEWCONNECTION* NotifyRoutine; 447 DEREFERENCECONNECTION* DereferenceRoutine; 448 } 449 alias LDAP_REFERRAL_CALLBACK* PLDAP_REFERRAL_CALLBACK; 450 451 struct LDAPVLVInfo { 452 int ldvlv_version; 453 uint ldvlv_before_count; 454 uint ldvlv_after_count; 455 uint ldvlv_offset; 456 uint ldvlv_count; 457 BerValue* ldvlv_attrvalue; 458 BerValue* ldvlv_context; 459 void* ldvlv_extradata; 460 } 461 462 /* 463 * Under Microsoft WinLDAP the function ldap_error is only stub. 464 * This macro uses LDAP structure to get error string and pass it to the user. 465 */ 466 private extern (C) int printf(const scope char* format, ...); 467 int ldap_perror()(LDAP* handle, char* message) { 468 return printf("%s: %s\n", message, handle.ld_error); 469 } 470 471 /* FIXME: In MinGW, these are WINLDAPAPI == DECLSPEC_IMPORT. Linkage 472 * attribute? 473 */ 474 extern (C) { 475 PLDAP ldap_initA(PCHAR, ULONG); 476 PLDAP ldap_initW(PWCHAR, ULONG); 477 PLDAP ldap_openA(PCHAR, ULONG); 478 PLDAP ldap_openW(PWCHAR, ULONG); 479 PLDAP cldap_openA(PCHAR, ULONG); 480 PLDAP cldap_openW(PWCHAR, ULONG); 481 ULONG ldap_connect(LDAP*, LDAP_TIMEVAL*); 482 PLDAP ldap_sslinitA(PCHAR, ULONG, int); 483 PLDAP ldap_sslinitW(PWCHAR, ULONG, int); 484 ULONG ldap_start_tls_sA(LDAP*, PLDAPControlA*, PLDAPControlA*); 485 ULONG ldap_start_tls_sW(LDAP*, PLDAPControlW*, PLDAPControlW*); 486 BOOLEAN ldap_stop_tls_s(LDAP*); 487 ULONG ldap_get_optionA(LDAP*, int, void*); 488 ULONG ldap_get_optionW(LDAP*, int, void*); 489 ULONG ldap_set_optionA(LDAP*, int, void*); 490 ULONG ldap_set_optionW(LDAP*, int, void*); 491 ULONG ldap_control_freeA(LDAPControlA*); 492 ULONG ldap_control_freeW(LDAPControlW*); 493 ULONG ldap_controls_freeA(LDAPControlA**); 494 ULONG ldap_controls_freeW(LDAPControlW**); 495 ULONG ldap_free_controlsA(LDAPControlA**); 496 ULONG ldap_free_controlsW(LDAPControlW**); 497 ULONG ldap_sasl_bindA(LDAP*, PCSTR, PCSTR, BERVAL*, PLDAPControlA*, 498 PLDAPControlA*, int*); 499 ULONG ldap_sasl_bindW(LDAP*, PCWSTR, PCWSTR, BERVAL*, PLDAPControlW*, 500 PLDAPControlW*, int*); 501 ULONG ldap_sasl_bind_sA(LDAP*, PCSTR, PCSTR, BERVAL*, PLDAPControlA*, 502 PLDAPControlA*, PBERVAL*); 503 ULONG ldap_sasl_bind_sW(LDAP*, PCWSTR, PCWSTR, BERVAL*, PLDAPControlW*, 504 PLDAPControlW*, PBERVAL*); 505 ULONG ldap_simple_bindA(LDAP*, PSTR, PSTR); 506 ULONG ldap_simple_bindW(LDAP*, PWSTR, PWSTR); 507 ULONG ldap_simple_bind_sA(LDAP*, PSTR, PSTR); 508 ULONG ldap_simple_bind_sW(LDAP*, PWSTR, PWSTR); 509 ULONG ldap_unbind(LDAP*); 510 ULONG ldap_unbind_s(LDAP*); 511 ULONG ldap_search_extA(LDAP*, PCSTR, ULONG, PCSTR, PZPSTR, ULONG, 512 PLDAPControlA*, PLDAPControlA*, ULONG, ULONG, ULONG*); 513 ULONG ldap_search_extW(LDAP*, PCWSTR, ULONG, PCWSTR, PZPWSTR, ULONG, 514 PLDAPControlW*, PLDAPControlW*, ULONG, ULONG, ULONG*); 515 ULONG ldap_search_ext_sA(LDAP*, PCSTR, ULONG, PCSTR, PZPSTR, ULONG, 516 PLDAPControlA*, PLDAPControlA*, LDAP_TIMEVAL*, ULONG, PLDAPMessage*); 517 ULONG ldap_search_ext_sW(LDAP*, PCWSTR, ULONG, PCWSTR, PZPWSTR, ULONG, 518 PLDAPControlW*, PLDAPControlW*, LDAP_TIMEVAL*, ULONG, PLDAPMessage*); 519 ULONG ldap_searchA(LDAP*, PCSTR, ULONG, PCSTR, PZPSTR, ULONG); 520 ULONG ldap_searchW(LDAP*, PCWSTR, ULONG, PCWSTR, PZPWSTR, ULONG); 521 ULONG ldap_search_sA(LDAP*, PCSTR, ULONG, PCSTR, PZPSTR, ULONG, 522 PLDAPMessage*); 523 ULONG ldap_search_sW(LDAP*, PCWSTR, ULONG, PCWSTR, PZPWSTR, ULONG, 524 PLDAPMessage*); 525 ULONG ldap_search_stA(LDAP*, PCSTR, ULONG, PCSTR, PZPSTR, ULONG, 526 LDAP_TIMEVAL*, PLDAPMessage*); 527 ULONG ldap_search_stW(LDAP*, PCWSTR, ULONG, PCWSTR, PZPWSTR, ULONG, 528 LDAP_TIMEVAL*, PLDAPMessage*); 529 ULONG ldap_compare_extA(LDAP*, PCSTR, PCSTR, PCSTR, BerValue*, 530 PLDAPControlA*, PLDAPControlA*, ULONG*); 531 ULONG ldap_compare_extW(LDAP*, PCWSTR, PCWSTR, PCWSTR, BerValue*, 532 PLDAPControlW*, PLDAPControlW*, ULONG*); 533 ULONG ldap_compare_ext_sA(LDAP*, PCSTR, PCSTR, PCSTR, BerValue*, 534 PLDAPControlA*, PLDAPControlA*); 535 ULONG ldap_compare_ext_sW(LDAP*, PCWSTR, PCWSTR, PCWSTR, BerValue*, 536 PLDAPControlW*, PLDAPControlW*); 537 ULONG ldap_compareA(LDAP*, PCSTR, PCSTR, PCSTR); 538 ULONG ldap_compareW(LDAP*, PCWSTR, PCWSTR, PCWSTR); 539 ULONG ldap_compare_sA(LDAP*, PCSTR, PCSTR, PCSTR); 540 ULONG ldap_compare_sW(LDAP*, PCWSTR, PCWSTR, PCWSTR); 541 ULONG ldap_modify_extA(LDAP*, PCSTR, LDAPModA**, PLDAPControlA*, 542 PLDAPControlA*, ULONG*); 543 ULONG ldap_modify_extW(LDAP*, PCWSTR, LDAPModW**, PLDAPControlW*, 544 PLDAPControlW*, ULONG*); 545 ULONG ldap_modify_ext_sA(LDAP*, PCSTR, LDAPModA**, PLDAPControlA*, 546 PLDAPControlA*); 547 ULONG ldap_modify_ext_sW(LDAP*, PCWSTR, LDAPModW**, PLDAPControlW*, 548 PLDAPControlW*); 549 ULONG ldap_modifyA(LDAP*, PSTR, LDAPModA**); 550 ULONG ldap_modifyW(LDAP*, PWSTR, LDAPModW**); 551 ULONG ldap_modify_sA(LDAP*, PSTR, LDAPModA**); 552 ULONG ldap_modify_sW(LDAP*, PWSTR, LDAPModW**); 553 ULONG ldap_rename_extA(LDAP*, PCSTR, PCSTR, PCSTR, INT, PLDAPControlA*, 554 PLDAPControlA*, ULONG*); 555 ULONG ldap_rename_extW(LDAP*, PCWSTR, PCWSTR, PCWSTR, INT, PLDAPControlW*, 556 PLDAPControlW*, ULONG*); 557 ULONG ldap_rename_ext_sA(LDAP*, PCSTR, PCSTR, PCSTR, INT, 558 PLDAPControlA*, PLDAPControlA*); 559 ULONG ldap_rename_ext_sW(LDAP*, PCWSTR, PCWSTR, PCWSTR, INT, 560 PLDAPControlW*, PLDAPControlW*); 561 ULONG ldap_add_extA(LDAP*, PCSTR, LDAPModA**, PLDAPControlA*, 562 PLDAPControlA*, ULONG*); 563 ULONG ldap_add_extW(LDAP*, PCWSTR, LDAPModW**, PLDAPControlW*, 564 PLDAPControlW*, ULONG*); 565 ULONG ldap_add_ext_sA(LDAP*, PCSTR, LDAPModA**, PLDAPControlA*, 566 PLDAPControlA*); 567 ULONG ldap_add_ext_sW(LDAP*, PCWSTR, LDAPModW**, PLDAPControlW*, 568 PLDAPControlW*); 569 ULONG ldap_addA(LDAP*, PSTR, LDAPModA**); 570 ULONG ldap_addW(LDAP*, PWSTR, LDAPModW**); 571 ULONG ldap_add_sA(LDAP*, PSTR, LDAPModA**); 572 ULONG ldap_add_sW(LDAP*, PWSTR, LDAPModW**); 573 ULONG ldap_delete_extA(LDAP*, PCSTR, PLDAPControlA*, PLDAPControlA*, 574 ULONG*); 575 ULONG ldap_delete_extW(LDAP*, PCWSTR, PLDAPControlW*, PLDAPControlW*, 576 ULONG*); 577 ULONG ldap_delete_ext_sA(LDAP*, PCSTR, PLDAPControlA*, PLDAPControlA*); 578 ULONG ldap_delete_ext_sW(LDAP*, PCWSTR, PLDAPControlW*, PLDAPControlW*); 579 ULONG ldap_deleteA(LDAP*, PCSTR); 580 ULONG ldap_deleteW(LDAP*, PCWSTR); 581 ULONG ldap_delete_sA(LDAP*, PCSTR); 582 ULONG ldap_delete_sW(LDAP*, PCWSTR); 583 ULONG ldap_extended_operationA(LDAP*, PCSTR, BerValue*, PLDAPControlA*, 584 PLDAPControlA*, ULONG*); 585 ULONG ldap_extended_operationW(LDAP*, PCWSTR, BerValue*, PLDAPControlW*, 586 PLDAPControlW*, ULONG*); 587 ULONG ldap_extended_operation_sA(LDAP*, PSTR, BerValue*, PLDAPControlA*, 588 PLDAPControlA*, PCHAR*, BerValue**); 589 ULONG ldap_extended_operation_sW(LDAP*, PWSTR, BerValue*, PLDAPControlW*, 590 PLDAPControlW*, PWCHAR*, BerValue**); 591 ULONG ldap_close_extended_op(LDAP*, ULONG); 592 ULONG ldap_abandon(LDAP*, ULONG); 593 ULONG ldap_result(LDAP*, ULONG, ULONG, LDAP_TIMEVAL*, LDAPMessage**); 594 ULONG ldap_msgfree(LDAPMessage*); 595 ULONG ldap_parse_resultA(LDAP*, LDAPMessage*, ULONG*, PSTR*, PSTR*, 596 PZPSTR*, PLDAPControlA**, BOOLEAN); 597 ULONG ldap_parse_resultW(LDAP*, LDAPMessage*, ULONG*, PWSTR*, PWSTR*, 598 PZPWSTR*, PLDAPControlW**, BOOLEAN); 599 ULONG ldap_parse_extended_resultA(LDAP, LDAPMessage*, PSTR*, BerValue**, 600 BOOLEAN); 601 ULONG ldap_parse_extended_resultW(LDAP, LDAPMessage*, PWSTR*, BerValue**, 602 BOOLEAN); 603 PCHAR ldap_err2stringA(ULONG); 604 PWCHAR ldap_err2stringW(ULONG); 605 ULONG LdapGetLastError(); 606 ULONG LdapMapErrorToWin32(ULONG); 607 ULONG ldap_result2error(LDAP*, LDAPMessage*, ULONG); 608 PLDAPMessage ldap_first_entry(LDAP*, LDAPMessage*); 609 PLDAPMessage ldap_next_entry(LDAP*, LDAPMessage*); 610 PLDAPMessage ldap_first_reference(LDAP*, LDAPMessage*); 611 PLDAPMessage ldap_next_reference(LDAP*, LDAPMessage*); 612 ULONG ldap_count_entries(LDAP*, LDAPMessage*); 613 ULONG ldap_count_references(LDAP*, LDAPMessage*); 614 PCHAR ldap_first_attributeA(LDAP*, LDAPMessage*, BerElement**); 615 PWCHAR ldap_first_attributeW(LDAP*, LDAPMessage*, BerElement**); 616 PCHAR ldap_next_attributeA(LDAP*, LDAPMessage*, BerElement*); 617 PWCHAR ldap_next_attributeW(LDAP*, LDAPMessage*, BerElement*); 618 VOID ldap_memfreeA(PCHAR); 619 VOID ldap_memfreeW(PWCHAR); 620 PCHAR* ldap_get_valuesA(LDAP*, LDAPMessage*, PCSTR); 621 PWCHAR* ldap_get_valuesW(LDAP*, LDAPMessage*, PCWSTR); 622 BerValue** ldap_get_values_lenA(LDAP*, LDAPMessage*, PCSTR); 623 BerValue** ldap_get_values_lenW(LDAP*, LDAPMessage*, PCWSTR); 624 ULONG ldap_count_valuesA(PCHAR*); 625 ULONG ldap_count_valuesW(PWCHAR*); 626 ULONG ldap_count_values_len(BerValue**); 627 ULONG ldap_value_freeA(PCHAR*); 628 ULONG ldap_value_freeW(PWCHAR*); 629 ULONG ldap_value_free_len(BerValue**); 630 PCHAR ldap_get_dnA(LDAP*, LDAPMessage*); 631 PWCHAR ldap_get_dnW(LDAP*, LDAPMessage*); 632 PCHAR ldap_explode_dnA(PCSTR, ULONG); 633 PWCHAR ldap_explode_dnW(PCWSTR, ULONG); 634 PCHAR ldap_dn2ufnA(PCSTR); 635 PWCHAR ldap_dn2ufnW(PCWSTR); 636 ULONG ldap_ufn2dnA(PCSTR, PSTR*); 637 ULONG ldap_ufn2dnW(PCWSTR, PWSTR*); 638 ULONG ldap_parse_referenceA(LDAP*, LDAPMessage*, PCHAR**); 639 ULONG ldap_parse_referenceW(LDAP*, LDAPMessage*, PWCHAR**); 640 ULONG ldap_check_filterA(LDAP*, PSTR); 641 ULONG ldap_check_filterW(LDAP*, PWSTR); 642 ULONG ldap_create_page_controlA(PLDAP, ULONG, BerValue*, UCHAR, 643 PLDAPControlA*); 644 ULONG ldap_create_page_controlW(PLDAP, ULONG, BerValue*, UCHAR, 645 PLDAPControlW*); 646 ULONG ldap_create_sort_controlA(PLDAP, PLDAPSortKeyA*, UCHAR, 647 PLDAPControlA*); 648 ULONG ldap_create_sort_controlW(PLDAP, PLDAPSortKeyW*, UCHAR, 649 PLDAPControlW*); 650 INT ldap_create_vlv_controlA(LDAP*, LDAPVLVInfo*, UCHAR, PLDAPControlA*); 651 INT ldap_create_vlv_controlW(LDAP*, LDAPVLVInfo*, UCHAR, PLDAPControlW*); 652 ULONG ldap_encode_sort_controlA(PLDAP, PLDAPSortKeyA*, PLDAPControlA, 653 BOOLEAN); 654 ULONG ldap_encode_sort_controlW(PLDAP, PLDAPSortKeyW*, PLDAPControlW, 655 BOOLEAN); 656 ULONG ldap_escape_filter_elementA(PCHAR, ULONG, PCHAR, ULONG); 657 ULONG ldap_escape_filter_elementW(PWCHAR, ULONG, PWCHAR, ULONG); 658 ULONG ldap_get_next_page(PLDAP, PLDAPSearch, ULONG, ULONG*); 659 ULONG ldap_get_next_page_s(PLDAP, PLDAPSearch, LDAP_TIMEVAL*, ULONG, 660 ULONG*, LDAPMessage**); 661 ULONG ldap_get_paged_count(PLDAP, PLDAPSearch, ULONG*, PLDAPMessage); 662 ULONG ldap_parse_page_controlA(PLDAP, PLDAPControlA*, ULONG*, BerValue**); 663 ULONG ldap_parse_page_controlW(PLDAP, PLDAPControlW*, ULONG*, BerValue**); 664 ULONG ldap_parse_sort_controlA(PLDAP, PLDAPControlA*, ULONG*, PCHAR*); 665 ULONG ldap_parse_sort_controlW(PLDAP, PLDAPControlW*, ULONG*, PWCHAR*); 666 INT ldap_parse_vlv_controlA(PLDAP, PLDAPControlA*, PULONG, PULONG, 667 BerValue**, PINT); 668 INT ldap_parse_vlv_controlW(PLDAP, PLDAPControlW*, PULONG, PULONG, 669 BerValue**, PINT); 670 PLDAPSearch ldap_search_init_pageA(PLDAP, PCSTR, ULONG, PCSTR, PZPSTR, 671 ULONG, PLDAPControlA*, PLDAPControlA*, ULONG, ULONG, PLDAPSortKeyA*); 672 PLDAPSearch ldap_search_init_pageW(PLDAP, PCWSTR, ULONG, PCWSTR, PZPWSTR, 673 ULONG, PLDAPControlW*, PLDAPControlW*, ULONG, ULONG, PLDAPSortKeyW*); 674 ULONG ldap_search_abandon_page(PLDAP, PLDAPSearch); 675 LDAP ldap_conn_from_msg(LDAP*, LDAPMessage*); 676 INT LdapUnicodeToUTF8(LPCWSTR, int, LPSTR, int); 677 INT LdapUTF8ToUnicode(LPCSTR, int, LPWSTR, int); 678 ULONG ldap_bindA(LDAP*, PSTR, PCHAR, ULONG); 679 ULONG ldap_bindW(LDAP*, PWSTR, PWCHAR, ULONG); 680 ULONG ldap_bind_sA(LDAP*, PSTR, PCHAR, ULONG); 681 ULONG ldap_bind_sW(LDAP*, PWSTR, PWCHAR, ULONG); 682 deprecated ("For LDAP 3 or later, use the ldap_rename_ext or ldap_rename_ext_s functions") { 683 ULONG ldap_modrdnA(LDAP*, PCSTR, PCSTR); 684 ULONG ldap_modrdnW(LDAP*, PCWSTR, PCWSTR); 685 ULONG ldap_modrdn_sA(LDAP*, PCSTR, PCSTR); 686 ULONG ldap_modrdn_sW(LDAP*, PCWSTR, PCWSTR); 687 ULONG ldap_modrdn2A(LDAP*, PCSTR, PCSTR, INT); 688 ULONG ldap_modrdn2W(LDAP*, PCWSTR, PCWSTR, INT); 689 ULONG ldap_modrdn2_sA(LDAP*, PCSTR, PCSTR, INT); 690 ULONG ldap_modrdn2_sW(LDAP*, PCWSTR, PCWSTR, INT); 691 } 692 } 693 694 version (Unicode) { 695 alias LDAPControlW LDAPControl; 696 alias PLDAPControlW PLDAPControl; 697 alias LDAPModW LDAPMod; 698 alias LDAPModW PLDAPMod; 699 alias LDAPSortKeyW LDAPSortKey; 700 alias PLDAPSortKeyW PLDAPSortKey; 701 alias LDAPAPIInfoW LDAPAPIInfo; 702 alias PLDAPAPIInfoW PLDAPAPIInfo; 703 alias LDAPAPIFeatureInfoW LDAPAPIFeatureInfo; 704 alias PLDAPAPIFeatureInfoW PLDAPAPIFeatureInfo; 705 alias cldap_openW cldap_open; 706 alias ldap_openW ldap_open; 707 alias ldap_simple_bindW ldap_simple_bind; 708 alias ldap_simple_bind_sW ldap_simple_bind_s; 709 alias ldap_sasl_bindW ldap_sasl_bind; 710 alias ldap_sasl_bind_sW ldap_sasl_bind_s; 711 alias ldap_initW ldap_init; 712 alias ldap_sslinitW ldap_sslinit; 713 alias ldap_get_optionW ldap_get_option; 714 alias ldap_set_optionW ldap_set_option; 715 alias ldap_start_tls_sW ldap_start_tls_s; 716 alias ldap_addW ldap_add; 717 alias ldap_add_extW ldap_add_ext; 718 alias ldap_add_sW ldap_add_s; 719 alias ldap_add_ext_sW ldap_add_ext_s; 720 alias ldap_compareW ldap_compare; 721 alias ldap_compare_extW ldap_compare_ext; 722 alias ldap_compare_sW ldap_compare_s; 723 alias ldap_compare_ext_sW ldap_compare_ext_s; 724 alias ldap_deleteW ldap_delete; 725 alias ldap_delete_extW ldap_delete_ext; 726 alias ldap_delete_sW ldap_delete_s; 727 alias ldap_delete_ext_sW ldap_delete_ext_s; 728 alias ldap_extended_operation_sW ldap_extended_operation_s; 729 alias ldap_extended_operationW ldap_extended_operation; 730 alias ldap_modifyW ldap_modify; 731 alias ldap_modify_extW ldap_modify_ext; 732 alias ldap_modify_sW ldap_modify_s; 733 alias ldap_modify_ext_sW ldap_modify_ext_s; 734 alias ldap_check_filterW ldap_check_filter; 735 alias ldap_count_valuesW ldap_count_values; 736 alias ldap_create_page_controlW ldap_create_page_control; 737 alias ldap_create_sort_controlW ldap_create_sort_control; 738 alias ldap_create_vlv_controlW ldap_create_vlv_control; 739 alias ldap_encode_sort_controlW ldap_encode_sort_control; 740 alias ldap_escape_filter_elementW ldap_escape_filter_element; 741 alias ldap_first_attributeW ldap_first_attribute; 742 alias ldap_next_attributeW ldap_next_attribute; 743 alias ldap_get_valuesW ldap_get_values; 744 alias ldap_get_values_lenW ldap_get_values_len; 745 alias ldap_parse_extended_resultW ldap_parse_extended_result; 746 alias ldap_parse_page_controlW ldap_parse_page_control; 747 alias ldap_parse_referenceW ldap_parse_reference; 748 alias ldap_parse_resultW ldap_parse_result; 749 alias ldap_parse_sort_controlW ldap_parse_sort_control; 750 alias ldap_parse_vlv_controlW ldap_parse_vlv_control; 751 alias ldap_searchW ldap_search; 752 alias ldap_search_sW ldap_search_s; 753 alias ldap_search_stW ldap_search_st; 754 alias ldap_search_extW ldap_search_ext; 755 alias ldap_search_ext_sW ldap_search_ext_s; 756 alias ldap_search_init_pageW ldap_search_init_page; 757 alias ldap_err2stringW ldap_err2string; 758 alias ldap_control_freeW ldap_control_free; 759 alias ldap_controls_freeW ldap_controls_free; 760 alias ldap_free_controlsW ldap_free_controls; 761 alias ldap_memfreeW ldap_memfree; 762 alias ldap_value_freeW ldap_value_free; 763 alias ldap_dn2ufnW ldap_dn2ufn; 764 alias ldap_ufn2dnW ldap_ufn2dn; 765 alias ldap_explode_dnW ldap_explode_dn; 766 alias ldap_get_dnW ldap_get_dn; 767 alias ldap_rename_extW ldap_rename; 768 alias ldap_rename_ext_sW ldap_rename_s; 769 alias ldap_rename_extW ldap_rename_ext; 770 alias ldap_rename_ext_sW ldap_rename_ext_s; 771 deprecated { 772 alias ldap_bindW ldap_bind; 773 alias ldap_bind_sW ldap_bind_s; 774 alias ldap_modrdnW ldap_modrdn; 775 alias ldap_modrdn_sW ldap_modrdn_s; 776 alias ldap_modrdn2W ldap_modrdn2; 777 alias ldap_modrdn2_sW ldap_modrdn2_s; 778 } 779 } else { 780 alias LDAPControlA LDAPControl; 781 alias PLDAPControlA PLDAPControl; 782 alias LDAPModA LDAPMod; 783 alias LDAPModA PLDAPMod; 784 alias LDAPSortKeyA LDAPSortKey; 785 alias PLDAPSortKeyA PLDAPSortKey; 786 alias LDAPAPIInfoA LDAPAPIInfo; 787 alias PLDAPAPIInfoA PLDAPAPIInfo; 788 alias LDAPAPIFeatureInfoA LDAPAPIFeatureInfo; 789 alias PLDAPAPIFeatureInfoA PLDAPAPIFeatureInfo; 790 alias cldap_openA cldap_open; 791 alias ldap_openA ldap_open; 792 alias ldap_simple_bindA ldap_simple_bind; 793 alias ldap_simple_bind_sA ldap_simple_bind_s; 794 alias ldap_sasl_bindA ldap_sasl_bind; 795 alias ldap_sasl_bind_sA ldap_sasl_bind_s; 796 alias ldap_initA ldap_init; 797 alias ldap_sslinitA ldap_sslinit; 798 alias ldap_get_optionA ldap_get_option; 799 alias ldap_set_optionA ldap_set_option; 800 alias ldap_start_tls_sA ldap_start_tls_s; 801 alias ldap_addA ldap_add; 802 alias ldap_add_extA ldap_add_ext; 803 alias ldap_add_sA ldap_add_s; 804 alias ldap_add_ext_sA ldap_add_ext_s; 805 alias ldap_compareA ldap_compare; 806 alias ldap_compare_extA ldap_compare_ext; 807 alias ldap_compare_sA ldap_compare_s; 808 alias ldap_compare_ext_sA ldap_compare_ext_s; 809 alias ldap_deleteA ldap_delete; 810 alias ldap_delete_extA ldap_delete_ext; 811 alias ldap_delete_sA ldap_delete_s; 812 alias ldap_delete_ext_sA ldap_delete_ext_s; 813 alias ldap_extended_operation_sA ldap_extended_operation_s; 814 alias ldap_extended_operationA ldap_extended_operation; 815 alias ldap_modifyA ldap_modify; 816 alias ldap_modify_extA ldap_modify_ext; 817 alias ldap_modify_sA ldap_modify_s; 818 alias ldap_modify_ext_sA ldap_modify_ext_s; 819 alias ldap_check_filterA ldap_check_filter; 820 alias ldap_count_valuesA ldap_count_values; 821 alias ldap_create_page_controlA ldap_create_page_control; 822 alias ldap_create_sort_controlA ldap_create_sort_control; 823 alias ldap_create_vlv_controlA ldap_create_vlv_control; 824 alias ldap_encode_sort_controlA ldap_encode_sort_control; 825 alias ldap_escape_filter_elementA ldap_escape_filter_element; 826 alias ldap_first_attributeA ldap_first_attribute; 827 alias ldap_next_attributeA ldap_next_attribute; 828 alias ldap_get_valuesA ldap_get_values; 829 alias ldap_get_values_lenA ldap_get_values_len; 830 alias ldap_parse_extended_resultA ldap_parse_extended_result; 831 alias ldap_parse_page_controlA ldap_parse_page_control; 832 alias ldap_parse_referenceA ldap_parse_reference; 833 alias ldap_parse_resultA ldap_parse_result; 834 alias ldap_parse_sort_controlA ldap_parse_sort_control; 835 alias ldap_parse_vlv_controlA ldap_parse_vlv_control; 836 alias ldap_searchA ldap_search; 837 alias ldap_search_sA ldap_search_s; 838 alias ldap_search_stA ldap_search_st; 839 alias ldap_search_extA ldap_search_ext; 840 alias ldap_search_ext_sA ldap_search_ext_s; 841 alias ldap_search_init_pageA ldap_search_init_page; 842 alias ldap_err2stringA ldap_err2string; 843 alias ldap_control_freeA ldap_control_free; 844 alias ldap_controls_freeA ldap_controls_free; 845 alias ldap_free_controlsA ldap_free_controls; 846 alias ldap_memfreeA ldap_memfree; 847 alias ldap_value_freeA ldap_value_free; 848 alias ldap_dn2ufnA ldap_dn2ufn; 849 alias ldap_ufn2dnA ldap_ufn2dn; 850 alias ldap_explode_dnA ldap_explode_dn; 851 alias ldap_get_dnA ldap_get_dn; 852 alias ldap_rename_extA ldap_rename; 853 alias ldap_rename_ext_sA ldap_rename_s; 854 alias ldap_rename_extA ldap_rename_ext; 855 alias ldap_rename_ext_sA ldap_rename_ext_s; 856 deprecated { 857 alias ldap_bindA ldap_bind; 858 alias ldap_bind_sA ldap_bind_s; 859 alias ldap_modrdnA ldap_modrdn; 860 alias ldap_modrdn_sA ldap_modrdn_s; 861 alias ldap_modrdn2A ldap_modrdn2; 862 alias ldap_modrdn2_sA ldap_modrdn2_s; 863 } 864 }