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

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

Add: added code for Windows NT LSA

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