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

Last change on this file since 1894 was 1894, checked in by sandervl, 26 years ago

security apis forwarded to ntdll

File size: 39.1 KB
Line 
1/* $Id: lsa.cpp,v 1.3 1999-11-30 19:41:06 sandervl 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
732/*****************************************************************************
733 * Name : LsaOpenTrustedDomainByName
734 * Purpose : The LsaOpenTrustedDomainByName function opens the
735 * LSA policy handle on a remote trusted domain. You can use
736 * pass this handle into LSA function calls in order to query
737 * and/or manage the LSA policy of the remote machine.
738 * Parameters: LSA_HANDLE PolicyHandle,
739 * PLSA_UNICODE_STRING TrustedDomainName,
740 * ACCESS_MASK DesiredAccess,
741 * PLSA_HANDLE TrustedDomainHandle
742 * Variables :
743 * Result : NTSTATUS
744 * Remark :
745 * Status : UNTESTED STUB
746 *
747 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
748 *****************************************************************************/
749
750ODINFUNCTION4(NTSTATUS, LsaOpenTrustedDomainByName,
751 LSA_HANDLE, PolicyHandle,
752 PLSA_UNICODE_STRING, TrustedDomainName,
753 ACCESS_MASK, DesiredAccess,
754 PLSA_HANDLE, TrustedDomainHandle)
755{
756 dprintf(("ADVAPI32:Lsa: LsaOpenTrustedDomainByName not implemented.\n"));
757 return 0;
758}
759
760
761/*****************************************************************************
762 * Name : LsaQueryInformationPolicy
763 * Purpose : The LsaQueryInformationPolicy function
764 * retrieves information about an LSA policy object.
765 * Parameters: LSA_HANDLE PolicyHandle,
766 * POLICY_INFORMATION_CLASS InformationClass,
767 * PVOID *Buffer
768 * Variables :
769 * Result : NTSTATUS
770 * Remark :
771 * Status : UNTESTED STUB
772 *
773 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
774 *****************************************************************************/
775
776ODINFUNCTION3(NTSTATUS, LsaQueryInformationPolicy,
777 LSA_HANDLE, PolicyHandle,
778 POLICY_INFORMATION_CLASS, InformationClass,
779 PVOID *, Buffer)
780{
781 dprintf(("ADVAPI32:Lsa: LsaQueryInformationPolicy not implemented.\n"));
782 return 0;
783}
784
785
786/*****************************************************************************
787 * Name : LsaQueryTrustedDomainInfo
788 * Purpose : The LsaQueryTrustedDomainInfo function retrieves
789 * information about a trusted domain object.
790 * Parameters: LSA_HANDLE PolicyHandle,
791 * PSID TrustedDomainSid,
792 * TRUSTED_INFORMATION_CLASS InformationClass,
793 * PVOID * Buffer
794 * Variables :
795 * Result : NTSTATUS
796 * Remark :
797 * Status : UNTESTED STUB
798 *
799 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
800 *****************************************************************************/
801
802ODINFUNCTION4(NTSTATUS, LsaQueryTrustedDomainInfo,
803 LSA_HANDLE, PolicyHandle,
804 PSID, TrustedDomainSid,
805 TRUSTED_INFORMATION_CLASS, InformationClass,
806 PVOID *, Buffer)
807{
808 dprintf(("ADVAPI32:Lsa: LsaQueryTrustedDomainInfo not implemented.\n"));
809 return 0;
810}
811
812
813/*****************************************************************************
814 * Name : LsaQueryTrustedDomainInfoByName
815 * Purpose : The LsaQueryTrustedDomainInfo function retrieves
816 * information about a trusted domain object.
817 * Parameters: LSA_HANDLE PolicyHandle,
818 * PLSA_UNICODE_STRING TrustedDomainName,
819 * TRUSTED_INFORMATION_CLASS InformationClass,
820 * PVOID * Buffer
821 * Variables :
822 * Result : NTSTATUS
823 * Remark :
824 * Status : UNTESTED STUB
825 *
826 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
827 *****************************************************************************/
828
829ODINFUNCTION4(NTSTATUS, LsaQueryTrustedDomainInfoByName,
830 LSA_HANDLE, PolicyHandle,
831 PLSA_UNICODE_STRING, TrustedDomainName,
832 TRUSTED_INFORMATION_CLASS, InformationClass,
833 PVOID *, Buffer)
834{
835 dprintf(("ADVAPI32:Lsa: LsaQueryTrustedDomainInfoByName not implemented.\n"));
836 return 0;
837}
838
839
840/*****************************************************************************
841 * Name : LsaRegisterPolicyChangeNotification
842 * Purpose : The LsaRegisterPolicyChangeNotification function
843 * registers an event handle with the local security authority
844 * (LSA). This event handle is signaled whenever the indicated
845 * LSA policy is modified.
846 * Parameters: POLICY_NOTIFICATION_INFORMATION_CLASS InformationClass
847 * HANDLE NotificationEventHandle
848 * Variables :
849 * Result : NTSTATUS
850 * Remark :
851 * Status : UNTESTED STUB
852 *
853 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
854 *****************************************************************************/
855
856ODINFUNCTION2(NTSTATUS, LsaRegisterPolicyChangeNotification,
857 POLICY_NOTIFICATION_INFORMATION_CLASS, InformationClass,
858 HANDLE, NotificationEventHandle)
859{
860 dprintf(("ADVAPI32:Lsa: LsaRegisterPolicyChangeNotification not implemented.\n"));
861 return 0;
862}
863
864
865/*****************************************************************************
866 * Name : LsaRemoveAccountRights
867 * Purpose : The LsaRemoveAccountRights function removes one or
868 * more privileges from an account. You can specify the
869 * privileges to be removed, or you can set a flag to remove all
870 * privileges. If you specify privileges not held by the account,
871 * the function ignores them. The function deletes the account
872 * if you remove all privileges.
873 * Parameters: LSA_HANDLE PolicyHandle,
874 * PSID AccountSid,
875 * BOOLEAN AllRights,
876 * PLSA_UNICODE_STRING UserRights,
877 * ULONG CountOfRights
878 * Variables :
879 * Result : NTSTATUS
880 * Remark :
881 * Status : UNTESTED STUB
882 *
883 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
884 *****************************************************************************/
885
886ODINFUNCTION5(NTSTATUS, LsaRemoveAccountRights,
887 LSA_HANDLE, PolicyHandle,
888 PSID, AccountSid,
889 BOOLEAN, AllRights,
890 PLSA_UNICODE_STRING, UserRights,
891 ULONG, CountOfRights)
892{
893 dprintf(("ADVAPI32:Lsa: LsaRemoveAccountRights not implemented.\n"));
894 return 0;
895}
896
897
898/*****************************************************************************
899 * Name : LsaRetrievePrivateData
900 * Purpose : The LsaRetrievePrivateData function retrieves private
901 * data that was stored by the LsaStorePrivateData
902 * function.
903 * Parameters: LSA_HANDLE PolicyHandle,
904 * PLSA_UNICODE_STRING KeyName,
905 * PLSA_UNICODE_STRING *PrivateData
906 * Variables :
907 * Result : NTSTATUS
908 * Remark :
909 * Status : UNTESTED STUB
910 *
911 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
912 *****************************************************************************/
913
914ODINFUNCTION3(NTSTATUS, LsaRetrievePrivateData,
915 LSA_HANDLE, PolicyHandle,
916 PLSA_UNICODE_STRING, KeyName,
917 PLSA_UNICODE_STRING*,PrivateData)
918{
919 dprintf(("ADVAPI32:Lsa: LsaRetrievePrivateData not implemented.\n"));
920 return 0;
921}
922
923
924/*****************************************************************************
925 * Name : LsaSetInformationPolicy
926 * Purpose : The LsaSetInformationPolicy function modifies
927 * information in an LSA policy object.
928 * Parameters: LSA_HANDLE PolicyHandle,
929 * POLICY_INFORMATION_CLASS InformationClass,
930 * PVOID *Buffer
931 * Variables :
932 * Result : NTSTATUS
933 * Remark :
934 * Status : UNTESTED STUB
935 *
936 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
937 *****************************************************************************/
938
939ODINFUNCTION3(NTSTATUS, LsaSetInformationPolicy,
940 LSA_HANDLE, PolicyHandle,
941 POLICY_INFORMATION_CLASS, InformationClass,
942 PVOID *, Buffer)
943{
944 dprintf(("ADVAPI32:Lsa: LsaSetInformationPolicy not implemented.\n"));
945 return 0;
946}
947
948
949/*****************************************************************************
950 * Name : LsaSetTrustedDomainInfo
951 * Purpose : The LsaSetTrustedDomainInformation function
952 * modifies an LSA policy object's information about a trusted
953 * domain object.
954 * Parameters: LSA_HANDLE PolicyHandle,
955 * PSID TrustedDomainSid,
956 * TRUSTED_INFORMATION_CLASS InformationClass,
957 * PVOID Buffer
958 * Variables :
959 * Result : NTSTATUS
960 * Remark :
961 * Status : UNTESTED STUB
962 *
963 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
964 *****************************************************************************/
965
966ODINFUNCTION4(NTSTATUS, LsaSetTrustedDomainInfo,
967 LSA_HANDLE, PolicyHandle,
968 PSID, TrustedDomainSid,
969 TRUSTED_INFORMATION_CLASS, InformationClass,
970 PVOID, Buffer)
971{
972 dprintf(("ADVAPI32:Lsa: LsaSetTrustedDomainInfo not implemented.\n"));
973 return 0;
974}
975
976
977/*****************************************************************************
978 * Name : LsaSetTrustedDomainInfoByName
979 * Purpose : The LsaSetTrustedDomainInformation function
980 * modifies an LSA policy object's information about a trusted
981 * domain object.
982 * Parameters: LSA_HANDLE PolicyHandle,
983 * PLSA_UNICODE_STRING TrustedDomainName,
984 * TRUSTED_INFORMATION_CLASS InformationClass,
985 * PVOID Buffer
986 * Variables :
987 * Result : NTSTATUS
988 * Remark :
989 * Status : UNTESTED STUB
990 *
991 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
992 *****************************************************************************/
993
994ODINFUNCTION4(NTSTATUS, LsaSetTrustedDomainInfoByName,
995 LSA_HANDLE, PolicyHandle,
996 PLSA_UNICODE_STRING, TrustedDomainName,
997 TRUSTED_INFORMATION_CLASS, InformationClass,
998 PVOID, Buffer)
999{
1000 dprintf(("ADVAPI32:Lsa: LsaSetTrustedDomainInfoByName not implemented.\n"));
1001 return 0;
1002}
1003
1004
1005/*****************************************************************************
1006 * Name : LsaStorePrivateData
1007 * Purpose : The LsaStorePrivateData function stores or deletes an
1008 * LSA policy object's private data under a specified registry
1009 * key.
1010 * Parameters: LSA_HANDLE PolicyHandle,
1011 * PLSA_UNICODE_STRING KeyName,
1012 * PLSA_UNICODE_STRING PrivateData
1013 * Variables :
1014 * Result : NTSTATUS
1015 * Remark :
1016 * Status : UNTESTED STUB
1017 *
1018 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
1019 *****************************************************************************/
1020
1021ODINFUNCTION3(NTSTATUS, LsaStorePrivateData,
1022 LSA_HANDLE, PolicyHandle,
1023 PLSA_UNICODE_STRING,KeyName,
1024 PLSA_UNICODE_STRING,PrivateData)
1025{
1026 dprintf(("ADVAPI32:Lsa: LsaStorePrivateData not implemented.\n"));
1027 return 0;
1028}
1029
1030
1031/*****************************************************************************
1032 * Name : LsaUnregisterPolicyChangeNotification
1033 * Purpose : The LsaUnregisterPolicyChangeNotification function
1034 * disables the previously registered notification event.
1035 * Parameters: POLICY_NOTIFICATION_INFORMATION_CLASS InformationClass
1036 * HANDLE NotificationEventHandle
1037 * Variables :
1038 * Result : NTSTATUS
1039 * Remark :
1040 * Status : UNTESTED STUB
1041 *
1042 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
1043 *****************************************************************************/
1044
1045ODINFUNCTION2(NTSTATUS, LsaUnregisterPolicyChangeNotification,
1046 POLICY_NOTIFICATION_INFORMATION_CLASS, InformationClass,
1047 HANDLE, NotificationEventHandle)
1048{
1049 dprintf(("ADVAPI32:Lsa: LsaUnregisterPolicyChangeNotification not implemented.\n"));
1050 return 0;
1051}
1052
Note: See TracBrowser for help on using the repository browser.