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

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

removed warning

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