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

Last change on this file since 1673 was 1673, checked in by phaller, 26 years ago

Fix: LSA fixes

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