2 * PROJECT: Local Security Authority Server DLL
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: dll/win32/lsasrv/policy.c
5 * PURPOSE: Policy object routines
6 * COPYRIGHT: Copyright 2011 Eric Kohl
9 /* INCLUDES ****************************************************************/
13 WINE_DEFAULT_DEBUG_CHANNEL(lsasrv
);
16 /* FUNCTIONS ***************************************************************/
20 LsaIOpenPolicyTrusted(OUT LSAPR_HANDLE
*PolicyHandle
)
22 PLSA_DB_OBJECT PolicyObject
;
25 TRACE("(%p)\n", PolicyHandle
);
27 Status
= LsapOpenDbObject(NULL
,
35 if (NT_SUCCESS(Status
))
36 *PolicyHandle
= (LSAPR_HANDLE
)PolicyObject
;
43 LsarQueryAuditLog(PLSA_DB_OBJECT PolicyObject
,
44 PLSAPR_POLICY_INFORMATION
*PolicyInformation
)
46 PPOLICY_AUDIT_LOG_INFO AuditLogInfo
= NULL
;
50 *PolicyInformation
= NULL
;
52 AttributeSize
= sizeof(POLICY_AUDIT_LOG_INFO
);
53 AuditLogInfo
= MIDL_user_allocate(AttributeSize
);
54 if (AuditLogInfo
== NULL
)
55 return STATUS_INSUFFICIENT_RESOURCES
;
57 Status
= LsapGetObjectAttribute(PolicyObject
,
61 if (!NT_SUCCESS(Status
))
63 MIDL_user_free(AuditLogInfo
);
67 *PolicyInformation
= (PLSAPR_POLICY_INFORMATION
)AuditLogInfo
;
75 LsarQueryAuditEvents(PLSA_DB_OBJECT PolicyObject
,
76 PLSAPR_POLICY_INFORMATION
*PolicyInformation
)
78 PLSAP_POLICY_AUDIT_EVENTS_DATA AuditData
= NULL
;
79 PLSAPR_POLICY_AUDIT_EVENTS_INFO p
= NULL
;
81 NTSTATUS Status
= STATUS_SUCCESS
;
83 *PolicyInformation
= NULL
;
86 Status
= LsapGetObjectAttribute(PolicyObject
,
90 if (!NT_SUCCESS(Status
))
93 if (AttributeSize
> 0)
95 AuditData
= MIDL_user_allocate(AttributeSize
);
96 if (AuditData
== NULL
)
97 return STATUS_INSUFFICIENT_RESOURCES
;
99 Status
= LsapGetObjectAttribute(PolicyObject
,
103 if (!NT_SUCCESS(Status
))
106 p
= MIDL_user_allocate(sizeof(LSAPR_POLICY_AUDIT_EVENTS_INFO
));
109 Status
= STATUS_INSUFFICIENT_RESOURCES
;
113 p
->AuditingMode
= AuditData
->AuditingMode
;
114 p
->MaximumAuditEventCount
= AuditData
->MaximumAuditEventCount
;
116 p
->EventAuditingOptions
= MIDL_user_allocate(AuditData
->MaximumAuditEventCount
* sizeof(DWORD
));
117 if (p
->EventAuditingOptions
== NULL
)
119 Status
= STATUS_INSUFFICIENT_RESOURCES
;
123 memcpy(p
->EventAuditingOptions
,
124 &(AuditData
->AuditEvents
[0]),
125 AuditData
->MaximumAuditEventCount
* sizeof(DWORD
));
128 *PolicyInformation
= (PLSAPR_POLICY_INFORMATION
)p
;
131 if (!NT_SUCCESS(Status
))
133 if (p
->EventAuditingOptions
!= NULL
)
134 MIDL_user_free(p
->EventAuditingOptions
);
140 if (AuditData
!= NULL
)
141 MIDL_user_free(AuditData
);
143 return STATUS_SUCCESS
;
148 LsarQueryPrimaryDomain(PLSA_DB_OBJECT PolicyObject
,
149 PLSAPR_POLICY_INFORMATION
*PolicyInformation
)
151 PLSAPR_POLICY_PRIMARY_DOM_INFO p
= NULL
;
152 PUNICODE_STRING DomainName
;
156 *PolicyInformation
= NULL
;
158 p
= MIDL_user_allocate(sizeof(LSAPR_POLICY_PRIMARY_DOM_INFO
));
160 return STATUS_INSUFFICIENT_RESOURCES
;
164 Status
= LsapGetObjectAttribute(PolicyObject
,
168 if (!NT_SUCCESS(Status
))
173 if (AttributeSize
> 0)
175 DomainName
= MIDL_user_allocate(AttributeSize
);
176 if (DomainName
== NULL
)
178 Status
= STATUS_INSUFFICIENT_RESOURCES
;
182 Status
= LsapGetObjectAttribute(PolicyObject
,
186 if (Status
== STATUS_SUCCESS
)
188 DomainName
->Buffer
= (LPWSTR
)((ULONG_PTR
)DomainName
+ (ULONG_PTR
)DomainName
->Buffer
);
190 TRACE("PrimaryDomainName: %wZ\n", DomainName
);
192 p
->Name
.Buffer
= MIDL_user_allocate(DomainName
->MaximumLength
);
193 if (p
->Name
.Buffer
== NULL
)
195 MIDL_user_free(DomainName
);
196 Status
= STATUS_INSUFFICIENT_RESOURCES
;
200 p
->Name
.Length
= DomainName
->Length
;
201 p
->Name
.MaximumLength
= DomainName
->MaximumLength
;
202 memcpy(p
->Name
.Buffer
,
204 DomainName
->MaximumLength
);
207 MIDL_user_free(DomainName
);
212 Status
= LsapGetObjectAttribute(PolicyObject
,
216 if (!NT_SUCCESS(Status
))
221 if (AttributeSize
> 0)
223 p
->Sid
= MIDL_user_allocate(AttributeSize
);
226 Status
= STATUS_INSUFFICIENT_RESOURCES
;
230 Status
= LsapGetObjectAttribute(PolicyObject
,
236 *PolicyInformation
= (PLSAPR_POLICY_INFORMATION
)p
;
239 if (!NT_SUCCESS(Status
))
244 MIDL_user_free(p
->Name
.Buffer
);
247 MIDL_user_free(p
->Sid
);
258 LsarQueryPdAccount(PLSA_DB_OBJECT PolicyObject
,
259 PLSAPR_POLICY_INFORMATION
*PolicyInformation
)
261 PLSAPR_POLICY_PD_ACCOUNT_INFO PdAccountInfo
= NULL
;
263 *PolicyInformation
= NULL
;
265 PdAccountInfo
= MIDL_user_allocate(sizeof(LSAPR_POLICY_PD_ACCOUNT_INFO
));
266 if (PdAccountInfo
== NULL
)
267 return STATUS_INSUFFICIENT_RESOURCES
;
269 PdAccountInfo
->Name
.Length
= 0;
270 PdAccountInfo
->Name
.MaximumLength
= 0;
271 PdAccountInfo
->Name
.Buffer
= NULL
;
273 *PolicyInformation
= (PLSAPR_POLICY_INFORMATION
)PdAccountInfo
;
275 return STATUS_SUCCESS
;
280 LsarQueryAccountDomain(PLSA_DB_OBJECT PolicyObject
,
281 PLSAPR_POLICY_INFORMATION
*PolicyInformation
)
283 PLSAPR_POLICY_ACCOUNT_DOM_INFO p
= NULL
;
284 PUNICODE_STRING DomainName
;
285 ULONG AttributeSize
= 0;
288 *PolicyInformation
= NULL
;
290 p
= MIDL_user_allocate(sizeof(LSAPR_POLICY_ACCOUNT_DOM_INFO
));
292 return STATUS_INSUFFICIENT_RESOURCES
;
295 Status
= LsapGetObjectAttribute(PolicyObject
,
299 if (!NT_SUCCESS(Status
))
304 if (AttributeSize
> 0)
306 DomainName
= MIDL_user_allocate(AttributeSize
);
307 if (DomainName
== NULL
)
309 Status
= STATUS_INSUFFICIENT_RESOURCES
;
313 Status
= LsapGetObjectAttribute(PolicyObject
,
317 if (Status
== STATUS_SUCCESS
)
319 DomainName
->Buffer
= (LPWSTR
)((ULONG_PTR
)DomainName
+ (ULONG_PTR
)DomainName
->Buffer
);
321 TRACE("AccountDomainName: %wZ\n", DomainName
);
323 p
->DomainName
.Buffer
= MIDL_user_allocate(DomainName
->MaximumLength
);
324 if (p
->DomainName
.Buffer
== NULL
)
326 MIDL_user_free(DomainName
);
327 Status
= STATUS_INSUFFICIENT_RESOURCES
;
331 p
->DomainName
.Length
= DomainName
->Length
;
332 p
->DomainName
.MaximumLength
= DomainName
->MaximumLength
;
333 memcpy(p
->DomainName
.Buffer
,
335 DomainName
->MaximumLength
);
338 MIDL_user_free(DomainName
);
343 Status
= LsapGetObjectAttribute(PolicyObject
,
347 if (!NT_SUCCESS(Status
))
352 if (AttributeSize
> 0)
354 p
->Sid
= MIDL_user_allocate(AttributeSize
);
357 Status
= STATUS_INSUFFICIENT_RESOURCES
;
361 Status
= LsapGetObjectAttribute(PolicyObject
,
367 *PolicyInformation
= (PLSAPR_POLICY_INFORMATION
)p
;
370 if (!NT_SUCCESS(Status
))
374 if (p
->DomainName
.Buffer
)
375 MIDL_user_free(p
->DomainName
.Buffer
);
378 MIDL_user_free(p
->Sid
);
389 LsarQueryServerRole(PLSA_DB_OBJECT PolicyObject
,
390 PLSAPR_POLICY_INFORMATION
*PolicyInformation
)
392 PPOLICY_LSA_SERVER_ROLE_INFO ServerRoleInfo
= NULL
;
396 *PolicyInformation
= NULL
;
398 AttributeSize
= sizeof(POLICY_LSA_SERVER_ROLE_INFO
);
399 ServerRoleInfo
= MIDL_user_allocate(AttributeSize
);
400 if (ServerRoleInfo
== NULL
)
401 return STATUS_INSUFFICIENT_RESOURCES
;
403 Status
= LsapGetObjectAttribute(PolicyObject
,
407 if (Status
== STATUS_OBJECT_NAME_NOT_FOUND
)
409 ServerRoleInfo
->LsaServerRole
= PolicyServerRolePrimary
;
410 Status
= STATUS_SUCCESS
;
413 if (!NT_SUCCESS(Status
))
415 MIDL_user_free(ServerRoleInfo
);
419 *PolicyInformation
= (PLSAPR_POLICY_INFORMATION
)ServerRoleInfo
;
427 LsarQueryReplicaSource(PLSA_DB_OBJECT PolicyObject
,
428 PLSAPR_POLICY_INFORMATION
*PolicyInformation
)
431 *PolicyInformation
= NULL
;
432 return STATUS_NOT_IMPLEMENTED
;
437 LsarQueryDefaultQuota(PLSA_DB_OBJECT PolicyObject
,
438 PLSAPR_POLICY_INFORMATION
*PolicyInformation
)
440 PPOLICY_DEFAULT_QUOTA_INFO QuotaInfo
= NULL
;
444 *PolicyInformation
= NULL
;
446 AttributeSize
= sizeof(POLICY_DEFAULT_QUOTA_INFO
);
447 QuotaInfo
= MIDL_user_allocate(AttributeSize
);
448 if (QuotaInfo
== NULL
)
449 return STATUS_INSUFFICIENT_RESOURCES
;
451 Status
= LsapGetObjectAttribute(PolicyObject
,
455 if (!NT_SUCCESS(Status
))
457 MIDL_user_free(QuotaInfo
);
461 *PolicyInformation
= (PLSAPR_POLICY_INFORMATION
)QuotaInfo
;
469 LsarQueryModification(PLSA_DB_OBJECT PolicyObject
,
470 PLSAPR_POLICY_INFORMATION
*PolicyInformation
)
472 PPOLICY_MODIFICATION_INFO Info
= NULL
;
476 *PolicyInformation
= NULL
;
478 AttributeSize
= sizeof(POLICY_MODIFICATION_INFO
);
479 Info
= MIDL_user_allocate(AttributeSize
);
481 return STATUS_INSUFFICIENT_RESOURCES
;
483 Status
= LsapGetObjectAttribute(PolicyObject
,
487 if (!NT_SUCCESS(Status
))
489 MIDL_user_free(Info
);
493 *PolicyInformation
= (PLSAPR_POLICY_INFORMATION
)Info
;
501 LsarQueryAuditFull(PLSA_DB_OBJECT PolicyObject
,
502 PLSAPR_POLICY_INFORMATION
*PolicyInformation
)
504 PPOLICY_AUDIT_FULL_QUERY_INFO AuditFullInfo
= NULL
;
508 *PolicyInformation
= NULL
;
510 AttributeSize
= sizeof(POLICY_AUDIT_FULL_QUERY_INFO
);
511 AuditFullInfo
= MIDL_user_allocate(AttributeSize
);
512 if (AuditFullInfo
== NULL
)
513 return STATUS_INSUFFICIENT_RESOURCES
;
515 Status
= LsapGetObjectAttribute(PolicyObject
,
519 if (!NT_SUCCESS(Status
))
521 MIDL_user_free(AuditFullInfo
);
525 *PolicyInformation
= (PLSAPR_POLICY_INFORMATION
)AuditFullInfo
;
533 LsarQueryDnsDomain(PLSA_DB_OBJECT PolicyObject
,
534 PLSAPR_POLICY_INFORMATION
*PolicyInformation
)
536 PLSAPR_POLICY_DNS_DOMAIN_INFO p
= NULL
;
537 PUNICODE_STRING DomainName
;
541 *PolicyInformation
= NULL
;
543 p
= MIDL_user_allocate(sizeof(LSAPR_POLICY_DNS_DOMAIN_INFO
));
545 return STATUS_INSUFFICIENT_RESOURCES
;
547 /* Primary Domain Name */
549 Status
= LsapGetObjectAttribute(PolicyObject
,
553 if (!NT_SUCCESS(Status
))
558 if (AttributeSize
> 0)
560 DomainName
= MIDL_user_allocate(AttributeSize
);
561 if (DomainName
== NULL
)
563 Status
= STATUS_INSUFFICIENT_RESOURCES
;
567 Status
= LsapGetObjectAttribute(PolicyObject
,
571 if (Status
== STATUS_SUCCESS
)
573 DomainName
->Buffer
= (LPWSTR
)((ULONG_PTR
)DomainName
+ (ULONG_PTR
)DomainName
->Buffer
);
575 TRACE("PrimaryDomainName: %wZ\n", DomainName
);
577 p
->Name
.Buffer
= MIDL_user_allocate(DomainName
->MaximumLength
);
578 if (p
->Name
.Buffer
== NULL
)
580 MIDL_user_free(DomainName
);
581 Status
= STATUS_INSUFFICIENT_RESOURCES
;
585 p
->Name
.Length
= DomainName
->Length
;
586 p
->Name
.MaximumLength
= DomainName
->MaximumLength
;
587 memcpy(p
->Name
.Buffer
,
589 DomainName
->MaximumLength
);
592 MIDL_user_free(DomainName
);
595 /* Primary Domain SID */
597 Status
= LsapGetObjectAttribute(PolicyObject
,
601 if (!NT_SUCCESS(Status
))
606 if (AttributeSize
> 0)
608 p
->Sid
= MIDL_user_allocate(AttributeSize
);
611 Status
= STATUS_INSUFFICIENT_RESOURCES
;
615 Status
= LsapGetObjectAttribute(PolicyObject
,
621 /* DNS Domain Name */
623 Status
= LsapGetObjectAttribute(PolicyObject
,
627 if (!NT_SUCCESS(Status
))
630 if (AttributeSize
> 0)
632 DomainName
= MIDL_user_allocate(AttributeSize
);
633 if (DomainName
== NULL
)
635 Status
= STATUS_INSUFFICIENT_RESOURCES
;
639 Status
= LsapGetObjectAttribute(PolicyObject
,
643 if (Status
== STATUS_SUCCESS
)
645 DomainName
->Buffer
= (LPWSTR
)((ULONG_PTR
)DomainName
+ (ULONG_PTR
)DomainName
->Buffer
);
647 TRACE("DNS Domain Name: %wZ\n", DomainName
);
649 p
->DnsDomainName
.Buffer
= MIDL_user_allocate(DomainName
->MaximumLength
);
650 if (p
->DnsDomainName
.Buffer
== NULL
)
652 MIDL_user_free(DomainName
);
653 Status
= STATUS_INSUFFICIENT_RESOURCES
;
657 p
->DnsDomainName
.Length
= DomainName
->Length
;
658 p
->DnsDomainName
.MaximumLength
= DomainName
->MaximumLength
;
659 memcpy(p
->DnsDomainName
.Buffer
,
661 DomainName
->MaximumLength
);
664 MIDL_user_free(DomainName
);
667 /* DNS Forest Name */
669 Status
= LsapGetObjectAttribute(PolicyObject
,
673 if (!NT_SUCCESS(Status
))
676 if (AttributeSize
> 0)
678 DomainName
= MIDL_user_allocate(AttributeSize
);
679 if (DomainName
== NULL
)
681 Status
= STATUS_INSUFFICIENT_RESOURCES
;
685 Status
= LsapGetObjectAttribute(PolicyObject
,
689 if (Status
== STATUS_SUCCESS
)
691 DomainName
->Buffer
= (LPWSTR
)((ULONG_PTR
)DomainName
+ (ULONG_PTR
)DomainName
->Buffer
);
693 TRACE("DNS Forest Name: %wZ\n", DomainName
);
695 p
->DnsForestName
.Buffer
= MIDL_user_allocate(DomainName
->MaximumLength
);
696 if (p
->DnsForestName
.Buffer
== NULL
)
698 MIDL_user_free(DomainName
);
699 Status
= STATUS_INSUFFICIENT_RESOURCES
;
703 p
->DnsForestName
.Length
= DomainName
->Length
;
704 p
->DnsForestName
.MaximumLength
= DomainName
->MaximumLength
;
705 memcpy(p
->DnsForestName
.Buffer
,
707 DomainName
->MaximumLength
);
710 MIDL_user_free(DomainName
);
713 /* DNS Domain GUID */
714 AttributeSize
= sizeof(GUID
);
715 Status
= LsapGetObjectAttribute(PolicyObject
,
719 if (!NT_SUCCESS(Status
))
722 *PolicyInformation
= (PLSAPR_POLICY_INFORMATION
)p
;
725 if (!NT_SUCCESS(Status
))
730 MIDL_user_free(p
->Name
.Buffer
);
732 if (p
->DnsDomainName
.Buffer
)
733 MIDL_user_free(p
->DnsDomainName
.Buffer
);
735 if (p
->DnsForestName
.Buffer
)
736 MIDL_user_free(p
->DnsForestName
.Buffer
);
739 MIDL_user_free(p
->Sid
);
750 LsarQueryDnsDomainInt(PLSA_DB_OBJECT PolicyObject
,
751 PLSAPR_POLICY_INFORMATION
*PolicyInformation
)
754 *PolicyInformation
= NULL
;
755 return STATUS_NOT_IMPLEMENTED
;
760 LsarQueryLocalAccountDomain(PLSA_DB_OBJECT PolicyObject
,
761 PLSAPR_POLICY_INFORMATION
*PolicyInformation
)
764 *PolicyInformation
= NULL
;
765 return STATUS_NOT_IMPLEMENTED
;
770 LsarSetAuditLog(PLSA_DB_OBJECT PolicyObject
,
771 PPOLICY_AUDIT_LOG_INFO Info
)
773 TRACE("(%p %p)\n", PolicyObject
, Info
);
775 return LsapSetObjectAttribute(PolicyObject
,
778 sizeof(POLICY_AUDIT_LOG_INFO
));
783 LsarSetAuditEvents(PLSA_DB_OBJECT PolicyObject
,
784 PLSAPR_POLICY_AUDIT_EVENTS_INFO Info
)
787 return STATUS_NOT_IMPLEMENTED
;
792 LsarSetPrimaryDomain(PLSA_DB_OBJECT PolicyObject
,
793 PLSAPR_POLICY_PRIMARY_DOM_INFO Info
)
795 PUNICODE_STRING Buffer
;
800 TRACE("(%p %p)\n", PolicyObject
, Info
);
802 Length
= sizeof(UNICODE_STRING
) + Info
->Name
.MaximumLength
;
803 Buffer
= RtlAllocateHeap(RtlGetProcessHeap(),
807 return STATUS_INSUFFICIENT_RESOURCES
;
809 Buffer
->Length
= Info
->Name
.Length
;
810 Buffer
->MaximumLength
= Info
->Name
.MaximumLength
;
811 Buffer
->Buffer
= (LPWSTR
)sizeof(UNICODE_STRING
);
812 Ptr
= (LPWSTR
)((ULONG_PTR
)Buffer
+ sizeof(UNICODE_STRING
));
813 memcpy(Ptr
, Info
->Name
.Buffer
, Info
->Name
.MaximumLength
);
815 Status
= LsapSetObjectAttribute(PolicyObject
,
820 RtlFreeHeap(RtlGetProcessHeap(), 0, Buffer
);
822 if (!NT_SUCCESS(Status
))
826 if (Info
->Sid
!= NULL
)
827 Length
= RtlLengthSid(Info
->Sid
);
829 Status
= LsapSetObjectAttribute(PolicyObject
,
839 LsarSetAccountDomain(PLSA_DB_OBJECT PolicyObject
,
840 PLSAPR_POLICY_ACCOUNT_DOM_INFO Info
)
842 PUNICODE_STRING Buffer
;
847 TRACE("(%p %p)\n", PolicyObject
, Info
);
849 Length
= sizeof(UNICODE_STRING
) + Info
->DomainName
.MaximumLength
;
850 Buffer
= RtlAllocateHeap(RtlGetProcessHeap(),
854 return STATUS_INSUFFICIENT_RESOURCES
;
856 Buffer
->Length
= Info
->DomainName
.Length
;
857 Buffer
->MaximumLength
= Info
->DomainName
.MaximumLength
;
858 Buffer
->Buffer
= (LPWSTR
)sizeof(UNICODE_STRING
);
859 Ptr
= (LPWSTR
)((ULONG_PTR
)Buffer
+ sizeof(UNICODE_STRING
));
860 memcpy(Ptr
, Info
->DomainName
.Buffer
, Info
->DomainName
.MaximumLength
);
862 Status
= LsapSetObjectAttribute(PolicyObject
,
867 RtlFreeHeap(RtlGetProcessHeap(), 0, Buffer
);
869 if (!NT_SUCCESS(Status
))
873 if (Info
->Sid
!= NULL
)
874 Length
= RtlLengthSid(Info
->Sid
);
876 Status
= LsapSetObjectAttribute(PolicyObject
,
886 LsarSetServerRole(PLSA_DB_OBJECT PolicyObject
,
887 PPOLICY_LSA_SERVER_ROLE_INFO Info
)
889 TRACE("(%p %p)\n", PolicyObject
, Info
);
891 return LsapSetObjectAttribute(PolicyObject
,
894 sizeof(POLICY_LSA_SERVER_ROLE_INFO
));
899 LsarSetReplicaSource(PLSA_DB_OBJECT PolicyObject
,
900 PPOLICY_LSA_REPLICA_SRCE_INFO Info
)
903 return STATUS_NOT_IMPLEMENTED
;
908 LsarSetDefaultQuota(PLSA_DB_OBJECT PolicyObject
,
909 PPOLICY_DEFAULT_QUOTA_INFO Info
)
911 TRACE("(%p %p)\n", PolicyObject
, Info
);
913 return LsapSetObjectAttribute(PolicyObject
,
916 sizeof(POLICY_DEFAULT_QUOTA_INFO
));
921 LsarSetModification(PLSA_DB_OBJECT PolicyObject
,
922 PPOLICY_MODIFICATION_INFO Info
)
924 TRACE("(%p %p)\n", PolicyObject
, Info
);
926 return LsapSetObjectAttribute(PolicyObject
,
929 sizeof(POLICY_MODIFICATION_INFO
));
934 LsarSetAuditFull(PLSA_DB_OBJECT PolicyObject
,
935 PPOLICY_AUDIT_FULL_QUERY_INFO Info
)
937 PPOLICY_AUDIT_FULL_QUERY_INFO AuditFullInfo
= NULL
;
941 TRACE("(%p %p)\n", PolicyObject
, Info
);
943 AttributeSize
= sizeof(POLICY_AUDIT_FULL_QUERY_INFO
);
944 AuditFullInfo
= MIDL_user_allocate(AttributeSize
);
945 if (AuditFullInfo
== NULL
)
946 return STATUS_INSUFFICIENT_RESOURCES
;
948 Status
= LsapGetObjectAttribute(PolicyObject
,
952 if (!NT_SUCCESS(Status
))
955 AuditFullInfo
->ShutDownOnFull
= Info
->ShutDownOnFull
;
957 Status
= LsapSetObjectAttribute(PolicyObject
,
963 if (AuditFullInfo
!= NULL
)
964 MIDL_user_free(AuditFullInfo
);
971 LsarSetDnsDomain(PLSA_DB_OBJECT PolicyObject
,
972 PLSAPR_POLICY_DNS_DOMAIN_INFO Info
)
975 return STATUS_NOT_IMPLEMENTED
;
980 LsarSetDnsDomainInt(PLSA_DB_OBJECT PolicyObject
,
981 PLSAPR_POLICY_DNS_DOMAIN_INFO Info
)
984 return STATUS_NOT_IMPLEMENTED
;
989 LsarSetLocalAccountDomain(PLSA_DB_OBJECT PolicyObject
,
990 PLSAPR_POLICY_ACCOUNT_DOM_INFO Info
)
993 return STATUS_NOT_IMPLEMENTED
;