2 * Copyright 2005 Francois Gouget
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.
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.
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
22 #define threading
(model
)
24 #define vi_progid
(str
)
28 helpstring("Active DS Type Library"),
29 uuid(97d25db0
-0363-11cf
-abc4
-02608c9e7553
),
35 importlib
("stdole2.tlb");
39 ADS_RIGHT_DS_CREATE_CHILD
= 0x00000001,
40 ADS_RIGHT_DS_DELETE_CHILD
= 0x00000002,
41 ADS_RIGHT_ACTRL_DS_LIST
= 0x00000004,
42 ADS_RIGHT_DS_SELF
= 0x00000008,
43 ADS_RIGHT_DS_READ_PROP
= 0x00000010,
44 ADS_RIGHT_DS_WRITE_PROP
= 0x00000020,
45 ADS_RIGHT_DS_DELETE_TREE
= 0x00000040,
46 ADS_RIGHT_DS_LIST_OBJECT
= 0x00000080,
47 ADS_RIGHT_DS_CONTROL_ACCESS
= 0x00000100,
49 ADS_RIGHT_DELETE
= 0x00010000,
50 ADS_RIGHT_READ_CONTROL
= 0x00020000,
51 ADS_RIGHT_WRITE_DAC
= 0x00040000,
52 ADS_RIGHT_WRITE_OWNER
= 0x00080000,
53 ADS_RIGHT_SYNCHRONIZE
= 0x00100000,
54 ADS_RIGHT_ACCESS_SYSTEM_SECURITY
= 0x00200000,
56 ADS_RIGHT_GENERIC_ALL
= 0x10000000,
57 ADS_RIGHT_GENERIC_EXECUTE
= 0x20000000,
58 ADS_RIGHT_GENERIC_WRITE
= 0x40000000,
59 ADS_RIGHT_GENERIC_READ
= 0x80000000
64 ADS_SECURE_AUTHENTICATION
= 0x1,
65 ADS_USE_ENCRYPTION
= 0x2,
67 ADS_READONLY_SERVER
= 0x4,
68 ADS_PROMPT_CREDENTIALS
= 0x8,
69 ADS_NO_AUTHENTICATION
= 0x10,
71 ADS_USE_SIGNING
= 0x40,
72 ADS_USE_SEALING
= 0x80,
73 ADS_USE_DELEGATION
= 0x100,
74 ADS_SERVER_BIND
= 0x200,
75 ADS_NO_REFERRAL_CHASING
= 0x400,
76 ADS_AUTH_RESERVED
= 0x80000000
77 } ADS_AUTHENTICATION_ENUM
;
81 ADS_SEARCHPREF_ASYNCHRONOUS
,
82 ADS_SEARCHPREF_DEREF_ALIASES
,
83 ADS_SEARCHPREF_SIZE_LIMIT
,
84 ADS_SEARCHPREF_TIME_LIMIT
,
85 ADS_SEARCHPREF_ATTRIBTYPES_ONLY
,
86 ADS_SEARCHPREF_SEARCH_SCOPE
,
87 ADS_SEARCHPREF_TIMEOUT
,
88 ADS_SEARCHPREF_PAGESIZE
,
89 ADS_SEARCHPREF_PAGED_TIME_LIMIT
,
90 ADS_SEARCHPREF_CHASE_REFERRALS
,
91 ADS_SEARCHPREF_SORT_ON
,
92 ADS_SEARCHPREF_CACHE_RESULTS
,
93 ADS_SEARCHPREF_DIRSYNC
,
94 ADS_SEARCHPREF_TOMBSTONE
,
96 ADS_SEARCHPREF_ATTRIBUTE_QUERY
,
97 ADS_SEARCHPREF_SECURITY_MASK
,
98 ADS_SEARCHPREF_DIRSYNC_FLAG
,
99 ADS_SEARCHPREF_EXTENDED_DN
100 } ADS_SEARCHPREF_ENUM
;
102 typedef ADS_SEARCHPREF_ENUM
*PADS_SEARCHPREF_INFO
;
107 ADS_STATUS_INVALID_SEARCHPREF
,
108 ADS_STATUS_INVALID_SEARCHPREFVALUE
115 ADSTYPE_CASE_EXACT_STRING
,
116 ADSTYPE_CASE_IGNORE_STRING
,
117 ADSTYPE_PRINTABLE_STRING
,
118 ADSTYPE_NUMERIC_STRING
,
121 ADSTYPE_OCTET_STRING
,
123 ADSTYPE_LARGE_INTEGER
,
124 ADSTYPE_PROV_SPECIFIC
,
125 ADSTYPE_OBJECT_CLASS
,
126 ADSTYPE_CASEIGNORE_LIST
,
129 ADSTYPE_POSTALADDRESS
,
135 ADSTYPE_REPLICAPOINTER
,
138 ADSTYPE_NT_SECURITY_DESCRIPTOR
,
140 ADSTYPE_DN_WITH_BINARY
,
141 ADSTYPE_DN_WITH_STRING
146 ADS_PASSWORD_ENCODE_REQUIRE_SSL
,
147 ADS_PASSWORD_ENCODE_CLEAR
148 } ADS_PASSWORD_ENCODING_ENUM
;
150 typedef struct _ADS_CASEIGNORE_LIST
152 struct _ADS_CASEIGNORE_LIST
*Next
;
154 } ADS_CASEIGNORE_LIST
;
156 typedef struct _ADS_OCTET_LIST
158 struct _ADS_OCTET_LIST
*Next
;
168 } ADS_PATH
, *PADS_PATH
;
177 typedef ADSTYPEENUM ADSTYPE
;
178 typedef LPWSTR ADS_DN_STRING
;
179 typedef LPWSTR
*PADS_DN_STRING
;
180 typedef LPWSTR ADS_CASE_EXACT_STRING
;
181 typedef LPWSTR
*PADS_CASE_EXACT_STRING
;
182 typedef LPWSTR ADS_CASE_IGNORE_STRING
;
183 typedef LPWSTR
*PADS_CASE_IGNORE_STRING
;
184 typedef LPWSTR ADS_PRINTABLE_STRING
;
185 typedef LPWSTR
*PADS_PRINTABLE_STRING
;
186 typedef LPWSTR ADS_NUMERIC_STRING
;
187 typedef LPWSTR
*PADS_NUMERIC_STRING
;
188 typedef DWORD ADS_BOOLEAN
;
189 typedef DWORD
*LPNDS_BOOLEAN
;
190 typedef DWORD ADS_INTEGER
;
191 typedef DWORD
*PADS_INTEGER
;
192 typedef SYSTEMTIME ADS_UTC_TIME
;
193 typedef SYSTEMTIME
*PADS_UTC_TIME
;
194 typedef LARGE_INTEGER ADS_LARGE_INTEGER
;
195 typedef LARGE_INTEGER
*PADS_LARGE_INTEGER
;
196 typedef LPWSTR ADS_OBJECT_CLASS
;
197 typedef LPWSTR
*PADS_OBJECT_CLASS
;
198 typedef struct _ADS_OCTET_LIST
*PADS_OCTET_LIST
;
199 typedef struct _ADS_CASEIGNORE_LIST
*PADS_CASEIGNORE_LIST
;
200 typedef ADS_STATUSENUM ADS_STATUS
;
201 typedef ADS_SEARCHPREF_ENUM ADS_SEARCHPREF
;
202 typedef HANDLE ADS_SEARCH_HANDLE
;
203 typedef HANDLE *PADS_SEARCH_HANDLE
;
220 LPWSTR PostalAddress
[ 6 ];
221 } ADS_POSTALADDRESS
, *PADS_POSTALADDRESS
;
228 } ADS_TYPEDNAME
, *PADS_TYPEDNAME
;
247 } ADS_NETADDRESS
, *PADS_NETADDRESS
;
255 PADS_NETADDRESS ReplicaAddressHints
;
256 } ADS_REPLICAPOINTER
, *PADS_REPLICAPOINTER
;
260 LPWSTR TelephoneNumber
;
263 } ADS_FAXNUMBER
, *PADS_FAXNUMBER
;
270 } ADS_EMAIL
, *PADS_EMAIL
;
276 } ADS_NT_SECURITY_DESCRIPTOR
;
283 } ADS_DN_WITH_BINARY
, *PADS_DN_WITH_BINARY
;
287 LPWSTR pszStringValue
;
289 } ADS_DN_WITH_STRING
, *PADS_DN_WITH_STRING
;
291 typedef struct _adsvalue
296 ADS_DN_STRING DNString
;
297 ADS_CASE_EXACT_STRING CaseExactString
;
298 ADS_CASE_IGNORE_STRING CaseIgnoreString
;
299 ADS_PRINTABLE_STRING PrintableString
;
300 ADS_NUMERIC_STRING NumericString
;
303 ADS_OCTET_STRING OctetString
;
304 ADS_UTC_TIME UTCTime
;
305 ADS_LARGE_INTEGER LargeInteger
;
306 ADS_OBJECT_CLASS ClassName
;
307 ADS_PROV_SPECIFIC ProviderSpecific
;
308 PADS_CASEIGNORE_LIST pCaseIgnoreList
;
309 PADS_OCTET_LIST pOctetList
;
311 PADS_POSTALADDRESS pPostalAddress
;
312 ADS_TIMESTAMP Timestamp
;
313 ADS_BACKLINK BackLink
;
314 PADS_TYPEDNAME pTypedName
;
316 PADS_NETADDRESS pNetAddress
;
317 PADS_REPLICAPOINTER pReplicaPointer
;
318 PADS_FAXNUMBER pFaxNumber
;
320 ADS_NT_SECURITY_DESCRIPTOR SecurityDescriptor
;
321 PADS_DN_WITH_BINARY pDNWithBinary
;
322 PADS_DN_WITH_STRING pDNWithString
;
324 } ADSVALUE
, *PADSVALUE
;
326 typedef struct ads_searchpref_info
328 ADS_SEARCHPREF dwSearchPref
;
331 } ADS_SEARCHPREF_INFO
;
333 typedef struct ads_search_column
337 PADSVALUE pADsValues
;
340 } ADS_SEARCH_COLUMN
, *PADS_SEARCH_COLUMN
;
342 /*****************************************************************************
343 * IADsContainer interface
347 uuid(001677d0
-fd16
-11ce
-abc4
-02608c9e7553
)
349 interface IADsContainer
: IDispatch
351 [propget] HRESULT Count
(
352 [out, retval] long *retval);
353 [propget, restricted] HRESULT _NewEnum
(
354 [out, retval] IUnknown
**retval);
355 [propget] HRESULT Filter
(
356 [out, retval] VARIANT *pvFilter
);
357 [propput] HRESULT Filter
(
358 [in] VARIANT vFilter
);
359 [propget] HRESULT Hints
(
360 [out, retval] VARIANT *pvHints
);
361 [propput] HRESULT Hints
(
362 [in] VARIANT vHints
);
364 [in] BSTR bstrClassName
,
365 [in] BSTR bstrRelativeName
,
366 [out, retval] IDispatch
**ppObject
);
368 [in] BSTR bstrClassName
,
369 [in] BSTR bstrRelativeName
,
370 [out, retval] IDispatch
**ppObject
);
372 [in] BSTR bstrClassName
,
373 [in] BSTR bstrRelativeName
);
375 [in] BSTR bstrSourceName
,
376 [in] BSTR bstrNewName
,
377 [out, retval] IDispatch
**ppObject
);
379 [in] BSTR bstrSourceName
,
380 [in] BSTR bstrNewName
,
381 [out, retval] IDispatch
**ppObject
);
384 /*****************************************************************************
389 uuid(FD8256D0
-FD15
-11CE
-ABC4
-02608C9E7553
),
393 interface IADs
: IDispatch
395 [id(0x00000002), propget]
396 HRESULT Name
([out, retval] BSTR* retval);
398 [id(0x00000003), propget]
399 HRESULT Class
([out, retval] BSTR* retval);
401 [id(0x00000004), propget]
402 HRESULT GUID
([out, retval] BSTR* retval);
404 [id(0x00000005), propget]
405 HRESULT ADsPath
([out, retval] BSTR* retval);
407 [id(0x00000006), propget]
408 HRESULT Parent
([out, retval] BSTR* retval);
410 [id(0x00000007), propget]
411 HRESULT Schema
([out, retval] BSTR* retval);
420 HRESULT Get
([in] BSTR bstrName
, [out, retval] VARIANT* pvProp
);
423 HRESULT Put
([in] BSTR bstrName
, [in] VARIANT vProp
);
426 HRESULT GetEx
([in] BSTR bstrName
, [out, retval] VARIANT* pvProp
);
429 HRESULT PutEx
([in] long lnControlCode
, [in] BSTR bstrName
, [in] VARIANT vProp
);
432 HRESULT GetInfoEx
( [in] VARIANT vProperties
, [in] long lnReserved
);
435 /*****************************************************************************
436 * IADsMembers interface
440 uuid(451A0030
-72EC
-11CF
-B03B
-00AA006E0975
),
444 interface IADsMembers
: IDispatch
446 [id(0x00000002), propget]
447 HRESULT Count
([out, retval] long* plCount
);
449 [id(0xfffffffc), propget]
450 HRESULT _NewEnum
([out, retval] IUnknown
** ppEnumerator
);
452 [id(0x00000003), propget]
453 HRESULT Filter
([out, retval] VARIANT* pvFilter
);
455 [id(0x00000003), propput]
456 HRESULT Filter
([in] VARIANT pvFilter
);
459 /*****************************************************************************
460 * IADsGroup interface
464 uuid(27636B00
-410F
-11CF
-B1FF
-02608C9E7553
),
468 interface IADsGroup
: IADs
{
469 [id(0x0000000f), propget]
470 HRESULT Description
([out, retval] BSTR* retval);
472 [id(0x0000000f), propput]
473 HRESULT Description
([in] BSTR retval);
476 HRESULT Members
([out, retval] IADsMembers
** ppMembers
);
479 HRESULT IsMember
([in] BSTR bstrMember
, [out, retval] VARIANT_BOOL* bMember
);
482 HRESULT Add
([in] BSTR bstrNewItem
);
485 HRESULT Remove
([in] BSTR bstrItemToBeRemoved
);
488 /*****************************************************************************
493 uuid(3E37E320
-17E2
-11CF
-ABC4
-02608C9E7553
),
497 interface IADsUser
: IADs
499 [id(0x00000035), propget]
500 HRESULT BadLoginAddress
([out, retval] BSTR* retval);
502 [id(0x00000036), propget]
503 HRESULT BadLoginCount
([out, retval] long* retval);
505 [id(0x00000038), propget]
506 HRESULT LastLogin
([out, retval] DATE
* retval);
508 [id(0x00000039), propget]
509 HRESULT LastLogoff
([out, retval] DATE
* retval);
511 [id(0x0000003a), propget]
512 HRESULT LastFailedLogin
([out, retval] DATE
* retval);
514 [id(0x0000003b), propget]
515 HRESULT PasswordLastChanged
([out, retval] DATE
* retval);
517 [id(0x0000000f), propget]
518 HRESULT Description
([out, retval] BSTR* retval);
520 [id(0x0000000f), propput]
521 HRESULT Description
([in] BSTR retval);
523 [id(0x00000013), propget]
524 HRESULT Division
([out, retval] BSTR* retval);
526 [id(0x00000013), propput]
527 HRESULT Division
([in] BSTR retval);
529 [id(0x0000007a), propget]
530 HRESULT Department
([out, retval] BSTR* retval);
532 [id(0x0000007a), propput]
533 HRESULT Department
([in] BSTR retval);
535 [id(0x00000014), propget]
536 HRESULT EmployeeID
([out, retval] BSTR* retval);
538 [id(0x00000014), propput]
539 HRESULT EmployeeID
([in] BSTR retval);
541 [id(0x00000017), propget]
542 HRESULT FullName
([out, retval] BSTR* retval);
544 [id(0x00000017), propput]
545 HRESULT FullName
([in] BSTR retval);
547 [id(0x00000016), propget]
548 HRESULT FirstName
([out, retval] BSTR* retval);
550 [id(0x00000016), propput]
551 HRESULT FirstName
([in] BSTR retval);
553 [id(0x00000019), propget]
554 HRESULT LastName
([out, retval] BSTR* retval);
556 [id(0x00000019), propput]
557 HRESULT LastName
([in] BSTR retval);
559 [id(0x0000001b), propget]
560 HRESULT OtherName
([out, retval] BSTR* retval);
562 [id(0x0000001b), propput]
563 HRESULT OtherName
([in] BSTR retval);
565 [id(0x00000072), propget]
566 HRESULT NamePrefix
([out, retval] BSTR* retval);
568 [id(0x00000072), propput]
569 HRESULT NamePrefix
([in] BSTR retval);
571 [id(0x00000073), propget]
572 HRESULT NameSuffix
([out, retval] BSTR* retval);
574 [id(0x00000073), propput]
575 HRESULT NameSuffix
([in] BSTR retval);
577 [id(0x00000024), propget]
578 HRESULT Title
([out, retval] BSTR* retval);
580 [id(0x00000024), propput]
581 HRESULT Title
([in] BSTR retval);
583 [id(0x0000001a), propget]
584 HRESULT Manager
([out, retval] BSTR* retval);
586 [id(0x0000001a), propput]
587 HRESULT Manager
([in] BSTR retval);
589 [id(0x00000020), propget]
590 HRESULT TelephoneHome
([out, retval] VARIANT* retval);
592 [id(0x00000020), propput]
593 HRESULT TelephoneHome
([in] VARIANT retval);
595 [id(0x00000021), propget]
596 HRESULT TelephoneMobile
([out, retval] VARIANT* retval);
598 [id(0x00000021), propput]
599 HRESULT TelephoneMobile
([in] VARIANT retval);
601 [id(0x00000022), propget]
602 HRESULT TelephoneNumber
([out, retval] VARIANT* retval);
604 [id(0x00000022), propput]
605 HRESULT TelephoneNumber
([in] VARIANT retval);
607 [id(0x00000011), propget]
608 HRESULT TelephonePager
([out, retval] VARIANT* retval);
610 [id(0x00000011), propput]
611 HRESULT TelephonePager
([in] VARIANT retval);
613 [id(0x00000010), propget]
614 HRESULT FaxNumber
([out, retval] VARIANT* retval);
616 [id(0x00000010), propput]
617 HRESULT FaxNumber
([in] VARIANT retval);
619 [id(0x0000001c), propget]
620 HRESULT OfficeLocations
([out, retval] VARIANT* retval);
622 [id(0x0000001c), propput]
623 HRESULT OfficeLocations
([in] VARIANT retval);
625 [id(0x0000001e), propget]
626 HRESULT PostalAddresses
([out, retval] VARIANT* retval);
628 [id(0x0000001e), propput]
629 HRESULT PostalAddresses
([in] VARIANT retval);
631 [id(0x0000001f), propget]
632 HRESULT PostalCodes
([out, retval] VARIANT* retval);
634 [id(0x0000001f), propput]
635 HRESULT PostalCodes
([in] VARIANT retval);
637 [id(0x00000075), propget]
638 HRESULT SeeAlso
([out, retval] VARIANT* retval);
640 [id(0x00000075), propput]
641 HRESULT SeeAlso
([in] VARIANT retval);
643 [id(0x00000025), propget]
644 HRESULT AccountDisabled
([out, retval] VARIANT_BOOL* retval);
646 [id(0x00000025), propput]
647 HRESULT AccountDisabled
([in] VARIANT_BOOL retval);
649 [id(0x00000026), propget]
650 HRESULT AccountExpirationDate
([out, retval] DATE
* retval);
652 [id(0x00000026), propput]
653 HRESULT AccountExpirationDate
([in] DATE
retval);
655 [id(0x00000029), propget]
656 HRESULT GraceLoginsAllowed
([out, retval] long* retval);
658 [id(0x00000029), propput]
659 HRESULT GraceLoginsAllowed
([in] long retval);
661 [id(0x0000002a), propget]
662 HRESULT GraceLoginsRemaining
([out, retval] long* retval);
664 [id(0x0000002a), propput]
665 HRESULT GraceLoginsRemaining
([in] long retval);
667 [id(0x0000002b), propget]
668 HRESULT IsAccountLocked
([out, retval] VARIANT_BOOL* retval);
670 [id(0x0000002b), propput]
671 HRESULT IsAccountLocked
([in] VARIANT_BOOL retval);
673 [id(0x0000002d), propget]
674 HRESULT LoginHours
([out, retval] VARIANT* retval);
676 [id(0x0000002d), propput]
677 HRESULT LoginHours
([in] VARIANT retval);
679 [id(0x0000002e), propget]
680 HRESULT LoginWorkstations
([out, retval] VARIANT* retval);
682 [id(0x0000002e), propput]
683 HRESULT LoginWorkstations
([in] VARIANT retval);
685 [id(0x0000002f), propget]
686 HRESULT MaxLogins
([out, retval] long* retval);
688 [id(0x0000002f), propput]
689 HRESULT MaxLogins
([in] long retval);
691 [id(0x00000030), propget]
692 HRESULT MaxStorage
([out, retval] long* retval);
694 [id(0x00000030), propput]
695 HRESULT MaxStorage
([in] long retval);
697 [id(0x00000031), propget]
698 HRESULT PasswordExpirationDate
([out, retval] DATE
* retval);
700 [id(0x00000031), propput]
701 HRESULT PasswordExpirationDate
([in] DATE
retval);
703 [id(0x00000032), propget]
704 HRESULT PasswordMinimumLength
([out, retval] long* retval);
706 [id(0x00000032), propput]
707 HRESULT PasswordMinimumLength
([in] long retval);
709 [id(0x00000033), propget]
710 HRESULT PasswordRequired
([out, retval] VARIANT_BOOL* retval);
712 [id(0x00000033), propput]
713 HRESULT PasswordRequired
([in] VARIANT_BOOL retval);
715 [id(0x00000034), propget]
716 HRESULT RequireUniquePassword
([out, retval] VARIANT_BOOL* retval);
718 [id(0x00000034), propput]
719 HRESULT RequireUniquePassword
([in] VARIANT_BOOL retval);
721 [id(0x0000003c), propget]
722 HRESULT EmailAddress
([out, retval] BSTR* retval);
724 [id(0x0000003c), propput]
725 HRESULT EmailAddress
([in] BSTR retval);
727 [id(0x0000003d), propget]
728 HRESULT HomeDirectory
([out, retval] BSTR* retval);
730 [id(0x0000003d), propput]
731 HRESULT HomeDirectory
([in] BSTR retval);
733 [id(0x0000003e), propget]
734 HRESULT Languages
([out, retval] VARIANT* retval);
736 [id(0x0000003e), propput]
737 HRESULT Languages
([in] VARIANT retval);
739 [id(0x0000003f), propget]
740 HRESULT Profile
([out, retval] BSTR* retval);
742 [id(0x0000003f), propput]
743 HRESULT Profile
([in] BSTR retval);
745 [id(0x00000040), propget]
746 HRESULT LoginScript
([out, retval] BSTR* retval);
748 [id(0x00000040), propput]
749 HRESULT LoginScript
([in] BSTR retval);
751 [id(0x00000041), propget]
752 HRESULT Picture
([out, retval] VARIANT* retval);
754 [id(0x00000041), propput]
755 HRESULT Picture
([in] VARIANT retval);
757 [id(0x00000078), propget]
758 HRESULT HomePage
([out, retval] BSTR* retval);
760 [id(0x00000078), propput]
761 HRESULT HomePage
([in] BSTR retval);
764 HRESULT Groups
([out, retval] IADsMembers
** ppGroups
);
767 HRESULT SetPassword
([in] BSTR NewPassword
);
770 HRESULT ChangePassword
([in] BSTR bstrOldPassword
, [in] BSTR bstrNewPassword
);
773 /*****************************************************************************
774 * IDirectorySearch interface
779 uuid(109BA8EC
-92F0
-11D0
-A790
-00C04FD8D5A8
)
781 interface IDirectorySearch
: IUnknown
783 HRESULT SetSearchPreference
([in] PADS_SEARCHPREF_INFO pSearchPrefs
, [in] DWORD dwNumPrefs
);
784 HRESULT ExecuteSearch
([in] LPWSTR pszSearchFilter
, [in] LPWSTR
* pAttributeNames
,
785 [in] DWORD dwNumberAttributes
, [out] PADS_SEARCH_HANDLE phSearchResult
);
786 HRESULT AbandonSearch
([in] ADS_SEARCH_HANDLE phSearchResult
);
787 HRESULT GetFirstRow
([in] ADS_SEARCH_HANDLE hSearchResult
);
788 HRESULT GetNextRow
([in] ADS_SEARCH_HANDLE hSearchResult
);
789 HRESULT GetPreviousRow
([in] ADS_SEARCH_HANDLE hSearchResult
);
790 HRESULT GetNextColumnName
([in] ADS_SEARCH_HANDLE hSearchHandle
, [out] LPWSTR
* ppszColumnName
);
791 HRESULT GetColumn
( [in] ADS_SEARCH_HANDLE hSearchResult
, [in] LPWSTR szColumnName
,
792 [out] PADS_SEARCH_COLUMN pSearchColumn
);
793 HRESULT FreeColumn
([in] PADS_SEARCH_COLUMN pSearchColumn
);
794 HRESULT CloseSearchHandle
([in] ADS_SEARCH_HANDLE hSearchResult
);
797 /*****************************************************************************
798 * IID_IADsOpenDSObject interface
802 uuid(ddf2891e
-0f9c
-11d0
-8ad4
-00c04fd8d503
),
806 interface IADsOpenDSObject
: IDispatch
808 HRESULT OpenDSObject
([in] BSTR path
, [in] BSTR user
, [in] BSTR password
, [in] long reserved
, [out,retval] IDispatch
**obj
);
811 /*****************************************************************************
812 * IADsADSystemInfo interface
816 uuid(5bb11929
-afd1
-11d2
-9cb9
-0000f87a369e
),
820 interface IADsADSystemInfo
: IDispatch
822 [id(0x00000002), propget]
823 HRESULT UserName
([out, retval] BSTR *retval);
824 [id(0x00000003), propget]
825 HRESULT ComputerName
([out, retval] BSTR *retval);
826 [id(0x00000004), propget]
827 HRESULT SiteName
([out, retval] BSTR *retval);
828 [id(0x00000005), propget]
829 HRESULT DomainShortName
([out, retval] BSTR *retval);
830 [id(0x00000006), propget]
831 HRESULT DomainDNSName
([out, retval] BSTR *retval);
832 [id(0x00000007), propget]
833 HRESULT ForestDNSName
([out, retval] BSTR *retval);
834 [id(0x00000008), propget]
835 HRESULT PDCRoleOwner
([out, retval] BSTR *retval);
836 [id(0x00000009), propget]
837 HRESULT SchemaRoleOwner
([out, retval] BSTR *retval);
838 [id(0x0000000a), propget]
839 HRESULT IsNativeMode
([out, retval] VARIANT_BOOL *retval);
841 HRESULT GetAnyDCName
([out, retval] BSTR *retval);
843 HRESULT GetDCSiteName
([in] BSTR server
, [out, retval] BSTR *retval);
845 HRESULT RefreshSchemaCache
();
847 HRESULT GetTrees
([out, retval] VARIANT *retval);
851 helpstring("AD System Info Object"),
852 uuid(50b6327f
-afd1
-11d2
-9cb9
-0000f87a369e
),
853 progid
("ADSystemInfo"),
858 interface IADsADSystemInfo
;