[WTSAPI32][PSDK] Addendum to 27ed609a: Some of the WTS_INFO_CLASS values are NT6...
[reactos.git] / sdk / include / psdk / 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 };