source: trunk/src/advapi32/lsa.cpp

Last change on this file was 7983, checked in by sandervl, 24 years ago

update

File size: 34.3 KB
Line 
1/* $Id: lsa.cpp,v 1.7 2002-02-21 22:51:59 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
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
286
287NTSTATUS WIN32API LsaCreateTrustedDomainEx(LSA_HANDLE PolicyHandle,
288 PTRUSTED_DOMAIN_INFORMATION_EX TrustedDomainInformation,
289 PTRUSTED_DOMAIN_AUTH_INFORMATION AuthenticationInformation,
290 ACCESS_MASK DesiredAccess,
291 PLSA_HANDLE TrustedDomainHandle);
292
293NTSTATUS WIN32API LsaDeleteTrustedDomain(LSA_HANDLE PolicyHandle,
294 PSID TrustedDomainSid);
295
296NTSTATUS WIN32API LsaEnumerateAccountRights(LSA_HANDLE PolicyHandle,
297 PSID AccountSid,
298 PLSA_UNICODE_STRING* UserRights,
299 PULONG CountOfRights);
300
301NTSTATUS WIN32API LsaEnumerateAccountsWithUserRight(LSA_HANDLE PolicyHandle,
302 PLSA_UNICODE_STRING UserRight,
303 PVOID * EnumerationBuffer,
304 PULONG CountReturned);
305
306NTSTATUS WIN32API LsaEnumerateTrustedDomains(LSA_HANDLE PolicyHandle,
307 PLSA_ENUMERATION_HANDLE EnumerationContext,
308 PVOID * Buffer,
309 ULONG PreferedMaximumLength,
310 PULONG CountReturned);
311
312NTSTATUS WIN32API LsaEnumerateTrustedDomainsEx(LSA_HANDLE PolicyHandle,
313 PLSA_ENUMERATION_HANDLE EnumerationContext,
314 PVOID * Buffer,
315 ULONG PreferredMaximumLength,
316 PULONG CountReturned);
317
318
319NTSTATUS WIN32API LsaLookupNames(LSA_HANDLE PolicyHandle,
320 ULONG Count,
321 PLSA_UNICODE_STRING Names,
322 PLSA_REFERENCED_DOMAIN_LIST* ReferencedDomains,
323 PLSA_TRANSLATED_SID* Sids);
324
325
326ULONG WIN32API LsaNtStatusToWinError(NTSTATUS Status);
327
328NTSTATUS WIN32API LsaOpenPolicy(PLSA_UNICODE_STRING SystemName,
329 PLSA_OBJECT_ATTRIBUTES ObjectAttributes,
330 ACCESS_MASK DesiredAccess,
331 PLSA_HANDLE PolicyHandle);
332
333NTSTATUS WIN32API LsaOpenTrustedDomainByName(LSA_HANDLE PolicyHandle,
334 PLSA_UNICODE_STRING TrustedDomainName,
335 ACCESS_MASK DesiredAccess,
336 PLSA_HANDLE TrustedDomainHandle);
337
338
339NTSTATUS WIN32API LsaQueryTrustedDomainInfo(LSA_HANDLE PolicyHandle,
340 PSID TrustedDomainSid,
341 TRUSTED_INFORMATION_CLASS InformationClass,
342 PVOID * Buffer);
343
344NTSTATUS WIN32API LsaQueryTrustedDomainInfoByName(LSA_HANDLE PolicyHandle,
345 PLSA_UNICODE_STRING TrustedDomainName,
346 TRUSTED_INFORMATION_CLASS InformationClass,
347 PVOID * Buffer);
348
349NTSTATUS WIN32API LsaRegisterPolicyChangeNotification(
350 POLICY_NOTIFICATION_INFORMATION_CLASS InformationClass,
351 HANDLE NotificationEventHandle);
352
353NTSTATUS WIN32API LsaRemoveAccountRights(LSA_HANDLE PolicyHandle,
354 PSID AccountSid,
355 BOOLEAN AllRights,
356 PLSA_UNICODE_STRING UserRights,
357 ULONG CountOfRights);
358
359NTSTATUS WIN32API LsaRetrievePrivateData(LSA_HANDLE PolicyHandle,
360 PLSA_UNICODE_STRING KeyName,
361 PLSA_UNICODE_STRING* PrivateData);
362
363NTSTATUS WIN32API LsaSetInformationPolicy(LSA_HANDLE PolicyHandle,
364 POLICY_INFORMATION_CLASS InformationClass,
365 PVOID * Buffer);
366
367NTSTATUS WIN32API LsaSetTrustedDomainInfo(LSA_HANDLE PolicyHandle,
368 PSID TrustedDomainSid,
369 TRUSTED_INFORMATION_CLASS InformationClass,
370 PVOID Buffer);
371
372NTSTATUS WIN32API LsaStorePrivateData(LSA_HANDLE PolicyHandle,
373 PLSA_UNICODE_STRING KeyName,
374 PLSA_UNICODE_STRING PrivateData);
375
376NTSTATUS WIN32API LsaUnregisterPolicyChangeNotification(
377 POLICY_NOTIFICATION_INFORMATION_CLASS InformationClass,
378 HANDLE NotificationEventHandle);
379
380}
381
382
383/*****************************************************************************
384 * Name : LsaAddAccountRights
385 * Purpose : The LsaAddAccountRights function assigns one or more
386 * privileges to an account. The function ignores any specified
387 * privileges that are already held by the account. If the
388 * account does not exist, LsaAddAccountRights creates it.
389 * Parameters: LSA_HANDLE PolicyHandle,
390 * PSID AccountSid,
391 * PLSA_UNICODE_STRING UserRights,
392 * ULONG CountOfRights
393 * Variables :
394 * Result : NTSTATUS
395 * Remark :
396 * Status : UNTESTED STUB
397 *
398 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
399 *****************************************************************************/
400
401ODINFUNCTION4(NTSTATUS, LsaAddAccountRights,
402 LSA_HANDLE, PolicyHandle,
403 PSID, AccountSid,
404 PLSA_UNICODE_STRING, UserRights,
405 ULONG, CountOfRights)
406{
407 dprintf(("ADVAPI32:Lsa: LsaAddAccountRights not implemented.\n"));
408 return 0;
409}
410
411
412
413
414/*****************************************************************************
415 * Name : LsaCreateTrustedDomainEx
416 * Purpose : The LsaCreateTrustedDomainEx function creates a new
417 * TrustedDomain object.
418 * Parameters: LSA_HANDLE PolicyHandle,
419 * PTRUSTED_DOMAIN_INFORMATION_EX TrustedDomainInformation,
420 * PTRUSTED_DOMAIN_AUTH_INFORMATION AuthenticationInformation,
421 * ACCESS_MASK DesiredAccess,
422 * PLSA_HANDLE TrustedDomainHandle
423 * Variables :
424 * Result : NTSTATUS
425 * Remark :
426 * Status : UNTESTED STUB
427 *
428 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
429 *****************************************************************************/
430
431ODINFUNCTION5(NTSTATUS, LsaCreateTrustedDomainEx,
432 LSA_HANDLE, PolicyHandle,
433 PTRUSTED_DOMAIN_INFORMATION_EX, TrustedDomainInformation,
434 PTRUSTED_DOMAIN_AUTH_INFORMATION,AuthenticationInformation,
435 ACCESS_MASK, DesiredAccess,
436 PLSA_HANDLE, TrustedDomainHandle)
437{
438 dprintf(("ADVAPI32:Lsa: LsaCreateTrustedDomainEx not implemented.\n"));
439 return 0;
440}
441
442
443/*****************************************************************************
444 * Name : LsaDeleteTrustedDomain
445 * Purpose : The LsaDeleteTrustedDomain function deletes a trusted
446 * domain from list of trusted domains for an LSA policy object.
447 * Parameters: LSA_HANDLE PolicyHandle
448 * PSID TrustedDomainSid
449 * Variables :
450 * Result : NTSTATUS
451 * Remark :
452 * Status : UNTESTED STUB
453 *
454 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
455 *****************************************************************************/
456
457ODINFUNCTION2(NTSTATUS,LsaDeleteTrustedDomain, LSA_HANDLE, PolicyHandle,
458 PSID, TrustedDomainSid)
459{
460 dprintf(("ADVAPI32:Lsa: LsaDeleteTrustedDomain not implemented.\n"));
461 return 0;
462}
463
464
465/*****************************************************************************
466 * Name : LsaEnumerateAccountRights
467 * Purpose : The LsaEnumerateAccountRights function enumerates
468 * the privileges assigned to an account.
469 * Parameters: LSA_HANDLE PolicyHandle,
470 * PSID AccountSid,
471 * PLSA_UNICODE_STRING *UserRights,
472 * PULONG CountOfRights
473 * Variables :
474 * Result : NTSTATUS
475 * Remark :
476 * Status : UNTESTED STUB
477 *
478 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
479 *****************************************************************************/
480
481ODINFUNCTION4(NTSTATUS, LsaEnumerateAccountRights,
482 LSA_HANDLE, PolicyHandle,
483 PSID, AccountSid,
484 PLSA_UNICODE_STRING*,UserRights,
485 PULONG, CountOfRights)
486{
487 dprintf(("ADVAPI32:Lsa: LsaEnumerateAccountRights not implemented.\n"));
488 return 0;
489}
490
491
492
493/*****************************************************************************
494 * Name : LsaEnumerateAccountsWithUserRight
495 * Purpose : The LsaEnumerateAccountsWithUserRight
496 * function returns an array of pointers to SIDs that
497 * identify the accounts in an LSA policy object's
498 * database that hold a specified privilege.
499 * Parameters: LSA_HANDLE PolicyHandle
500 * PLSA_UNICODE_STRING UserRight
501 * PVOID * EnumerationBuffer
502 * PULONG CountReturned
503 * Variables :
504 * Result : NTSTATUS
505 * Remark :
506 * Status : UNTESTED STUB
507 *
508 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
509 *****************************************************************************/
510
511ODINFUNCTION4(NTSTATUS, LsaEnumerateAccountsWithUserRight,
512 LSA_HANDLE, PolicyHandle,
513 PLSA_UNICODE_STRING, UserRight,
514 PVOID *, EnumerationBuffer,
515 PULONG, CountReturned)
516{
517 dprintf(("ADVAPI32:Lsa: LsaEnumerateAccountsWithUserRight not implemented.\n"));
518 return 0;
519}
520
521
522/*****************************************************************************
523 * Name : LsaEnumerateTrustedDomains
524 * Purpose : The LsaEnumerateTrustedDomains function retrieves
525 * the names and SIDs of domains trusted by an LSA policy
526 * object.
527 * Parameters: LSA_HANDLE PolicyHandle,
528 * PLSA_ENUMERATION_HANDLE EnumerationContext,
529 * PVOID * Buffer,
530 * ULONG PreferedMaximumLength,
531 * PULONG CountReturned
532 * Variables :
533 * Result : NTSTATUS
534 * Remark :
535 * Status : UNTESTED STUB
536 *
537 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
538 *****************************************************************************/
539
540ODINFUNCTION5(NTSTATUS, LsaEnumerateTrustedDomains,
541 LSA_HANDLE, PolicyHandle,
542 PLSA_ENUMERATION_HANDLE, EnumerationContext,
543 PVOID *, Buffer,
544 ULONG, PreferedMaximumLength,
545 PULONG, CountReturned)
546{
547 dprintf(("ADVAPI32:Lsa: LsaEnumerateTrustedDomains not implemented.\n"));
548 return 0;
549}
550
551
552/*****************************************************************************
553 * Name : LsaEnumerateTrustedDomainsEx
554 * Purpose : The LsaEnumerateTrustedDomainsEx function returns
555 * information about the domains trusted by the local system.
556 * This function returns more information than
557 * LsaEnumerateTrustedDomains.
558 * Parameters: LSA_HANDLE PolicyHandle,
559 * PLSA_ENUMERATION_HANDLE EnumerationContext,
560 * PVOID * Buffer,
561 * ULONG PrefefredMaximumLength,
562 * PULONG CountReturned
563 * Variables :
564 * Result : NTSTATUS
565 * Remark :
566 * Status : UNTESTED STUB
567 *
568 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
569 *****************************************************************************/
570
571ODINFUNCTION5(NTSTATUS, LsaEnumerateTrustedDomainsEx,
572 LSA_HANDLE, PolicyHandle,
573 PLSA_ENUMERATION_HANDLE, EnumerationContext,
574 PVOID *, Buffer,
575 ULONG, PreferredMaximumLength,
576 PULONG, CountReturned)
577{
578 dprintf(("ADVAPI32:Lsa: LsaEnumerateTrustedDomains not implemented.\n"));
579 return 0;
580}
581
582
583
584
585/*****************************************************************************
586 * Name : LsaLookupNames
587 * Purpose : The LsaLookupNames function looks up the SIDs
588 * that correspond to an array of user, group, or local
589 * group names.
590 * Parameters: LSA_HANDLE PolicyHandle
591 * ULONG Count
592 * PLSA_UNICODE_STRING Names
593 * PLSA_REFERENCED_DOMAIN_LIST *ReferencedDomains
594 * PLSA_TRANSLATED_SID *Sids
595 * Variables :
596 * Result : NTSTATUS
597 * Remark :
598 * Status : UNTESTED STUB
599 *
600 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
601 *****************************************************************************/
602
603ODINFUNCTION5(NTSTATUS, LsaLookupNames,
604 LSA_HANDLE, PolicyHandle,
605 ULONG, Count,
606 PLSA_UNICODE_STRING, Names,
607 PLSA_REFERENCED_DOMAIN_LIST*, ReferencedDomains,
608 PLSA_TRANSLATED_SID*, Sids)
609{
610 dprintf(("ADVAPI32:Lsa: LsaLookupNames not implemented.\n"));
611 return 0;
612}
613
614
615
616
617/*****************************************************************************
618 * Name : LsaNtStatusToWinError
619 * Purpose : The LsaNtStatusToWinError function converts an
620 * NTSTATUS code returned by an LSA function to a Windows
621 * error code
622 * Parameters: NTSTATUS Status
623 * Variables :
624 * Result : NTSTATUS
625 * Remark :
626 * Status : UNTESTED STUB
627 *
628 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
629 *****************************************************************************/
630
631ODINFUNCTION1(ULONG, LsaNtStatusToWinError,
632 NTSTATUS, Status)
633{
634 dprintf(("ADVAPI32:Lsa: LsaNtStatusToWinError not implemented.\n"));
635 return Status;
636}
637
638
639
640/*****************************************************************************
641 * Name : LsaOpenTrustedDomainByName
642 * Purpose : The LsaOpenTrustedDomainByName function opens the
643 * LSA policy handle on a remote trusted domain. You can use
644 * pass this handle into LSA function calls in order to query
645 * and/or manage the LSA policy of the remote machine.
646 * Parameters: LSA_HANDLE PolicyHandle,
647 * PLSA_UNICODE_STRING TrustedDomainName,
648 * ACCESS_MASK DesiredAccess,
649 * PLSA_HANDLE TrustedDomainHandle
650 * Variables :
651 * Result : NTSTATUS
652 * Remark :
653 * Status : UNTESTED STUB
654 *
655 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
656 *****************************************************************************/
657
658ODINFUNCTION4(NTSTATUS, LsaOpenTrustedDomainByName,
659 LSA_HANDLE, PolicyHandle,
660 PLSA_UNICODE_STRING, TrustedDomainName,
661 ACCESS_MASK, DesiredAccess,
662 PLSA_HANDLE, TrustedDomainHandle)
663{
664 dprintf(("ADVAPI32:Lsa: LsaOpenTrustedDomainByName not implemented.\n"));
665 return 0;
666}
667
668
669
670/*****************************************************************************
671 * Name : LsaQueryTrustedDomainInfo
672 * Purpose : The LsaQueryTrustedDomainInfo function retrieves
673 * information about a trusted domain object.
674 * Parameters: LSA_HANDLE PolicyHandle,
675 * PSID TrustedDomainSid,
676 * TRUSTED_INFORMATION_CLASS InformationClass,
677 * PVOID * Buffer
678 * Variables :
679 * Result : NTSTATUS
680 * Remark :
681 * Status : UNTESTED STUB
682 *
683 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
684 *****************************************************************************/
685
686ODINFUNCTION4(NTSTATUS, LsaQueryTrustedDomainInfo,
687 LSA_HANDLE, PolicyHandle,
688 PSID, TrustedDomainSid,
689 TRUSTED_INFORMATION_CLASS, InformationClass,
690 PVOID *, Buffer)
691{
692 dprintf(("ADVAPI32:Lsa: LsaQueryTrustedDomainInfo not implemented.\n"));
693 return 0;
694}
695
696
697/*****************************************************************************
698 * Name : LsaQueryTrustedDomainInfoByName
699 * Purpose : The LsaQueryTrustedDomainInfo function retrieves
700 * information about a trusted domain object.
701 * Parameters: LSA_HANDLE PolicyHandle,
702 * PLSA_UNICODE_STRING TrustedDomainName,
703 * TRUSTED_INFORMATION_CLASS InformationClass,
704 * PVOID * Buffer
705 * Variables :
706 * Result : NTSTATUS
707 * Remark :
708 * Status : UNTESTED STUB
709 *
710 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
711 *****************************************************************************/
712
713ODINFUNCTION4(NTSTATUS, LsaQueryTrustedDomainInfoByName,
714 LSA_HANDLE, PolicyHandle,
715 PLSA_UNICODE_STRING, TrustedDomainName,
716 TRUSTED_INFORMATION_CLASS, InformationClass,
717 PVOID *, Buffer)
718{
719 dprintf(("ADVAPI32:Lsa: LsaQueryTrustedDomainInfoByName not implemented.\n"));
720 return 0;
721}
722
723
724/*****************************************************************************
725 * Name : LsaRegisterPolicyChangeNotification
726 * Purpose : The LsaRegisterPolicyChangeNotification function
727 * registers an event handle with the local security authority
728 * (LSA). This event handle is signaled whenever the indicated
729 * LSA policy is modified.
730 * Parameters: POLICY_NOTIFICATION_INFORMATION_CLASS InformationClass
731 * HANDLE NotificationEventHandle
732 * Variables :
733 * Result : NTSTATUS
734 * Remark :
735 * Status : UNTESTED STUB
736 *
737 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
738 *****************************************************************************/
739
740ODINFUNCTION2(NTSTATUS, LsaRegisterPolicyChangeNotification,
741 POLICY_NOTIFICATION_INFORMATION_CLASS, InformationClass,
742 HANDLE, NotificationEventHandle)
743{
744 dprintf(("ADVAPI32:Lsa: LsaRegisterPolicyChangeNotification not implemented.\n"));
745 return 0;
746}
747
748
749/*****************************************************************************
750 * Name : LsaRemoveAccountRights
751 * Purpose : The LsaRemoveAccountRights function removes one or
752 * more privileges from an account. You can specify the
753 * privileges to be removed, or you can set a flag to remove all
754 * privileges. If you specify privileges not held by the account,
755 * the function ignores them. The function deletes the account
756 * if you remove all privileges.
757 * Parameters: LSA_HANDLE PolicyHandle,
758 * PSID AccountSid,
759 * BOOLEAN AllRights,
760 * PLSA_UNICODE_STRING UserRights,
761 * ULONG CountOfRights
762 * Variables :
763 * Result : NTSTATUS
764 * Remark :
765 * Status : UNTESTED STUB
766 *
767 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
768 *****************************************************************************/
769
770ODINFUNCTION5(NTSTATUS, LsaRemoveAccountRights,
771 LSA_HANDLE, PolicyHandle,
772 PSID, AccountSid,
773 BOOLEAN, AllRights,
774 PLSA_UNICODE_STRING, UserRights,
775 ULONG, CountOfRights)
776{
777 dprintf(("ADVAPI32:Lsa: LsaRemoveAccountRights not implemented.\n"));
778 return 0;
779}
780
781
782/*****************************************************************************
783 * Name : LsaRetrievePrivateData
784 * Purpose : The LsaRetrievePrivateData function retrieves private
785 * data that was stored by the LsaStorePrivateData
786 * function.
787 * Parameters: LSA_HANDLE PolicyHandle,
788 * PLSA_UNICODE_STRING KeyName,
789 * PLSA_UNICODE_STRING *PrivateData
790 * Variables :
791 * Result : NTSTATUS
792 * Remark :
793 * Status : UNTESTED STUB
794 *
795 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
796 *****************************************************************************/
797
798ODINFUNCTION3(NTSTATUS, LsaRetrievePrivateData,
799 LSA_HANDLE, PolicyHandle,
800 PLSA_UNICODE_STRING, KeyName,
801 PLSA_UNICODE_STRING*,PrivateData)
802{
803 dprintf(("ADVAPI32:Lsa: LsaRetrievePrivateData not implemented.\n"));
804 return 0;
805}
806
807
808/*****************************************************************************
809 * Name : LsaSetInformationPolicy
810 * Purpose : The LsaSetInformationPolicy function modifies
811 * information in an LSA policy object.
812 * Parameters: LSA_HANDLE PolicyHandle,
813 * POLICY_INFORMATION_CLASS InformationClass,
814 * PVOID *Buffer
815 * Variables :
816 * Result : NTSTATUS
817 * Remark :
818 * Status : UNTESTED STUB
819 *
820 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
821 *****************************************************************************/
822
823ODINFUNCTION3(NTSTATUS, LsaSetInformationPolicy,
824 LSA_HANDLE, PolicyHandle,
825 POLICY_INFORMATION_CLASS, InformationClass,
826 PVOID *, Buffer)
827{
828 dprintf(("ADVAPI32:Lsa: LsaSetInformationPolicy not implemented.\n"));
829 return 0;
830}
831
832
833/*****************************************************************************
834 * Name : LsaSetTrustedDomainInfo
835 * Purpose : The LsaSetTrustedDomainInformation function
836 * modifies an LSA policy object's information about a trusted
837 * domain object.
838 * Parameters: LSA_HANDLE PolicyHandle,
839 * PSID TrustedDomainSid,
840 * TRUSTED_INFORMATION_CLASS InformationClass,
841 * PVOID Buffer
842 * Variables :
843 * Result : NTSTATUS
844 * Remark :
845 * Status : UNTESTED STUB
846 *
847 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
848 *****************************************************************************/
849
850ODINFUNCTION4(NTSTATUS, LsaSetTrustedDomainInfo,
851 LSA_HANDLE, PolicyHandle,
852 PSID, TrustedDomainSid,
853 TRUSTED_INFORMATION_CLASS, InformationClass,
854 PVOID, Buffer)
855{
856 dprintf(("ADVAPI32:Lsa: LsaSetTrustedDomainInfo not implemented.\n"));
857 return 0;
858}
859
860
861/*****************************************************************************
862 * Name : LsaSetTrustedDomainInfoByName
863 * Purpose : The LsaSetTrustedDomainInformation function
864 * modifies an LSA policy object's information about a trusted
865 * domain object.
866 * Parameters: LSA_HANDLE PolicyHandle,
867 * PLSA_UNICODE_STRING TrustedDomainName,
868 * TRUSTED_INFORMATION_CLASS InformationClass,
869 * PVOID Buffer
870 * Variables :
871 * Result : NTSTATUS
872 * Remark :
873 * Status : UNTESTED STUB
874 *
875 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
876 *****************************************************************************/
877
878ODINFUNCTION4(NTSTATUS, LsaSetTrustedDomainInfoByName,
879 LSA_HANDLE, PolicyHandle,
880 PLSA_UNICODE_STRING, TrustedDomainName,
881 TRUSTED_INFORMATION_CLASS, InformationClass,
882 PVOID, Buffer)
883{
884 dprintf(("ADVAPI32:Lsa: LsaSetTrustedDomainInfoByName not implemented.\n"));
885 return 0;
886}
887
888
889/*****************************************************************************
890 * Name : LsaStorePrivateData
891 * Purpose : The LsaStorePrivateData function stores or deletes an
892 * LSA policy object's private data under a specified registry
893 * key.
894 * Parameters: LSA_HANDLE PolicyHandle,
895 * PLSA_UNICODE_STRING KeyName,
896 * PLSA_UNICODE_STRING PrivateData
897 * Variables :
898 * Result : NTSTATUS
899 * Remark :
900 * Status : UNTESTED STUB
901 *
902 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
903 *****************************************************************************/
904
905ODINFUNCTION3(NTSTATUS, LsaStorePrivateData,
906 LSA_HANDLE, PolicyHandle,
907 PLSA_UNICODE_STRING,KeyName,
908 PLSA_UNICODE_STRING,PrivateData)
909{
910 dprintf(("ADVAPI32:Lsa: LsaStorePrivateData not implemented.\n"));
911 return 0;
912}
913
914
915/*****************************************************************************
916 * Name : LsaUnregisterPolicyChangeNotification
917 * Purpose : The LsaUnregisterPolicyChangeNotification function
918 * disables the previously registered notification event.
919 * Parameters: POLICY_NOTIFICATION_INFORMATION_CLASS InformationClass
920 * HANDLE NotificationEventHandle
921 * Variables :
922 * Result : NTSTATUS
923 * Remark :
924 * Status : UNTESTED STUB
925 *
926 * Author : Patrick Haller [Thu, 1999/11/04 23:00]
927 *****************************************************************************/
928
929ODINFUNCTION2(NTSTATUS, LsaUnregisterPolicyChangeNotification,
930 POLICY_NOTIFICATION_INFORMATION_CLASS, InformationClass,
931 HANDLE, NotificationEventHandle)
932{
933 dprintf(("ADVAPI32:Lsa: LsaUnregisterPolicyChangeNotification not implemented.\n"));
934 return 0;
935}
936
Note: See TracBrowser for help on using the repository browser.