/*
- * @unimplemented
+ * @implemented
*/
NTSTATUS
WINAPI
IN ULONG PreferedMaximumLength,
OUT PULONG CountReturned)
{
- FIXME("LsaEnumerateTrustedDomains(%p %p %p %lu %p) stub\n",
+ LSAPR_TRUSTED_ENUM_BUFFER TrustedEnumBuffer;
+ NTSTATUS Status;
+
+ TRACE("LsaEnumerateTrustedDomains(%p %p %p %lu %p)\n",
PolicyHandle, EnumerationContext, Buffer,
PreferedMaximumLength, CountReturned);
- if (CountReturned)
- *CountReturned = 0;
+ if (Buffer == NULL)
+ return STATUS_INVALID_PARAMETER;
- return STATUS_SUCCESS;
+ TrustedEnumBuffer.EntriesRead = 0;
+ TrustedEnumBuffer.Information = NULL;
+
+ RpcTryExcept
+ {
+ Status = LsarEnumerateTrustedDomains((LSAPR_HANDLE)PolicyHandle,
+ EnumerationContext,
+ &TrustedEnumBuffer,
+ PreferedMaximumLength);
+
+ *Buffer = TrustedEnumBuffer.Information;
+ *CountReturned = TrustedEnumBuffer.EntriesRead;
+
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ if (TrustedEnumBuffer.Information != NULL)
+ MIDL_user_free(TrustedEnumBuffer.Information);
+
+ Status = I_RpcMapWin32Status(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
+ return Status;
}
/*
- * @unimplemented
+ * @implemented
*/
NTSTATUS
WINAPI
IN ULONG PreferedMaximumLength,
OUT PULONG CountReturned)
{
- FIXME("LsaEnumerateTrustedDomainsEx(%p %p %p %lu %p) stub\n",
+ LSAPR_TRUSTED_ENUM_BUFFER_EX TrustedEnumBuffer;
+ NTSTATUS Status;
+
+ TRACE("LsaEnumerateTrustedDomainsEx(%p %p %p %lu %p)\n",
PolicyHandle, EnumerationContext, Buffer,
PreferedMaximumLength, CountReturned);
- if (CountReturned)
- *CountReturned = 0;
+ if (Buffer == NULL)
+ return STATUS_INVALID_PARAMETER;
+
+ TrustedEnumBuffer.EntriesRead = 0;
+ TrustedEnumBuffer.EnumerationBuffer = NULL;
- return STATUS_SUCCESS;
+ RpcTryExcept
+ {
+ Status = LsarEnumerateTrustedDomainsEx((LSAPR_HANDLE)PolicyHandle,
+ EnumerationContext,
+ &TrustedEnumBuffer,
+ PreferedMaximumLength);
+
+ *Buffer = TrustedEnumBuffer.EnumerationBuffer;
+ *CountReturned = TrustedEnumBuffer.EntriesRead;
+
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ if (TrustedEnumBuffer.EnumerationBuffer != NULL)
+ MIDL_user_free(TrustedEnumBuffer.EnumerationBuffer);
+
+ Status = I_RpcMapWin32Status(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
+ return Status;
}
/*
- * @unimplemented
+ * @implemented
*/
NTSTATUS
WINAPI
/*
- * @unimplemented
+ * @implemented
*/
NTSTATUS
WINAPI