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 ***************************************************************/
19 LsarSetPrimaryDomain(LSAPR_HANDLE PolicyHandle
,
20 PLSAPR_POLICY_PRIMARY_DOM_INFO Info
)
22 PUNICODE_STRING Buffer
;
27 TRACE("LsarSetPrimaryDomain(%p, %p)\n", PolicyHandle
, Info
);
29 Length
= sizeof(UNICODE_STRING
) + Info
->Name
.MaximumLength
;
30 Buffer
= RtlAllocateHeap(RtlGetProcessHeap(),
34 return STATUS_INSUFFICIENT_RESOURCES
;
36 Buffer
->Length
= Info
->Name
.Length
;
37 Buffer
->MaximumLength
= Info
->Name
.MaximumLength
;
38 Buffer
->Buffer
= (LPWSTR
)sizeof(UNICODE_STRING
);
39 Ptr
= (LPWSTR
)((ULONG_PTR
)Buffer
+ sizeof(UNICODE_STRING
));
40 memcpy(Ptr
, Info
->Name
.Buffer
, Info
->Name
.MaximumLength
);
42 Status
= LsapSetObjectAttribute((PLSA_DB_OBJECT
)PolicyHandle
,
46 RtlFreeHeap(RtlGetProcessHeap(), 0, Buffer
);
48 if (!NT_SUCCESS(Status
))
52 if (Info
->Sid
!= NULL
)
53 Length
= RtlLengthSid(Info
->Sid
);
55 Status
= LsapSetObjectAttribute((PLSA_DB_OBJECT
)PolicyHandle
,
65 LsarSetAccountDomain(LSAPR_HANDLE PolicyHandle
,
66 PLSAPR_POLICY_ACCOUNT_DOM_INFO Info
)
68 PUNICODE_STRING Buffer
;
73 TRACE("LsarSetAccountDomain(%p, %p)\n", PolicyHandle
, Info
);
75 Length
= sizeof(UNICODE_STRING
) + Info
->DomainName
.MaximumLength
;
76 Buffer
= RtlAllocateHeap(RtlGetProcessHeap(),
80 return STATUS_INSUFFICIENT_RESOURCES
;
82 Buffer
->Length
= Info
->DomainName
.Length
;
83 Buffer
->MaximumLength
= Info
->DomainName
.MaximumLength
;
84 Buffer
->Buffer
= (LPWSTR
)sizeof(UNICODE_STRING
);
85 Ptr
= (LPWSTR
)((ULONG_PTR
)Buffer
+ sizeof(UNICODE_STRING
));
86 memcpy(Ptr
, Info
->DomainName
.Buffer
, Info
->DomainName
.MaximumLength
);
88 Status
= LsapSetObjectAttribute((PLSA_DB_OBJECT
)PolicyHandle
,
92 RtlFreeHeap(RtlGetProcessHeap(), 0, Buffer
);
94 if (!NT_SUCCESS(Status
))
98 if (Info
->Sid
!= NULL
)
99 Length
= RtlLengthSid(Info
->Sid
);
101 Status
= LsapSetObjectAttribute((PLSA_DB_OBJECT
)PolicyHandle
,
111 LsarSetDnsDomain(LSAPR_HANDLE PolicyHandle
,
112 PLSAPR_POLICY_DNS_DOMAIN_INFO Info
)
115 return STATUS_NOT_IMPLEMENTED
;