1/* 2 * Copyright 2005 Francois Gouget 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Lesser General Public 6 * License as published by the Free Software Foundation; either 7 * version 2.1 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public 15 * License along with this library; if not, write to the Free Software 16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 17 */ 18 19import "oaidl.idl"; 20 21typedef enum 22{ 23 ADS_RIGHT_DS_CREATE_CHILD = 0x00000001, 24 ADS_RIGHT_DS_DELETE_CHILD = 0x00000002, 25 ADS_RIGHT_ACTRL_DS_LIST = 0x00000004, 26 ADS_RIGHT_DS_SELF = 0x00000008, 27 ADS_RIGHT_DS_READ_PROP = 0x00000010, 28 ADS_RIGHT_DS_WRITE_PROP = 0x00000020, 29 ADS_RIGHT_DS_DELETE_TREE = 0x00000040, 30 ADS_RIGHT_DS_LIST_OBJECT = 0x00000080, 31 ADS_RIGHT_DS_CONTROL_ACCESS = 0x00000100, 32 33 ADS_RIGHT_DELETE = 0x00010000, 34 ADS_RIGHT_READ_CONTROL = 0x00020000, 35 ADS_RIGHT_WRITE_DAC = 0x00040000, 36 ADS_RIGHT_WRITE_OWNER = 0x00080000, 37 ADS_RIGHT_SYNCHRONIZE = 0x00100000, 38 ADS_RIGHT_ACCESS_SYSTEM_SECURITY = 0x00200000, 39 40 ADS_RIGHT_GENERIC_ALL = 0x10000000, 41 ADS_RIGHT_GENERIC_EXECUTE = 0x20000000, 42 ADS_RIGHT_GENERIC_WRITE = 0x40000000, 43 ADS_RIGHT_GENERIC_READ = 0x80000000 44} ADS_RIGHTS_ENUM; 45 46typedef enum 47{ 48 ADS_SECURE_AUTHENTICATION = 0x1, 49 ADS_USE_ENCRYPTION = 0x2, 50 ADS_USE_SSL = 0x2, 51 ADS_READONLY_SERVER = 0x4, 52 ADS_PROMPT_CREDENTIALS = 0x8, 53 ADS_NO_AUTHENTICATION = 0x10, 54 ADS_FAST_BIND = 0x20, 55 ADS_USE_SIGNING = 0x40, 56 ADS_USE_SEALING = 0x80, 57 ADS_USE_DELEGATION = 0x100, 58 ADS_SERVER_BIND = 0x200, 59 ADS_NO_REFERRAL_CHASING = 0x400, 60 ADS_AUTH_RESERVED = 0x80000000 61} ADS_AUTHENTICATION_ENUM; 62 63typedef enum 64{ 65 ADS_SEARCHPREF_ASYNCHRONOUS, 66 ADS_SEARCHPREF_DEREF_ALIASES, 67 ADS_SEARCHPREF_SIZE_LIMIT, 68 ADS_SEARCHPREF_TIME_LIMIT, 69 ADS_SEARCHPREF_ATTRIBTYPES_ONLY, 70 ADS_SEARCHPREF_SEARCH_SCOPE, 71 ADS_SEARCHPREF_TIMEOUT, 72 ADS_SEARCHPREF_PAGESIZE, 73 ADS_SEARCHPREF_PAGED_TIME_LIMIT, 74 ADS_SEARCHPREF_CHASE_REFERRALS, 75 ADS_SEARCHPREF_SORT_ON, 76 ADS_SEARCHPREF_CACHE_RESULTS, 77 ADS_SEARCHPREF_DIRSYNC, 78 ADS_SEARCHPREF_TOMBSTONE, 79 ADS_SEARCHPREF_VLV, 80 ADS_SEARCHPREF_ATTRIBUTE_QUERY, 81 ADS_SEARCHPREF_SECURITY_MASK, 82 ADS_SEARCHPREF_DIRSYNC_FLAG, 83 ADS_SEARCHPREF_EXTENDED_DN 84} ADS_SEARCHPREF_ENUM; 85 86typedef ADS_SEARCHPREF_ENUM *PADS_SEARCHPREF_INFO; 87 88typedef enum 89{ 90 ADS_STATUS_S_OK, 91 ADS_STATUS_INVALID_SEARCHPREF, 92 ADS_STATUS_INVALID_SEARCHPREFVALUE 93} ADS_STATUSENUM; 94 95typedef enum 96{ 97 ADSTYPE_INVALID, 98 ADSTYPE_DN_STRING, 99 ADSTYPE_CASE_EXACT_STRING, 100 ADSTYPE_CASE_IGNORE_STRING, 101 ADSTYPE_PRINTABLE_STRING, 102 ADSTYPE_NUMERIC_STRING, 103 ADSTYPE_BOOLEAN, 104 ADSTYPE_INTEGER, 105 ADSTYPE_OCTET_STRING, 106 ADSTYPE_UTC_TIME, 107 ADSTYPE_LARGE_INTEGER, 108 ADSTYPE_PROV_SPECIFIC, 109 ADSTYPE_OBJECT_CLASS, 110 ADSTYPE_CASEIGNORE_LIST, 111 ADSTYPE_OCTET_LIST, 112 ADSTYPE_PATH, 113 ADSTYPE_POSTALADDRESS, 114 ADSTYPE_TIMESTAMP, 115 ADSTYPE_BACKLINK, 116 ADSTYPE_TYPEDNAME, 117 ADSTYPE_HOLD, 118 ADSTYPE_NETADDRESS, 119 ADSTYPE_REPLICAPOINTER, 120 ADSTYPE_FAXNUMBER, 121 ADSTYPE_EMAIL, 122 ADSTYPE_NT_SECURITY_DESCRIPTOR, 123 ADSTYPE_UNKNOWN, 124 ADSTYPE_DN_WITH_BINARY, 125 ADSTYPE_DN_WITH_STRING 126} ADSTYPEENUM; 127 128typedef enum 129{ 130 ADS_PASSWORD_ENCODE_REQUIRE_SSL, 131 ADS_PASSWORD_ENCODE_CLEAR 132} ADS_PASSWORD_ENCODING_ENUM; 133 134typedef struct _ADS_CASEIGNORE_LIST 135{ 136 struct _ADS_CASEIGNORE_LIST *Next; 137 LPWSTR String; 138} ADS_CASEIGNORE_LIST; 139 140typedef struct _ADS_OCTET_LIST 141{ 142 struct _ADS_OCTET_LIST *Next; 143 DWORD Length; 144 BYTE *Data; 145} ADS_OCTET_LIST; 146 147typedef struct 148{ 149 DWORD Type; 150 LPWSTR VolumeName; 151 LPWSTR Path; 152} ADS_PATH, *PADS_PATH; 153 154typedef struct 155{ 156 DWORD WholeSeconds; 157 DWORD EventID; 158} ADS_TIMESTAMP; 159 160 161typedef ADSTYPEENUM ADSTYPE; 162typedef LPWSTR ADS_DN_STRING; 163typedef LPWSTR *PADS_DN_STRING; 164typedef LPWSTR ADS_CASE_EXACT_STRING; 165typedef LPWSTR *PADS_CASE_EXACT_STRING; 166typedef LPWSTR ADS_CASE_IGNORE_STRING; 167typedef LPWSTR *PADS_CASE_IGNORE_STRING; 168typedef LPWSTR ADS_PRINTABLE_STRING; 169typedef LPWSTR *PADS_PRINTABLE_STRING; 170typedef LPWSTR ADS_NUMERIC_STRING; 171typedef LPWSTR *PADS_NUMERIC_STRING; 172typedef DWORD ADS_BOOLEAN; 173typedef DWORD *LPNDS_BOOLEAN; 174typedef DWORD ADS_INTEGER; 175typedef DWORD *PADS_INTEGER; 176typedef SYSTEMTIME ADS_UTC_TIME; 177typedef SYSTEMTIME *PADS_UTC_TIME; 178typedef LARGE_INTEGER ADS_LARGE_INTEGER; 179typedef LARGE_INTEGER *PADS_LARGE_INTEGER; 180typedef LPWSTR ADS_OBJECT_CLASS; 181typedef LPWSTR *PADS_OBJECT_CLASS; 182typedef struct _ADS_OCTET_LIST *PADS_OCTET_LIST; 183typedef struct _ADS_CASEIGNORE_LIST *PADS_CASEIGNORE_LIST; 184typedef ADS_STATUSENUM ADS_STATUS; 185typedef ADS_SEARCHPREF_ENUM ADS_SEARCHPREF; 186typedef HANDLE ADS_SEARCH_HANDLE; 187typedef HANDLE *PADS_SEARCH_HANDLE; 188 189 190typedef struct 191{ 192 DWORD dwLength; 193 BYTE *lpValue; 194} ADS_OCTET_STRING; 195 196typedef struct 197{ 198 DWORD dwLength; 199 BYTE *lpValue; 200} ADS_PROV_SPECIFIC; 201 202typedef struct 203{ 204 LPWSTR PostalAddress[ 6 ]; 205} ADS_POSTALADDRESS, *PADS_POSTALADDRESS; 206 207typedef struct 208{ 209 LPWSTR ObjectName; 210 DWORD Level; 211 DWORD Interval; 212} ADS_TYPEDNAME, *PADS_TYPEDNAME; 213 214typedef struct 215{ 216 DWORD RemoteID; 217 LPWSTR ObjectName; 218} ADS_BACKLINK; 219 220typedef struct 221{ 222 LPWSTR ObjectName; 223 DWORD Amount; 224} ADS_HOLD; 225 226typedef struct 227{ 228 DWORD AddressType; 229 DWORD AddressLength; 230 BYTE *Address; 231} ADS_NETADDRESS, *PADS_NETADDRESS; 232 233typedef struct 234{ 235 LPWSTR ServerName; 236 DWORD ReplicaType; 237 DWORD ReplicaNumber; 238 DWORD Count; 239 PADS_NETADDRESS ReplicaAddressHints; 240} ADS_REPLICAPOINTER, *PADS_REPLICAPOINTER; 241 242typedef struct 243{ 244 LPWSTR TelephoneNumber; 245 DWORD NumberOfBits; 246 BYTE *Parameters; 247} ADS_FAXNUMBER, *PADS_FAXNUMBER; 248 249 250typedef struct 251{ 252 LPWSTR Address; 253 DWORD Type; 254} ADS_EMAIL, *PADS_EMAIL; 255 256typedef struct 257{ 258 DWORD dwLength; 259 BYTE *lpValue; 260} ADS_NT_SECURITY_DESCRIPTOR; 261 262typedef struct 263{ 264 DWORD dwLength; 265 BYTE *lpBinaryValue; 266 LPWSTR pszDNString; 267} ADS_DN_WITH_BINARY, *PADS_DN_WITH_BINARY; 268 269typedef struct 270{ 271 LPWSTR pszStringValue; 272 LPWSTR pszDNString; 273} ADS_DN_WITH_STRING, *PADS_DN_WITH_STRING; 274 275typedef struct _adsvalue 276{ 277 ADSTYPE dwType; 278 union 279 { 280 ADS_DN_STRING DNString; 281 ADS_CASE_EXACT_STRING CaseExactString; 282 ADS_CASE_IGNORE_STRING CaseIgnoreString; 283 ADS_PRINTABLE_STRING PrintableString; 284 ADS_NUMERIC_STRING NumericString; 285 ADS_BOOLEAN Boolean; 286 ADS_INTEGER Integer; 287 ADS_OCTET_STRING OctetString; 288 ADS_UTC_TIME UTCTime; 289 ADS_LARGE_INTEGER LargeInteger; 290 ADS_OBJECT_CLASS ClassName; 291 ADS_PROV_SPECIFIC ProviderSpecific; 292 PADS_CASEIGNORE_LIST pCaseIgnoreList; 293 PADS_OCTET_LIST pOctetList; 294 PADS_PATH pPath; 295 PADS_POSTALADDRESS pPostalAddress; 296 ADS_TIMESTAMP Timestamp; 297 ADS_BACKLINK BackLink; 298 PADS_TYPEDNAME pTypedName; 299 ADS_HOLD Hold; 300 PADS_NETADDRESS pNetAddress; 301 PADS_REPLICAPOINTER pReplicaPointer; 302 PADS_FAXNUMBER pFaxNumber; 303 ADS_EMAIL Email; 304 ADS_NT_SECURITY_DESCRIPTOR SecurityDescriptor; 305 PADS_DN_WITH_BINARY pDNWithBinary; 306 PADS_DN_WITH_STRING pDNWithString; 307 }; 308} ADSVALUE, *PADSVALUE; 309 310typedef struct ads_searchpref_info 311{ 312 ADS_SEARCHPREF dwSearchPref; 313 ADSVALUE vValue; 314 ADS_STATUS dwStatus; 315} ADS_SEARCHPREF_INFO; 316 317typedef struct ads_search_column 318{ 319 LPWSTR pszAttrName; 320 ADSTYPE dwADsType; 321 PADSVALUE pADsValues; 322 DWORD dwNumValues; 323 HANDLE hReserved; 324} ADS_SEARCH_COLUMN, *PADS_SEARCH_COLUMN; 325 326/***************************************************************************** 327 * IADsContainer interface 328 */ 329[ 330 object, 331 uuid(001677d0-fd16-11ce-abc4-02608c9e7553) 332] 333interface IADsContainer: IDispatch 334{ 335 [propget] HRESULT Count( 336 [out, retval] long *retval); 337 [propget, restricted] HRESULT _NewEnum( 338 [out, retval] IUnknown **retval); 339 [propget] HRESULT Filter( 340 [out, retval] VARIANT *pvFilter); 341 [propput] HRESULT Filter( 342 [in] VARIANT vFilter); 343 [propget] HRESULT Hints( 344 [out, retval] VARIANT *pvHints); 345 [propput] HRESULT Hints( 346 [in] VARIANT vHints); 347 HRESULT GetObject( 348 [in] BSTR bstrClassName, 349 [in] BSTR bstrRelativeName, 350 [out, retval] IDispatch **ppObject); 351 HRESULT Create( 352 [in] BSTR bstrClassName, 353 [in] BSTR bstrRelativeName, 354 [out, retval] IDispatch **ppObject); 355 HRESULT Delete( 356 [in] BSTR bstrClassName, 357 [in] BSTR bstrRelativeName); 358 HRESULT CopyHere( 359 [in] BSTR bstrSourceName, 360 [in] BSTR bstrNewName, 361 [out, retval] IDispatch **ppObject); 362 HRESULT MoveHere( 363 [in] BSTR bstrSourceName, 364 [in] BSTR bstrNewName, 365 [out, retval] IDispatch **ppObject); 366} 367 368/***************************************************************************** 369 * IADs interface 370 */ 371[ 372 odl, 373 uuid(FD8256D0-FD15-11CE-ABC4-02608C9E7553), 374 dual, 375 oleautomation 376] 377interface IADs : IDispatch 378{ 379 [id(0x00000002), propget] 380 HRESULT Name([out, retval] BSTR* retval); 381 382 [id(0x00000003), propget] 383 HRESULT Class([out, retval] BSTR* retval); 384 385 [id(0x00000004), propget] 386 HRESULT GUID([out, retval] BSTR* retval); 387 388 [id(0x00000005), propget] 389 HRESULT ADsPath([out, retval] BSTR* retval); 390 391 [id(0x00000006), propget] 392 HRESULT Parent([out, retval] BSTR* retval); 393 394 [id(0x00000007), propget] 395 HRESULT Schema([out, retval] BSTR* retval); 396 397 [id(0x00000008)] 398 HRESULT GetInfo(); 399 400 [id(0x00000009)] 401 HRESULT SetInfo(); 402 403 [id(0x0000000a)] 404 HRESULT Get([in] BSTR bstrName, [out, retval] VARIANT* pvProp); 405 406 [id(0x0000000b)] 407 HRESULT Put([in] BSTR bstrName, [in] VARIANT vProp); 408 409 [id(0x0000000c)] 410 HRESULT GetEx([in] BSTR bstrName, [out, retval] VARIANT* pvProp); 411 412 [id(0x0000000d)] 413 HRESULT PutEx([in] long lnControlCode, [in] BSTR bstrName, [in] VARIANT vProp); 414 415 [id(0x0000000e)] 416 HRESULT GetInfoEx( [in] VARIANT vProperties, [in] long lnReserved); 417}; 418 419/***************************************************************************** 420 * IADsMembers interface 421 */ 422[ 423 odl, 424 uuid(451A0030-72EC-11CF-B03B-00AA006E0975), 425 dual, 426 oleautomation 427] 428interface IADsMembers : IDispatch 429{ 430 [id(0x00000002), propget] 431 HRESULT Count([out, retval] long* plCount); 432 433 [id(0xfffffffc), propget] 434 HRESULT _NewEnum([out, retval] IUnknown** ppEnumerator); 435 436 [id(0x00000003), propget] 437 HRESULT Filter([out, retval] VARIANT* pvFilter); 438 439 [id(0x00000003), propput] 440 HRESULT Filter([in] VARIANT pvFilter); 441}; 442 443/***************************************************************************** 444 * IADsGroup interface 445 */ 446[ 447 odl, 448 uuid(27636B00-410F-11CF-B1FF-02608C9E7553), 449 dual, 450 oleautomation 451] 452interface IADsGroup : IADs { 453 [id(0x0000000f), propget] 454 HRESULT Description([out, retval] BSTR* retval); 455 456 [id(0x0000000f), propput] 457 HRESULT Description([in] BSTR retval); 458 459 [id(0x00000010)] 460 HRESULT Members([out, retval] IADsMembers** ppMembers); 461 462 [id(0x00000011)] 463 HRESULT IsMember([in] BSTR bstrMember, [out, retval] VARIANT_BOOL* bMember); 464 465 [id(0x00000012)] 466 HRESULT Add([in] BSTR bstrNewItem); 467 468 [id(0x00000013)] 469 HRESULT Remove([in] BSTR bstrItemToBeRemoved); 470}; 471 472/***************************************************************************** 473 * IADsUser interface 474 */ 475[ 476 odl, 477 uuid(3E37E320-17E2-11CF-ABC4-02608C9E7553), 478 dual, 479 oleautomation 480] 481interface IADsUser : IADs 482{ 483 [id(0x00000035), propget] 484 HRESULT BadLoginAddress([out, retval] BSTR* retval); 485 486 [id(0x00000036), propget] 487 HRESULT BadLoginCount([out, retval] long* retval); 488 489 [id(0x00000038), propget] 490 HRESULT LastLogin([out, retval] DATE* retval); 491 492 [id(0x00000039), propget] 493 HRESULT LastLogoff([out, retval] DATE* retval); 494 495 [id(0x0000003a), propget] 496 HRESULT LastFailedLogin([out, retval] DATE* retval); 497 498 [id(0x0000003b), propget] 499 HRESULT PasswordLastChanged([out, retval] DATE* retval); 500 501 [id(0x0000000f), propget] 502 HRESULT Description([out, retval] BSTR* retval); 503 504 [id(0x0000000f), propput] 505 HRESULT Description([in] BSTR retval); 506 507 [id(0x00000013), propget] 508 HRESULT Division([out, retval] BSTR* retval); 509 510 [id(0x00000013), propput] 511 HRESULT Division([in] BSTR retval); 512 513 [id(0x0000007a), propget] 514 HRESULT Department([out, retval] BSTR* retval); 515 516 [id(0x0000007a), propput] 517 HRESULT Department([in] BSTR retval); 518 519 [id(0x00000014), propget] 520 HRESULT EmployeeID([out, retval] BSTR* retval); 521 522 [id(0x00000014), propput] 523 HRESULT EmployeeID([in] BSTR retval); 524 525 [id(0x00000017), propget] 526 HRESULT FullName([out, retval] BSTR* retval); 527 528 [id(0x00000017), propput] 529 HRESULT FullName([in] BSTR retval); 530 531 [id(0x00000016), propget] 532 HRESULT FirstName([out, retval] BSTR* retval); 533 534 [id(0x00000016), propput] 535 HRESULT FirstName([in] BSTR retval); 536 537 [id(0x00000019), propget] 538 HRESULT LastName([out, retval] BSTR* retval); 539 540 [id(0x00000019), propput] 541 HRESULT LastName([in] BSTR retval); 542 543 [id(0x0000001b), propget] 544 HRESULT OtherName([out, retval] BSTR* retval); 545 546 [id(0x0000001b), propput] 547 HRESULT OtherName([in] BSTR retval); 548 549 [id(0x00000072), propget] 550 HRESULT NamePrefix([out, retval] BSTR* retval); 551 552 [id(0x00000072), propput] 553 HRESULT NamePrefix([in] BSTR retval); 554 555 [id(0x00000073), propget] 556 HRESULT NameSuffix([out, retval] BSTR* retval); 557 558 [id(0x00000073), propput] 559 HRESULT NameSuffix([in] BSTR retval); 560 561 [id(0x00000024), propget] 562 HRESULT Title([out, retval] BSTR* retval); 563 564 [id(0x00000024), propput] 565 HRESULT Title([in] BSTR retval); 566 567 [id(0x0000001a), propget] 568 HRESULT Manager([out, retval] BSTR* retval); 569 570 [id(0x0000001a), propput] 571 HRESULT Manager([in] BSTR retval); 572 573 [id(0x00000020), propget] 574 HRESULT TelephoneHome([out, retval] VARIANT* retval); 575 576 [id(0x00000020), propput] 577 HRESULT TelephoneHome([in] VARIANT retval); 578 579 [id(0x00000021), propget] 580 HRESULT TelephoneMobile([out, retval] VARIANT* retval); 581 582 [id(0x00000021), propput] 583 HRESULT TelephoneMobile([in] VARIANT retval); 584 585 [id(0x00000022), propget] 586 HRESULT TelephoneNumber([out, retval] VARIANT* retval); 587 588 [id(0x00000022), propput] 589 HRESULT TelephoneNumber([in] VARIANT retval); 590 591 [id(0x00000011), propget] 592 HRESULT TelephonePager([out, retval] VARIANT* retval); 593 594 [id(0x00000011), propput] 595 HRESULT TelephonePager([in] VARIANT retval); 596 597 [id(0x00000010), propget] 598 HRESULT FaxNumber([out, retval] VARIANT* retval); 599 600 [id(0x00000010), propput] 601 HRESULT FaxNumber([in] VARIANT retval); 602 603 [id(0x0000001c), propget] 604 HRESULT OfficeLocations([out, retval] VARIANT* retval); 605 606 [id(0x0000001c), propput] 607 HRESULT OfficeLocations([in] VARIANT retval); 608 609 [id(0x0000001e), propget] 610 HRESULT PostalAddresses([out, retval] VARIANT* retval); 611 612 [id(0x0000001e), propput] 613 HRESULT PostalAddresses([in] VARIANT retval); 614 615 [id(0x0000001f), propget] 616 HRESULT PostalCodes([out, retval] VARIANT* retval); 617 618 [id(0x0000001f), propput] 619 HRESULT PostalCodes([in] VARIANT retval); 620 621 [id(0x00000075), propget] 622 HRESULT SeeAlso([out, retval] VARIANT* retval); 623 624 [id(0x00000075), propput] 625 HRESULT SeeAlso([in] VARIANT retval); 626 627 [id(0x00000025), propget] 628 HRESULT AccountDisabled([out, retval] VARIANT_BOOL* retval); 629 630 [id(0x00000025), propput] 631 HRESULT AccountDisabled([in] VARIANT_BOOL retval); 632 633 [id(0x00000026), propget] 634 HRESULT AccountExpirationDate([out, retval] DATE* retval); 635 636 [id(0x00000026), propput] 637 HRESULT AccountExpirationDate([in] DATE retval); 638 639 [id(0x00000029), propget] 640 HRESULT GraceLoginsAllowed([out, retval] long* retval); 641 642 [id(0x00000029), propput] 643 HRESULT GraceLoginsAllowed([in] long retval); 644 645 [id(0x0000002a), propget] 646 HRESULT GraceLoginsRemaining([out, retval] long* retval); 647 648 [id(0x0000002a), propput] 649 HRESULT GraceLoginsRemaining([in] long retval); 650 651 [id(0x0000002b), propget] 652 HRESULT IsAccountLocked([out, retval] VARIANT_BOOL* retval); 653 654 [id(0x0000002b), propput] 655 HRESULT IsAccountLocked([in] VARIANT_BOOL retval); 656 657 [id(0x0000002d), propget] 658 HRESULT LoginHours([out, retval] VARIANT* retval); 659 660 [id(0x0000002d), propput] 661 HRESULT LoginHours([in] VARIANT retval); 662 663 [id(0x0000002e), propget] 664 HRESULT LoginWorkstations([out, retval] VARIANT* retval); 665 666 [id(0x0000002e), propput] 667 HRESULT LoginWorkstations([in] VARIANT retval); 668 669 [id(0x0000002f), propget] 670 HRESULT MaxLogins([out, retval] long* retval); 671 672 [id(0x0000002f), propput] 673 HRESULT MaxLogins([in] long retval); 674 675 [id(0x00000030), propget] 676 HRESULT MaxStorage([out, retval] long* retval); 677 678 [id(0x00000030), propput] 679 HRESULT MaxStorage([in] long retval); 680 681 [id(0x00000031), propget] 682 HRESULT PasswordExpirationDate([out, retval] DATE* retval); 683 684 [id(0x00000031), propput] 685 HRESULT PasswordExpirationDate([in] DATE retval); 686 687 [id(0x00000032), propget] 688 HRESULT PasswordMinimumLength([out, retval] long* retval); 689 690 [id(0x00000032), propput] 691 HRESULT PasswordMinimumLength([in] long retval); 692 693 [id(0x00000033), propget] 694 HRESULT PasswordRequired([out, retval] VARIANT_BOOL* retval); 695 696 [id(0x00000033), propput] 697 HRESULT PasswordRequired([in] VARIANT_BOOL retval); 698 699 [id(0x00000034), propget] 700 HRESULT RequireUniquePassword([out, retval] VARIANT_BOOL* retval); 701 702 [id(0x00000034), propput] 703 HRESULT RequireUniquePassword([in] VARIANT_BOOL retval); 704 705 [id(0x0000003c), propget] 706 HRESULT EmailAddress([out, retval] BSTR* retval); 707 708 [id(0x0000003c), propput] 709 HRESULT EmailAddress([in] BSTR retval); 710 711 [id(0x0000003d), propget] 712 HRESULT HomeDirectory([out, retval] BSTR* retval); 713 714 [id(0x0000003d), propput] 715 HRESULT HomeDirectory([in] BSTR retval); 716 717 [id(0x0000003e), propget] 718 HRESULT Languages([out, retval] VARIANT* retval); 719 720 [id(0x0000003e), propput] 721 HRESULT Languages([in] VARIANT retval); 722 723 [id(0x0000003f), propget] 724 HRESULT Profile([out, retval] BSTR* retval); 725 726 [id(0x0000003f), propput] 727 HRESULT Profile([in] BSTR retval); 728 729 [id(0x00000040), propget] 730 HRESULT LoginScript([out, retval] BSTR* retval); 731 732 [id(0x00000040), propput] 733 HRESULT LoginScript([in] BSTR retval); 734 735 [id(0x00000041), propget] 736 HRESULT Picture([out, retval] VARIANT* retval); 737 738 [id(0x00000041), propput] 739 HRESULT Picture([in] VARIANT retval); 740 741 [id(0x00000078), propget] 742 HRESULT HomePage([out, retval] BSTR* retval); 743 744 [id(0x00000078), propput] 745 HRESULT HomePage([in] BSTR retval); 746 747 [id(0x00000042)] 748 HRESULT Groups([out, retval] IADsMembers** ppGroups); 749 750 [id(0x00000043)] 751 HRESULT SetPassword([in] BSTR NewPassword); 752 753 [id(0x00000044)] 754 HRESULT ChangePassword([in] BSTR bstrOldPassword, [in] BSTR bstrNewPassword); 755}; 756 757/***************************************************************************** 758 * IDirectorySearch interface 759 */ 760[ 761 odl, 762 local, 763 uuid(109BA8EC-92F0-11D0-A790-00C04FD8D5A8) 764] 765interface IDirectorySearch : IUnknown 766{ 767 HRESULT SetSearchPreference([in] PADS_SEARCHPREF_INFO pSearchPrefs, [in] DWORD dwNumPrefs); 768 HRESULT ExecuteSearch([in] LPWSTR pszSearchFilter, [in] LPWSTR* pAttributeNames, 769 [in] DWORD dwNumberAttributes, [out] PADS_SEARCH_HANDLE phSearchResult); 770 HRESULT AbandonSearch([in] ADS_SEARCH_HANDLE phSearchResult); 771 HRESULT GetFirstRow([in] ADS_SEARCH_HANDLE hSearchResult); 772 HRESULT GetNextRow([in] ADS_SEARCH_HANDLE hSearchResult); 773 HRESULT GetPreviousRow([in] ADS_SEARCH_HANDLE hSearchResult); 774 HRESULT GetNextColumnName([in] ADS_SEARCH_HANDLE hSearchHandle, [out] LPWSTR* ppszColumnName); 775 HRESULT GetColumn( [in] ADS_SEARCH_HANDLE hSearchResult, [in] LPWSTR szColumnName, 776 [out] PADS_SEARCH_COLUMN pSearchColumn); 777 HRESULT FreeColumn([in] PADS_SEARCH_COLUMN pSearchColumn); 778 HRESULT CloseSearchHandle([in] ADS_SEARCH_HANDLE hSearchResult); 779}; 780