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

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

Added version resource

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