wined3d: Disable occlusion query support if the implementation has 0 counter bits.
[wine] / include / iads.idl
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
19 import "oaidl.idl";
20
21 typedef 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
46 typedef 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
63 typedef 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
86 typedef ADS_SEARCHPREF_ENUM *PADS_SEARCHPREF_INFO;
87
88 typedef enum
89 {
90     ADS_STATUS_S_OK,
91     ADS_STATUS_INVALID_SEARCHPREF,
92     ADS_STATUS_INVALID_SEARCHPREFVALUE
93 } ADS_STATUSENUM;
94
95 typedef 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
128 typedef enum
129 {
130     ADS_PASSWORD_ENCODE_REQUIRE_SSL,
131     ADS_PASSWORD_ENCODE_CLEAR
132 } ADS_PASSWORD_ENCODING_ENUM;
133
134 typedef struct _ADS_CASEIGNORE_LIST
135 {
136     struct _ADS_CASEIGNORE_LIST *Next;
137     LPWSTR String;
138 } ADS_CASEIGNORE_LIST;
139
140 typedef struct _ADS_OCTET_LIST
141 {
142     struct _ADS_OCTET_LIST *Next;
143     DWORD Length;
144     BYTE *Data;
145 } ADS_OCTET_LIST;
146
147 typedef struct
148 {
149     DWORD Type;
150     LPWSTR VolumeName;
151     LPWSTR Path;
152 } ADS_PATH, *PADS_PATH;
153
154 typedef struct
155 {
156     DWORD WholeSeconds;
157     DWORD EventID;
158 } ADS_TIMESTAMP;
159
160
161 typedef ADSTYPEENUM ADSTYPE;
162 typedef LPWSTR ADS_DN_STRING;
163 typedef LPWSTR *PADS_DN_STRING;
164 typedef LPWSTR ADS_CASE_EXACT_STRING;
165 typedef LPWSTR *PADS_CASE_EXACT_STRING;
166 typedef LPWSTR ADS_CASE_IGNORE_STRING;
167 typedef LPWSTR *PADS_CASE_IGNORE_STRING;
168 typedef LPWSTR ADS_PRINTABLE_STRING;
169 typedef LPWSTR *PADS_PRINTABLE_STRING;
170 typedef LPWSTR ADS_NUMERIC_STRING;
171 typedef LPWSTR *PADS_NUMERIC_STRING;
172 typedef DWORD ADS_BOOLEAN;
173 typedef DWORD *LPNDS_BOOLEAN;
174 typedef DWORD ADS_INTEGER;
175 typedef DWORD *PADS_INTEGER;
176 typedef SYSTEMTIME ADS_UTC_TIME;
177 typedef SYSTEMTIME *PADS_UTC_TIME;
178 typedef LARGE_INTEGER ADS_LARGE_INTEGER;
179 typedef LARGE_INTEGER *PADS_LARGE_INTEGER;
180 typedef LPWSTR ADS_OBJECT_CLASS;
181 typedef LPWSTR *PADS_OBJECT_CLASS;
182 typedef struct _ADS_OCTET_LIST *PADS_OCTET_LIST;
183 typedef struct _ADS_CASEIGNORE_LIST *PADS_CASEIGNORE_LIST;
184 typedef ADS_STATUSENUM ADS_STATUS;
185 typedef ADS_SEARCHPREF_ENUM ADS_SEARCHPREF;
186 typedef HANDLE ADS_SEARCH_HANDLE;
187 typedef HANDLE *PADS_SEARCH_HANDLE;
188
189
190 typedef struct
191 {
192     DWORD dwLength;
193     BYTE *lpValue;
194 } ADS_OCTET_STRING;
195
196 typedef struct
197 {
198     DWORD dwLength;
199     BYTE *lpValue;
200 } ADS_PROV_SPECIFIC;
201
202 typedef struct
203 {
204     LPWSTR PostalAddress[ 6 ];
205 } ADS_POSTALADDRESS, *PADS_POSTALADDRESS;
206
207 typedef struct
208 {
209     LPWSTR ObjectName;
210     DWORD Level;
211     DWORD Interval;
212 } ADS_TYPEDNAME, *PADS_TYPEDNAME;
213
214 typedef struct
215 {
216     DWORD RemoteID;
217     LPWSTR ObjectName;
218 } ADS_BACKLINK;
219
220 typedef struct
221 {
222     LPWSTR ObjectName;
223     DWORD Amount;
224 } ADS_HOLD;
225
226 typedef struct
227 {
228     DWORD AddressType;
229     DWORD AddressLength;
230     BYTE *Address;
231 } ADS_NETADDRESS, *PADS_NETADDRESS;
232
233 typedef struct
234 {
235     LPWSTR ServerName;
236     DWORD ReplicaType;
237     DWORD ReplicaNumber;
238     DWORD Count;
239     PADS_NETADDRESS ReplicaAddressHints;
240 } ADS_REPLICAPOINTER, *PADS_REPLICAPOINTER;
241
242 typedef struct
243 {
244     LPWSTR TelephoneNumber;
245     DWORD NumberOfBits;
246     BYTE *Parameters;
247 } ADS_FAXNUMBER, *PADS_FAXNUMBER;
248
249
250 typedef struct
251 {
252     LPWSTR Address;
253     DWORD Type;
254 } ADS_EMAIL, *PADS_EMAIL;
255
256 typedef struct
257 {
258     DWORD dwLength;
259     BYTE *lpValue;
260 } ADS_NT_SECURITY_DESCRIPTOR;
261
262 typedef struct
263 {
264     DWORD dwLength;
265     BYTE *lpBinaryValue;
266     LPWSTR pszDNString;
267 } ADS_DN_WITH_BINARY, *PADS_DN_WITH_BINARY;
268
269 typedef struct
270 {
271     LPWSTR pszStringValue;
272     LPWSTR pszDNString;
273 } ADS_DN_WITH_STRING, *PADS_DN_WITH_STRING;
274
275 typedef 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
310 typedef struct ads_searchpref_info
311 {
312     ADS_SEARCHPREF dwSearchPref;
313     ADSVALUE vValue;
314     ADS_STATUS dwStatus;
315 } ADS_SEARCHPREF_INFO;
316
317 typedef 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 ]
333 interface 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 ]
377 interface 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 ]
428 interface 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 ]
452 interface 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 ]
481 interface 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 ]
765 interface 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 };