@ stub LsaAddPrivilegesToAccount
@ stub LsaClearAuditLog
@ stdcall LsaClose(ptr)
-@ stub LsaCreateAccount
+@ stdcall LsaCreateAccount(ptr ptr long ptr)
@ stub LsaCreateSecret
@ stub LsaCreateTrustedDomain
@ stdcall LsaCreateTrustedDomainEx(ptr ptr ptr long ptr)
@ stdcall LsaLookupPrivilegeValue(ptr ptr ptr)
@ stdcall LsaLookupSids(ptr long ptr ptr ptr)
@ stdcall LsaNtStatusToWinError(long)
-@ stub LsaOpenAccount
-@ stdcall LsaOpenPolicy(long long long long)
+@ stdcall LsaOpenAccount(ptr ptr long ptr)
+@ stdcall LsaOpenPolicy(ptr ptr long ptr)
@ stub LsaOpenPolicySce
@ stub LsaOpenSecret
@ stub LsaOpenTrustedDomain
return STATUS_OBJECT_NAME_NOT_FOUND;
}
+
+/*
+ * @implemented
+ */
+NTSTATUS
+WINAPI
+LsaCreateAccount(IN LSA_HANDLE PolicyHandle,
+ IN PSID AccountSid,
+ IN ULONG Flags,
+ IN OUT PLSA_HANDLE AccountHandle)
+{
+ NTSTATUS Status;
+
+ TRACE("(%p,%p,0x%08x,%p)\n", PolicyHandle, AccountSid, Flags, AccountHandle);
+
+ RpcTryExcept
+ {
+ Status = LsarCreateAccount((LSAPR_HANDLE)PolicyHandle,
+ AccountSid,
+ Flags,
+ AccountHandle);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ Status = I_RpcMapWin32Status(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
+ return Status;
+}
+
+
/*
* @unimplemented
*/
return RtlNtStatusToDosError(Status);
}
+
+/*
+ * @implemented
+ */
+NTSTATUS
+WINAPI
+LsaOpenAccount(IN LSA_HANDLE PolicyHandle,
+ IN PSID AccountSid,
+ IN ULONG Flags,
+ IN OUT PLSA_HANDLE AccountHandle)
+{
+ NTSTATUS Status;
+
+ TRACE("(%p,%p,0x%08x,%p)\n", PolicyHandle, AccountSid, Flags, AccountHandle);
+
+ RpcTryExcept
+ {
+ Status = LsarOpenAccount((LSAPR_HANDLE)PolicyHandle,
+ AccountSid,
+ Flags,
+ AccountHandle);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ Status = I_RpcMapWin32Status(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
+ return Status;
+}
+
+
/******************************************************************************
* LsaOpenPolicy
*
return STATUS_UNSUCCESSFUL;
}
+
/*
- * @unimplemented
+ * @implemented
*/
NTSTATUS
WINAPI
-LsaSetInformationPolicy(
- LSA_HANDLE PolicyHandle,
- POLICY_INFORMATION_CLASS InformationClass,
- PVOID Buffer)
+LsaSetInformationPolicy(IN LSA_HANDLE PolicyHandle,
+ IN POLICY_INFORMATION_CLASS InformationClass,
+ IN PVOID Buffer)
{
- FIXME("(%p,0x%08x,%p) stub\n", PolicyHandle, InformationClass, Buffer);
- return STATUS_UNSUCCESSFUL;
+ NTSTATUS Status;
+
+ TRACE("(%p,0x%08x,%p)\n", PolicyHandle, InformationClass, Buffer);
+
+ RpcTryExcept
+ {
+ Status = LsarSetInformationPolicy((LSAPR_HANDLE)PolicyHandle,
+ InformationClass,
+ (PLSAPR_POLICY_INFORMATION)Buffer);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ Status = I_RpcMapWin32Status(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
+ return Status;
}
+
/*
* @unimplemented
*/
PULONG,PNTSTATUS);
NTSTATUS NTAPI LsaClose(LSA_HANDLE);
NTSTATUS NTAPI LsaConnectUntrusted(PHANDLE);
+NTSTATUS NTAPI LsaCreateAccount(LSA_HANDLE, PSID, ULONG, PLSA_HANDLE);
NTSTATUS NTAPI LsaCreateTrustedDomainEx(LSA_HANDLE,
PTRUSTED_DOMAIN_INFORMATION_EX,
PTRUSTED_DOMAIN_AUTH_INFORMATION,ACCESS_MASK,
NTSTATUS NTAPI LsaLookupSids(LSA_HANDLE,ULONG,PSID*,
PLSA_REFERENCED_DOMAIN_LIST*,PLSA_TRANSLATED_NAME*);
ULONG NTAPI LsaNtStatusToWinError(NTSTATUS);
+NTSTATUS NTAPI LsaOpenAccount(LSA_HANDLE, PSID, ULONG, PLSA_HANDLE);
NTSTATUS NTAPI LsaOpenPolicy(PLSA_UNICODE_STRING,PLSA_OBJECT_ATTRIBUTES,
ACCESS_MASK,PLSA_HANDLE);
NTSTATUS NTAPI LsaQueryDomainInformationPolicy(LSA_HANDLE,