source: trunk/src/advapi32/lsa.cpp@ 6496

Last change on this file since 6496 was 4400, checked in by bird, 25 years ago

Did some attempt to make Watcom compile these files...
Had to wrap function declarations into extern "C" { } or else Watcom
generated mangled names.

File size: 38.5 KB
Line 
1/* $Id: lsa.cpp,v 1.6 2000-10-03 05:38:09 bird Exp $ */
2
3/*
4 * Win32 Security Database API functions for OS/2
5 *
6 * Copyright 1999 Patrick Haller
7 *
8 * Project Odin Software License can be found in LICENSE.TXT
9 *
10 */
11
12
13/*****************************************************************************
14 * Includes *
15 *****************************************************************************/
16
17#include <odin.h>
18#include <odinwrap.h>
19#include <os2sel.h>
20#include <os2win.h>
21#include <misc.h>
22#include "advapi32.h"
23
24ODINDEBUGCHANNEL(ADVAPI32-LSA)
25
26
27// still unknown functions
28//ADVAPI32.SystemFunction007
29//ADVAPI32.SystemFunction028
30//ADVAPI32.SystemFunction022
31//ADVAPI32.SystemFunction006
32//ADVAPI32.SystemFunction014
33//ADVAPI32.SystemFunction020
34//ADVAPI32.SystemFunction012
35//ADVAPI32.LsaSetInformationTrustedDomain
36//ADVAPI32.LsaGetSystemAccessAccount
37//ADVAPI32.LsaEnumeratePrivilegesOfAccount
38//ADVAPI32.EnumServiceGroupW
39//ADVAPI32.LsaOpenAccount
40//ADVAPI32.LsaQueryInfoTrustedDomain
41//ADVAPI32.LsaCreateTrustedDomain
42//ADVAPI32.LsaOpenTrustedDomain
43//ADVAPI32.LsaSetSecret
44//ADVAPI32.LsaQuerySecret
45//ADVAPI32.LsaOpenSecret
46//ADVAPI32.LsaCreateSecret
47//ADVAPI32.LsaEnumerateAccounts
48//ADVAPI32.LsaEnumeratePrivileges
49//ADVAPI32.LsaLookupPrivilegeDisplayName
50//ADVAPI32.LsaRemovePrivilegesFromAccount
51//ADVAPI32.LsaSetSystemAccessAccount
52//ADVAPI32.LsaDelete
53//ADVAPI32.LsaCreateAccount
54//ADVAPI32.LsaAddPrivilegesToAccount
55
56
57/*****************************************************************************
58 * Defines *
59 *****************************************************************************/
60
61 /* this define enables certain less important debug messages */
62//#define DEBUG_LOCAL 1
63
64// @@@PH: adopt to NTSTATUS.H
65typedef DWORD NTSTATUS;
66
67#ifndef STATUS_SUCCESS
68#define STATUS_SUCCESS 0 // ERROR_SUCCESS
69#endif
70
71typedef DWORD ACCESS_MASK;
72
73
74typedef PVOID LSA_HANDLE, *PLSA_HANDLE;
75
76
77typedef struct _LSA_UNICODE_STRING {
78 USHORT Length;
79 USHORT MaximumLength;
80 PWSTR Buffer;
81} LSA_UNICODE_STRING, *PLSA_UNICODE_STRING;
82
83
84typedef struct _LSA_OBJECT_ATTRIBUTES {
85 ULONG Length;
86 HANDLE RootDirectory;
87 PLSA_UNICODE_STRING ObjectName;
88 ULONG Attributes;
89 PVOID SecurityDescriptor;
90 PVOID SecurityQualityOfService;
91} LSA_OBJECT_ATTRIBUTES, *PLSA_OBJECT_ATTRIBUTES;
92
93
94typedef struct _LSA_TRANSLATED_NAME {
95 SID_NAME_USE Use;
96 LSA_UNICODE_STRING Name;
97 LONG DomainIndex;
98} LSA_TRANSLATED_NAME, *PLSA_TRANSLATED_NAME;
99
100
101typedef struct _LSA_TRANSLATED_SID {
102 SID_NAME_USE Use;
103 ULONG RelativeId;
104 LONG DomainIndex;
105} LSA_TRANSLATED_SID, *PLSA_TRANSLATED_SID;
106
107
108typedef struct _LSA_TRUST_INFORMATION {
109 LSA_UNICODE_STRING Name;
110 PSID Sid;
111} LSA_TRUST_INFORMATION, *PLSA_TRUST_INFORMATION;
112
113
114typedef struct _LSA_REFERENCED_DOMAIN_LIST {
115 ULONG Entries;
116 PLSA_TRUST_INFORMATION Domains;
117} LSA_REFERENCED_DOMAIN_LIST, *PLSA_REFERENCED_DOMAIN_LIST;
118
119
120typedef enum _POLICY_INFORMATION_CLASS {
121 PolicyAuditLogInformation = 1,
122 PolicyAuditEventsInformation,
123 PolicyPrimaryDomainInformation,
124 PolicyPdAccountInformation,
125 PolicyAccountDomainInformation,
126 PolicyLsaServerRoleInformation,
127 PolicyReplicaSourceInformation,
128 PolicyDefaultQuotaInformation,
129 PolicyModificationInformation,
130 PolicyAuditFullSetInformation,
131 PolicyAuditFullQueryInformation,
132 PolicyDnsDomainInformation,
133 PolicyMachinePasswordInformation
134} POLICY_INFORMATION_CLASS, *PPOLICY_INFORMATION_CLASS;
135
136
137typedef enum _POLICY_AUDIT_EVENT_TYPE {
138 AuditCategorySystem,
139 AuditCategoryLogon,
140 AuditCategoryObjectAccess,
141 AuditCategoryPrivilegeUse,
142 AuditCategoryDetailedTracking,
143 AuditCategoryPolicyChange,
144 AuditCategoryAccountManagement,
145 AuditCategoryDirectoryServiceAccess,
146 AuditCategoryAccountLogon
147} POLICY_AUDIT_EVENT_TYPE, *PPOLICY_AUDIT_EVENT_TYPE;
148
149
150typedef struct _POLICY_AUDIT_EVENTS_INFO {
151 BOOLEAN AuditingMode;
152 //PPOLICY_AUDIT_EVENT_OPTIONS EventAuditingOptions;
153 //PH: not documented
154 DWORD EventAuditingOptions;
155 ULONG MaximumAuditEventCount;
156} POLICY_AUDIT_EVENTS_INFO, *PPOLICY_AUDIT_EVENTS_INFO;
157
158
159typedef struct _POLICY_PRIMARY_DOMAIN_INFO {
160 LSA_UNICODE_STRING Name;
161 PSID Sid;
162} POLICY_PRIMARY_DOMAIN_INFO, *PPOLICY_PRIMARY_DOMAIN_INFO;
163
164
165typedef struct _POLICY_DNS_DOMAIN_INFO {
166 LSA_UNICODE_STRING Name;
167 LSA_UNICODE_STRING DnsDomainName;
168 LSA_UNICODE_STRING DnsForestName;
169 //GUID DomainGuid;
170 // PH: not used yet
171 DWORD DomainGuid;
172 PSID Sid;
173} POLICY_DNS_DOMAIN_INFO, *PPOLICY_DNS_DOMAIN_INFO;
174
175
176typedef struct _POLICY_ACCOUNT_DOMAIN_INFO {
177 LSA_UNICODE_STRING DomainName;
178 PSID DomainSid;
179} POLICY_ACCOUNT_DOMAIN_INFO, *PPOLICY_ACCOUNT_DOMAIN_INFO;
180
181
182typedef enum _POLICY_LSA_SERVER_ROLE {
183 PolicyServerRoleBackup = 2,
184 PolicyServerRolePrimary
185} POLICY_LSA_SERVER_ROLE, *PPOLICY_LSA_SERVER_ROLE;
186
187
188typedef struct _POLICY_LSA_SERVER_ROLE_INFO {
189 POLICY_LSA_SERVER_ROLE LsaServerRole;
190} POLICY_LSA_SERVER_ROLE_INFO, *PPOLICY_LSA_SERVER_ROLE_INFO;
191
192
193typedef struct _POLICY_MODIFICATION_INFO {
194 LARGE_INTEGER ModifiedId;
195 LARGE_INTEGER DatabaseCreationTime;
196} POLICY_MODIFICATION_INFO, *PPOLICY_MODIFICATION_INFO;
197
198
199typedef struct _POLICY_MACHINE_PASSWORD_INFO {
200 LARGE_INTEGER PasswordChangeInterval;
201} POLICY_MACHINE_PASSWORD_INFO, *PPOLICY_MACHINE_PASSWORD_INFO;
202
203
204typedef ULONG LSA_ENUMERATION_HANDLE, *PLSA_ENUMERATION_HANDLE;
205
206
207typedef struct _LSA_AUTH_INFORMATION {
208 LARGE_INTEGER LastUpdateTime;
209 ULONG AuthType;
210 ULONG AuthInfoLength;
211 PUCHAR AuthInfo;
212} LSA_AUTH_INFORMATION, *PLSA_AUTH_INFORMATION;
213
214
215typedef struct _TRUSTED_DOMAIN_AUTH_INFORMATION {
216 ULONG IncomingAuthInfos;
217 PLSA_AUTH_INFORMATION IncomingAuthenticationInformation;
218 PLSA_AUTH_INFORMATION IncomingPreviousAuthenticationInformation;
219 ULONG OutgoingAuthInfos;
220 PLSA_AUTH_INFORMATION OutgoingAuthenticationInformation;
221 PLSA_AUTH_INFORMATION OutgoingPreviousAuthenticationInformation;
222} TRUSTED_DOMAIN_AUTH_INFORMATION, *PTRUSTED_DOMAIN_AUTH_INFORMATION;
223
224
225typedef enum _TRUSTED_INFORMATION_CLASS {
226 TrustedDomainNameInformation = 1,
227 TrustedControllersInformation,
228 TrustedPosixOffsetInformation,
229 TrustedPasswordInformation,
230 TrustedDomainInformationBasic,
231 TrustedDomainInformationEx,
232 TrustedDomainAuthInformation,
233 TrustedDomainFullInformation
234} TRUSTED_INFORMATION_CLASS, *PTRUSTED_INFORMATION_CLASS;
235
236
237typedef struct _TRUSTED_DOMAIN_NAME_INFO {
238 LSA_UNICODE_STRING Name;
239} TRUSTED_DOMAIN_NAME_INFO, *PTRUSTED_DOMAIN_NAME_INFO;
240
241
242typedef struct _TRUSTED_POSIX_OFFSET_INFO {
243 ULONG Offset;
244} TRUSTED_POSIX_OFFSET_INFO, *PTRUSTED_POSIX_OFFSET_INFO;
245
246
247typedef struct _TRUSTED_PASSWORD_INFO {
248 LSA_UNICODE_STRING Password;
249 LSA_UNICODE_STRING OldPassword;
250} TRUSTED_PASSWORD_INFO, *PTRUSTED_PASSWORD_INFO;
251
252
253typedef struct _TRUSTED_DOMAIN_INFORMATION_EX {
254 LSA_UNICODE_STRING Name;
255 LSA_UNICODE_STRING FlatName;
256 PSID Sid;
257 ULONG TrustDirection;
258 ULONG TrustType;
259 ULONG TrustAttributes;
260} TRUSTED_DOMAIN_INFORMATION_EX, *PTRUSTED_DOMAIN_INFORMATION_EX;
261
262
263typedef struct _TRUSTED_DOMAIN_FULL_INFORMATION {
264 TRUSTED_DOMAIN_INFORMATION_EX Information;
265 TRUSTED_POSIX_OFFSET_INFO PosixOffset;
266 TRUSTED_DOMAIN_AUTH_INFORMATION AuthInformation;
267} TRUSTED_DOMAIN_FULL_INFORMATION, *PTRUSTED_DOMAIN_FULL_INFORMATION;
268
269
270// undocumented structures
271typedef DWORD POLICY_NOTIFICATION_INFORMATION_CLASS;
272
273
274
275/*****************************************************************************
276 * Prototypes *
277 *****************************************************************************/
278
279extern "C"
280{
281NTSTATUS WIN32API LsaAddAccountRights(LSA_HANDLE PolicyHandle,
282 PSID AccountSid,
283 PLSA_UNICODE_STRING UserRights,
284 ULONG CountOfRights);
285
286NTSTATUS WIN32API LsaClose(LSA_HANDLE hLsaObject);
287
288NTSTATUS WIN32API LsaCreateTrustedDomainEx(LSA_HANDLE PolicyHandle,
289 PTRUSTED_DOMAIN_INFORMATION_EX TrustedDomainInformation,
290 PTRUSTED_DOMAIN_AUTH_INFORMATION AuthenticationInformation,
291 ACCESS_MASK DesiredAccess,
292 PLSA_HANDLE TrustedDomainHandle);
293
294NTSTATUS WIN32API LsaDeleteTrustedDomain(LSA_HANDLE PolicyHandle,
295 PSID TrustedDomainSid);
296
297NTSTATUS WIN32API LsaEnumerateAccountRights(LSA_HANDLE PolicyHandle,
298 PSID AccountSid,
299 PLSA_UNICODE_STRING* UserRights,
300 PULONG CountOfRights);
301
302NTSTATUS WIN32API LsaEnumerateAccountsWithUserRight(LSA_HANDLE PolicyHandle,
303 PLSA_UNICODE_STRING UserRight,
304 PVOID * EnumerationBuffer,
305 PULONG CountReturned);
306
307NTSTATUS WIN32API LsaEnumerateTrustedDomains(LSA_HANDLE PolicyHandle,
308 PLSA_ENUMERATION_HANDLE EnumerationContext,
309 PVOID * Buffer,
310 ULONG PreferedMaximumLength,
311 PULONG CountReturned);
312
313NTSTATUS WIN32API LsaEnumerateTrustedDomainsEx(LSA_HANDLE PolicyHandle,
314 PLSA_ENUMERATION_HANDLE EnumerationContext,
315 PVOID * Buffer,
316 ULONG PreferredMaximumLength,
317 PULONG CountReturned);
318
319NTSTATUS WIN32API LsaFreeMemory(PVOID Buffer);
320
321NTSTATUS WIN32API LsaLookupNames(LSA_HANDLE PolicyHandle,
322 ULONG Count,
323 PLSA_UNICODE_STRING Names,
324 PLSA_REFERENCED_DOMAIN_LIST* ReferencedDomains,
325 PLSA_TRANSLATED_SID* Sids);
326
327NTSTATUS WIN32API LsaLookupSids(LSA_HANDLE PolicyHandle,
328 ULONG Count,
329 PSID* Sids,
330 PLSA_REFERENCED_DOMAIN_LIST* ReferencedDomains,
331 PLSA_TRANSLATED_NAME* Names);
332
333ULONG WIN32API LsaNtStatusToWinError(NTSTATUS Status);
334
335NTSTATUS WIN32API LsaOpenPolicy(PLSA_UNICODE_STRING SystemName,
336 PLSA_OBJECT_ATTRIBUTES ObjectAttributes,
337 ACCESS_MASK DesiredAccess,
338 PLSA_HANDLE PolicyHandle);
339
340NTSTATUS WIN32API LsaOpenTrustedDomainByName(LSA_HANDLE PolicyHandle,
341 PLSA_UNICODE_STRING TrustedDomainName,
342 ACCESS_MASK DesiredAccess,
343 PLSA_HANDLE TrustedDomainHandle);
344
345NTSTATUS WIN32API LsaQueryInformationPolicy(LSA_HANDLE PolicyHandle,
346 POLICY_INFORMATION_CLASS InformationClass,
347 PVOID * Buffer);
348
349NTSTATUS WIN32API LsaQueryTrustedDomainInfo(LSA_HANDLE PolicyHandle,
350 PSID TrustedDomainSid,
351 TRUSTED_INFORMATION_CLASS InformationClass,
352 PVOID * Buffer);
353
354NTSTATUS WIN32API LsaQueryTrustedDomainInfoByName(LSA_HANDLE PolicyHandle,
355 PLSA_UNICODE_STRING TrustedDomainName,
356 TRUSTED_INFORMATION_CLASS InformationClass,
357 PVOID * Buffer);
358
359NTSTATUS WIN32API LsaRegisterPolicyChangeNotification(
360 POLICY_NOTIFICATION_INFORMATION_CLASS InformationClass,
361 HANDLE NotificationEventHandle);
362
363NTSTATUS WIN32API LsaRemoveAccountRights(LSA_HANDLE PolicyHandle,
364 PSID AccountSid,
365 BOOLEAN AllRights,
366 PLSA_UNICODE_STRING UserRights,
367 ULONG CountOfRights);
368
369NTSTATUS WIN32API LsaRetrievePrivateData(LSA_HANDLE PolicyHandle,
370 PLSA_UNICODE_STRING KeyName,
371 PLSA_UNICODE_STRING* PrivateData);
372
373NTSTATUS WIN32API LsaSetInformationPolicy(LSA_HANDLE PolicyHandle,
374 POLICY_INFORMATION_CLASS InformationClass,
375 PVOID * Buffer);
376
377NTSTATUS WIN32API LsaSetTrustedDomainInfo(LSA_HANDLE PolicyHandle,
378 PSID TrustedDomainSid,
379 TRUSTED_INFORMATION_CLASS InformationClass,
380 PVOID Buffer);
381
382NTSTATUS WIN32API LsaStorePrivateData(LSA_HANDLE PolicyHandle,
383 PLSA_UNICODE_STRING KeyName,
384 PLSA_UNICODE_STRING PrivateData);
385
386NTSTATUS WIN32API LsaUnregisterPolicyChangeNotification(
387 POLICY_NOTIFICATION_INFORMATION_CLASS InformationClass,
388 HANDLE NotificationEventHandle);
389
390}
391
392
393/*****************************************************************************
394 * Name : LsaAddAccountRights
395 * Purpose : The LsaAddAccountRights function assigns one or more
396 * privileges to an account. The function ignores any specified
397 * privileges that are already held by the account. If the
398 * account does not exist, LsaAddAccountRights creates it.
399 * Parameters: LSA_HANDLE PolicyHandle,
400 * PSID AccountSid,
401 * PLSA_UNICODE_STRING UserRights,
402 * ULONG CountOfRights
403 * Variables :
404 * Result : NTSTATUS
405 * Remark :
406 * Status : UNTESTED STUB
407 *
408 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
409 *****************************************************************************/
410
411ODINFUNCTION4(NTSTATUS, LsaAddAccountRights,
412 LSA_HANDLE, PolicyHandle,
413 PSID, AccountSid,
414 PLSA_UNICODE_STRING, UserRights,
415 ULONG, CountOfRights)
416{
417 dprintf(("ADVAPI32:Lsa: LsaAddAccountRights not implemented.\n"));
418 return 0;
419}
420
421
422/*****************************************************************************
423 * Name : LsaClose
424 * Purpose : The LsaClose function closes a handle to an LSA policy object.
425 * Parameters: LSA_HANDLE ObjectHandle
426 * Variables :
427 * Result : NTSTATUS
428 * Remark :
429 * Status : UNTESTED STUB
430 *
431 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
432 *****************************************************************************/
433
434ODINFUNCTION1(NTSTATUS,LsaClose,LSA_HANDLE,hLsaObject)
435{
436 dprintf(("ADVAPI32:Lsa: LsaClose not implemented.\n"));
437 return 0;
438}
439
440
441/*****************************************************************************
442 * Name : LsaCreateTrustedDomainEx
443 * Purpose : The LsaCreateTrustedDomainEx function creates a new
444 * TrustedDomain object.
445 * Parameters: LSA_HANDLE PolicyHandle,
446 * PTRUSTED_DOMAIN_INFORMATION_EX TrustedDomainInformation,
447 * PTRUSTED_DOMAIN_AUTH_INFORMATION AuthenticationInformation,
448 * ACCESS_MASK DesiredAccess,
449 * PLSA_HANDLE TrustedDomainHandle
450 * Variables :
451 * Result : NTSTATUS
452 * Remark :
453 * Status : UNTESTED STUB
454 *
455 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
456 *****************************************************************************/
457
458ODINFUNCTION5(NTSTATUS, LsaCreateTrustedDomainEx,
459 LSA_HANDLE, PolicyHandle,
460 PTRUSTED_DOMAIN_INFORMATION_EX, TrustedDomainInformation,
461 PTRUSTED_DOMAIN_AUTH_INFORMATION,AuthenticationInformation,
462 ACCESS_MASK, DesiredAccess,
463 PLSA_HANDLE, TrustedDomainHandle)
464{
465 dprintf(("ADVAPI32:Lsa: LsaCreateTrustedDomainEx not implemented.\n"));
466 return 0;
467}
468
469
470/*****************************************************************************
471 * Name : LsaDeleteTrustedDomain
472 * Purpose : The LsaDeleteTrustedDomain function deletes a trusted
473 * domain from list of trusted domains for an LSA policy object.
474 * Parameters: LSA_HANDLE PolicyHandle
475 * PSID TrustedDomainSid
476 * Variables :
477 * Result : NTSTATUS
478 * Remark :
479 * Status : UNTESTED STUB
480 *
481 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
482 *****************************************************************************/
483
484ODINFUNCTION2(NTSTATUS,LsaDeleteTrustedDomain, LSA_HANDLE, PolicyHandle,
485 PSID, TrustedDomainSid)
486{
487 dprintf(("ADVAPI32:Lsa: LsaDeleteTrustedDomain not implemented.\n"));
488 return 0;
489}
490
491
492/*****************************************************************************
493 * Name : LsaEnumerateAccountRights
494 * Purpose : The LsaEnumerateAccountRights function enumerates
495 * the privileges assigned to an account.
496 * Parameters: LSA_HANDLE PolicyHandle,
497 * PSID AccountSid,
498 * PLSA_UNICODE_STRING *UserRights,
499 * PULONG CountOfRights
500 * Variables :
501 * Result : NTSTATUS
502 * Remark :
503 * Status : UNTESTED STUB
504 *
505 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
506 *****************************************************************************/
507
508ODINFUNCTION4(NTSTATUS, LsaEnumerateAccountRights,
509 LSA_HANDLE, PolicyHandle,
510 PSID, AccountSid,
511 PLSA_UNICODE_STRING*,UserRights,
512 PULONG, CountOfRights)
513{
514 dprintf(("ADVAPI32:Lsa: LsaEnumerateAccountRights not implemented.\n"));
515 return 0;
516}
517
518
519
520/*****************************************************************************
521 * Name : LsaEnumerateAccountsWithUserRight
522 * Purpose : The LsaEnumerateAccountsWithUserRight
523 * function returns an array of pointers to SIDs that
524 * identify the accounts in an LSA policy object's
525 * database that hold a specified privilege.
526 * Parameters: LSA_HANDLE PolicyHandle
527 * PLSA_UNICODE_STRING UserRight
528 * PVOID * EnumerationBuffer
529 * PULONG CountReturned
530 * Variables :
531 * Result : NTSTATUS
532 * Remark :
533 * Status : UNTESTED STUB
534 *
535 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
536 *****************************************************************************/
537
538ODINFUNCTION4(NTSTATUS, LsaEnumerateAccountsWithUserRight,
539 LSA_HANDLE, PolicyHandle,
540 PLSA_UNICODE_STRING, UserRight,
541 PVOID *, EnumerationBuffer,
542 PULONG, CountReturned)
543{
544 dprintf(("ADVAPI32:Lsa: LsaEnumerateAccountsWithUserRight not implemented.\n"));
545 return 0;
546}
547
548
549/*****************************************************************************
550 * Name : LsaEnumerateTrustedDomains
551 * Purpose : The LsaEnumerateTrustedDomains function retrieves
552 * the names and SIDs of domains trusted by an LSA policy
553 * object.
554 * Parameters: LSA_HANDLE PolicyHandle,
555 * PLSA_ENUMERATION_HANDLE EnumerationContext,
556 * PVOID * Buffer,
557 * ULONG PreferedMaximumLength,
558 * PULONG CountReturned
559 * Variables :
560 * Result : NTSTATUS
561 * Remark :
562 * Status : UNTESTED STUB
563 *
564 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
565 *****************************************************************************/
566
567ODINFUNCTION5(NTSTATUS, LsaEnumerateTrustedDomains,
568 LSA_HANDLE, PolicyHandle,
569 PLSA_ENUMERATION_HANDLE, EnumerationContext,
570 PVOID *, Buffer,
571 ULONG, PreferedMaximumLength,
572 PULONG, CountReturned)
573{
574 dprintf(("ADVAPI32:Lsa: LsaEnumerateTrustedDomains not implemented.\n"));
575 return 0;
576}
577
578
579/*****************************************************************************
580 * Name : LsaEnumerateTrustedDomainsEx
581 * Purpose : The LsaEnumerateTrustedDomainsEx function returns
582 * information about the domains trusted by the local system.
583 * This function returns more information than
584 * LsaEnumerateTrustedDomains.
585 * Parameters: LSA_HANDLE PolicyHandle,
586 * PLSA_ENUMERATION_HANDLE EnumerationContext,
587 * PVOID * Buffer,
588 * ULONG PrefefredMaximumLength,
589 * PULONG CountReturned
590 * Variables :
591 * Result : NTSTATUS
592 * Remark :
593 * Status : UNTESTED STUB
594 *
595 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
596 *****************************************************************************/
597
598ODINFUNCTION5(NTSTATUS, LsaEnumerateTrustedDomainsEx,
599 LSA_HANDLE, PolicyHandle,
600 PLSA_ENUMERATION_HANDLE, EnumerationContext,
601 PVOID *, Buffer,
602 ULONG, PreferredMaximumLength,
603 PULONG, CountReturned)
604{
605 dprintf(("ADVAPI32:Lsa: LsaEnumerateTrustedDomains not implemented.\n"));
606 return 0;
607}
608
609
610/*****************************************************************************
611 * Name : LsaFreeMemory
612 * Purpose : The LsaFreeMemory function frees memory allocated for
613 * an output buffer by an LSA function call. LSA functions that
614 * return variable-length output buffers always allocate the
615 * buffer on behalf of the caller. The caller must free this
616 * memory by passing the returned buffer pointer to
617 * LsaFreeMemory when the memory is no longer required.
618 * Parameters: PVOID Buffer
619 * Variables :
620 * Result : NTSTATUS
621 * Remark :
622 * Status : UNTESTED STUB
623 *
624 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
625 *****************************************************************************/
626
627ODINFUNCTION1(NTSTATUS, LsaFreeMemory,
628 PVOID, Buffer)
629{
630 dprintf(("ADVAPI32:Lsa: LsaFreeMemory not implemented.\n"));
631 return 0;
632}
633
634
635/*****************************************************************************
636 * Name : LsaLookupNames
637 * Purpose : The LsaLookupNames function looks up the SIDs
638 * that correspond to an array of user, group, or local
639 * group names.
640 * Parameters: LSA_HANDLE PolicyHandle
641 * ULONG Count
642 * PLSA_UNICODE_STRING Names
643 * PLSA_REFERENCED_DOMAIN_LIST *ReferencedDomains
644 * PLSA_TRANSLATED_SID *Sids
645 * Variables :
646 * Result : NTSTATUS
647 * Remark :
648 * Status : UNTESTED STUB
649 *
650 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
651 *****************************************************************************/
652
653ODINFUNCTION5(NTSTATUS, LsaLookupNames,
654 LSA_HANDLE, PolicyHandle,
655 ULONG, Count,
656 PLSA_UNICODE_STRING, Names,
657 PLSA_REFERENCED_DOMAIN_LIST*, ReferencedDomains,
658 PLSA_TRANSLATED_SID*, Sids)
659{
660 dprintf(("ADVAPI32:Lsa: LsaLookupNames not implemented.\n"));
661 return 0;
662}
663
664
665/*****************************************************************************
666 * Name : LsaLookupSids
667 * Purpose : The LsaLookupSids function looks up the names
668 * that corresponding to an array of SIDs. If a name can
669 * not be mapped to a SID, LsaLookupSids converts
670 * the SID to character form.
671 * Parameters: LSA_HANDLE PolicyHandle,
672 * ULONG Count
673 * PSID *Sids
674 * PLSA_REFERENCED_DOMAIN_LIST *ReferencedDomains
675 * PLSA_TRANSLATED_NAME *Names
676 * Variables :
677 * Result : NTSTATUS
678 * Remark :
679 * Status : UNTESTED STUB
680 *
681 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
682 *****************************************************************************/
683
684ODINFUNCTION5(NTSTATUS, LsaLookupSids,
685 LSA_HANDLE, PolicyHandle,
686 ULONG, Count,
687 PSID*, Sids,
688 PLSA_REFERENCED_DOMAIN_LIST*,ReferencedDomains,
689 PLSA_TRANSLATED_NAME*, Names)
690{
691 dprintf(("ADVAPI32:Lsa: LsaLookupNames not implemented.\n"));
692 return 0;
693}
694
695
696/*****************************************************************************
697 * Name : LsaNtStatusToWinError
698 * Purpose : The LsaNtStatusToWinError function converts an
699 * NTSTATUS code returned by an LSA function to a Windows
700 * error code
701 * Parameters: NTSTATUS Status
702 * Variables :
703 * Result : NTSTATUS
704 * Remark :
705 * Status : UNTESTED STUB
706 *
707 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
708 *****************************************************************************/
709
710ODINFUNCTION1(ULONG, LsaNtStatusToWinError,
711 NTSTATUS, Status)
712{
713 dprintf(("ADVAPI32:Lsa: LsaNtStatusToWinError not implemented.\n"));
714 return Status;
715}
716
717
718
719/*****************************************************************************
720 * Name : LsaOpenTrustedDomainByName
721 * Purpose : The LsaOpenTrustedDomainByName function opens the
722 * LSA policy handle on a remote trusted domain. You can use
723 * pass this handle into LSA function calls in order to query
724 * and/or manage the LSA policy of the remote machine.
725 * Parameters: LSA_HANDLE PolicyHandle,
726 * PLSA_UNICODE_STRING TrustedDomainName,
727 * ACCESS_MASK DesiredAccess,
728 * PLSA_HANDLE TrustedDomainHandle
729 * Variables :
730 * Result : NTSTATUS
731 * Remark :
732 * Status : UNTESTED STUB
733 *
734 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
735 *****************************************************************************/
736
737ODINFUNCTION4(NTSTATUS, LsaOpenTrustedDomainByName,
738 LSA_HANDLE, PolicyHandle,
739 PLSA_UNICODE_STRING, TrustedDomainName,
740 ACCESS_MASK, DesiredAccess,
741 PLSA_HANDLE, TrustedDomainHandle)
742{
743 dprintf(("ADVAPI32:Lsa: LsaOpenTrustedDomainByName not implemented.\n"));
744 return 0;
745}
746
747
748/*****************************************************************************
749 * Name : LsaQueryInformationPolicy
750 * Purpose : The LsaQueryInformationPolicy function
751 * retrieves information about an LSA policy object.
752 * Parameters: LSA_HANDLE PolicyHandle,
753 * POLICY_INFORMATION_CLASS InformationClass,
754 * PVOID *Buffer
755 * Variables :
756 * Result : NTSTATUS
757 * Remark :
758 * Status : UNTESTED STUB
759 *
760 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
761 *****************************************************************************/
762
763ODINFUNCTION3(NTSTATUS, LsaQueryInformationPolicy,
764 LSA_HANDLE, PolicyHandle,
765 POLICY_INFORMATION_CLASS, InformationClass,
766 PVOID *, Buffer)
767{
768 dprintf(("ADVAPI32:Lsa: LsaQueryInformationPolicy not implemented.\n"));
769 return 0;
770}
771
772
773/*****************************************************************************
774 * Name : LsaQueryTrustedDomainInfo
775 * Purpose : The LsaQueryTrustedDomainInfo function retrieves
776 * information about a trusted domain object.
777 * Parameters: LSA_HANDLE PolicyHandle,
778 * PSID TrustedDomainSid,
779 * TRUSTED_INFORMATION_CLASS InformationClass,
780 * PVOID * Buffer
781 * Variables :
782 * Result : NTSTATUS
783 * Remark :
784 * Status : UNTESTED STUB
785 *
786 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
787 *****************************************************************************/
788
789ODINFUNCTION4(NTSTATUS, LsaQueryTrustedDomainInfo,
790 LSA_HANDLE, PolicyHandle,
791 PSID, TrustedDomainSid,
792 TRUSTED_INFORMATION_CLASS, InformationClass,
793 PVOID *, Buffer)
794{
795 dprintf(("ADVAPI32:Lsa: LsaQueryTrustedDomainInfo not implemented.\n"));
796 return 0;
797}
798
799
800/*****************************************************************************
801 * Name : LsaQueryTrustedDomainInfoByName
802 * Purpose : The LsaQueryTrustedDomainInfo function retrieves
803 * information about a trusted domain object.
804 * Parameters: LSA_HANDLE PolicyHandle,
805 * PLSA_UNICODE_STRING TrustedDomainName,
806 * TRUSTED_INFORMATION_CLASS InformationClass,
807 * PVOID * Buffer
808 * Variables :
809 * Result : NTSTATUS
810 * Remark :
811 * Status : UNTESTED STUB
812 *
813 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
814 *****************************************************************************/
815
816ODINFUNCTION4(NTSTATUS, LsaQueryTrustedDomainInfoByName,
817 LSA_HANDLE, PolicyHandle,
818 PLSA_UNICODE_STRING, TrustedDomainName,
819 TRUSTED_INFORMATION_CLASS, InformationClass,
820 PVOID *, Buffer)
821{
822 dprintf(("ADVAPI32:Lsa: LsaQueryTrustedDomainInfoByName not implemented.\n"));
823 return 0;
824}
825
826
827/*****************************************************************************
828 * Name : LsaRegisterPolicyChangeNotification
829 * Purpose : The LsaRegisterPolicyChangeNotification function
830 * registers an event handle with the local security authority
831 * (LSA). This event handle is signaled whenever the indicated
832 * LSA policy is modified.
833 * Parameters: POLICY_NOTIFICATION_INFORMATION_CLASS InformationClass
834 * HANDLE NotificationEventHandle
835 * Variables :
836 * Result : NTSTATUS
837 * Remark :
838 * Status : UNTESTED STUB
839 *
840 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
841 *****************************************************************************/
842
843ODINFUNCTION2(NTSTATUS, LsaRegisterPolicyChangeNotification,
844 POLICY_NOTIFICATION_INFORMATION_CLASS, InformationClass,
845 HANDLE, NotificationEventHandle)
846{
847 dprintf(("ADVAPI32:Lsa: LsaRegisterPolicyChangeNotification not implemented.\n"));
848 return 0;
849}
850
851
852/*****************************************************************************
853 * Name : LsaRemoveAccountRights
854 * Purpose : The LsaRemoveAccountRights function removes one or
855 * more privileges from an account. You can specify the
856 * privileges to be removed, or you can set a flag to remove all
857 * privileges. If you specify privileges not held by the account,
858 * the function ignores them. The function deletes the account
859 * if you remove all privileges.
860 * Parameters: LSA_HANDLE PolicyHandle,
861 * PSID AccountSid,
862 * BOOLEAN AllRights,
863 * PLSA_UNICODE_STRING UserRights,
864 * ULONG CountOfRights
865 * Variables :
866 * Result : NTSTATUS
867 * Remark :
868 * Status : UNTESTED STUB
869 *
870 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
871 *****************************************************************************/
872
873ODINFUNCTION5(NTSTATUS, LsaRemoveAccountRights,
874 LSA_HANDLE, PolicyHandle,
875 PSID, AccountSid,
876 BOOLEAN, AllRights,
877 PLSA_UNICODE_STRING, UserRights,
878 ULONG, CountOfRights)
879{
880 dprintf(("ADVAPI32:Lsa: LsaRemoveAccountRights not implemented.\n"));
881 return 0;
882}
883
884
885/*****************************************************************************
886 * Name : LsaRetrievePrivateData
887 * Purpose : The LsaRetrievePrivateData function retrieves private
888 * data that was stored by the LsaStorePrivateData
889 * function.
890 * Parameters: LSA_HANDLE PolicyHandle,
891 * PLSA_UNICODE_STRING KeyName,
892 * PLSA_UNICODE_STRING *PrivateData
893 * Variables :
894 * Result : NTSTATUS
895 * Remark :
896 * Status : UNTESTED STUB
897 *
898 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
899 *****************************************************************************/
900
901ODINFUNCTION3(NTSTATUS, LsaRetrievePrivateData,
902 LSA_HANDLE, PolicyHandle,
903 PLSA_UNICODE_STRING, KeyName,
904 PLSA_UNICODE_STRING*,PrivateData)
905{
906 dprintf(("ADVAPI32:Lsa: LsaRetrievePrivateData not implemented.\n"));
907 return 0;
908}
909
910
911/*****************************************************************************
912 * Name : LsaSetInformationPolicy
913 * Purpose : The LsaSetInformationPolicy function modifies
914 * information in an LSA policy object.
915 * Parameters: LSA_HANDLE PolicyHandle,
916 * POLICY_INFORMATION_CLASS InformationClass,
917 * PVOID *Buffer
918 * Variables :
919 * Result : NTSTATUS
920 * Remark :
921 * Status : UNTESTED STUB
922 *
923 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
924 *****************************************************************************/
925
926ODINFUNCTION3(NTSTATUS, LsaSetInformationPolicy,
927 LSA_HANDLE, PolicyHandle,
928 POLICY_INFORMATION_CLASS, InformationClass,
929 PVOID *, Buffer)
930{
931 dprintf(("ADVAPI32:Lsa: LsaSetInformationPolicy not implemented.\n"));
932 return 0;
933}
934
935
936/*****************************************************************************
937 * Name : LsaSetTrustedDomainInfo
938 * Purpose : The LsaSetTrustedDomainInformation function
939 * modifies an LSA policy object's information about a trusted
940 * domain object.
941 * Parameters: LSA_HANDLE PolicyHandle,
942 * PSID TrustedDomainSid,
943 * TRUSTED_INFORMATION_CLASS InformationClass,
944 * PVOID Buffer
945 * Variables :
946 * Result : NTSTATUS
947 * Remark :
948 * Status : UNTESTED STUB
949 *
950 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
951 *****************************************************************************/
952
953ODINFUNCTION4(NTSTATUS, LsaSetTrustedDomainInfo,
954 LSA_HANDLE, PolicyHandle,
955 PSID, TrustedDomainSid,
956 TRUSTED_INFORMATION_CLASS, InformationClass,
957 PVOID, Buffer)
958{
959 dprintf(("ADVAPI32:Lsa: LsaSetTrustedDomainInfo not implemented.\n"));
960 return 0;
961}
962
963
964/*****************************************************************************
965 * Name : LsaSetTrustedDomainInfoByName
966 * Purpose : The LsaSetTrustedDomainInformation function
967 * modifies an LSA policy object's information about a trusted
968 * domain object.
969 * Parameters: LSA_HANDLE PolicyHandle,
970 * PLSA_UNICODE_STRING TrustedDomainName,
971 * TRUSTED_INFORMATION_CLASS InformationClass,
972 * PVOID Buffer
973 * Variables :
974 * Result : NTSTATUS
975 * Remark :
976 * Status : UNTESTED STUB
977 *
978 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
979 *****************************************************************************/
980
981ODINFUNCTION4(NTSTATUS, LsaSetTrustedDomainInfoByName,
982 LSA_HANDLE, PolicyHandle,
983 PLSA_UNICODE_STRING, TrustedDomainName,
984 TRUSTED_INFORMATION_CLASS, InformationClass,
985 PVOID, Buffer)
986{
987 dprintf(("ADVAPI32:Lsa: LsaSetTrustedDomainInfoByName not implemented.\n"));
988 return 0;
989}
990
991
992/*****************************************************************************
993 * Name : LsaStorePrivateData
994 * Purpose : The LsaStorePrivateData function stores or deletes an
995 * LSA policy object's private data under a specified registry
996 * key.
997 * Parameters: LSA_HANDLE PolicyHandle,
998 * PLSA_UNICODE_STRING KeyName,
999 * PLSA_UNICODE_STRING PrivateData
1000 * Variables :
1001 * Result : NTSTATUS
1002 * Remark :
1003 * Status : UNTESTED STUB
1004 *
1005 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
1006 *****************************************************************************/
1007
1008ODINFUNCTION3(NTSTATUS, LsaStorePrivateData,
1009 LSA_HANDLE, PolicyHandle,
1010 PLSA_UNICODE_STRING,KeyName,
1011 PLSA_UNICODE_STRING,PrivateData)
1012{
1013 dprintf(("ADVAPI32:Lsa: LsaStorePrivateData not implemented.\n"));
1014 return 0;
1015}
1016
1017
1018/*****************************************************************************
1019 * Name : LsaUnregisterPolicyChangeNotification
1020 * Purpose : The LsaUnregisterPolicyChangeNotification function
1021 * disables the previously registered notification event.
1022 * Parameters: POLICY_NOTIFICATION_INFORMATION_CLASS InformationClass
1023 * HANDLE NotificationEventHandle
1024 * Variables :
1025 * Result : NTSTATUS
1026 * Remark :
1027 * Status : UNTESTED STUB
1028 *
1029 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
1030 *****************************************************************************/
1031
1032ODINFUNCTION2(NTSTATUS, LsaUnregisterPolicyChangeNotification,
1033 POLICY_NOTIFICATION_INFORMATION_CLASS, InformationClass,
1034 HANDLE, NotificationEventHandle)
1035{
1036 dprintf(("ADVAPI32:Lsa: LsaUnregisterPolicyChangeNotification not implemented.\n"));
1037 return 0;
1038}
1039
Note: See TracBrowser for help on using the repository browser.