mirror of
https://github.com/reactos/reactos.git
synced 2025-05-27 04:58:25 +00:00
[NETAPI32] Implement DsGetSiteNameA
Also add the NetpAllocAnsiStrFromWStr helper function.
This commit is contained in:
parent
0b129da05c
commit
3d5c682cd8
3 changed files with 74 additions and 4 deletions
|
@ -135,6 +135,38 @@ NetUnregisterDomainNameChangeNotification(
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
PSTR
|
||||||
|
WINAPI
|
||||||
|
NetpAllocAnsiStrFromWStr(
|
||||||
|
_In_ PWSTR InString)
|
||||||
|
{
|
||||||
|
UNICODE_STRING UnicodeString;
|
||||||
|
ANSI_STRING AnsiString;
|
||||||
|
ULONG Size;
|
||||||
|
NET_API_STATUS NetStatus;
|
||||||
|
NTSTATUS Status;
|
||||||
|
|
||||||
|
RtlInitUnicodeString(&UnicodeString, InString);
|
||||||
|
|
||||||
|
Size = RtlUnicodeStringToAnsiSize(&UnicodeString);
|
||||||
|
NetStatus = NetApiBufferAllocate(Size,
|
||||||
|
(PVOID*)&AnsiString.Buffer);
|
||||||
|
if (NetStatus != NERR_Success)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
Status = RtlUnicodeStringToAnsiString(&AnsiString,
|
||||||
|
&UnicodeString,
|
||||||
|
FALSE);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
NetApiBufferFree(AnsiString.Buffer);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return AnsiString.Buffer;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
PWSTR
|
PWSTR
|
||||||
WINAPI
|
WINAPI
|
||||||
NetpAllocWStrFromAnsiStr(
|
NetpAllocWStrFromAnsiStr(
|
||||||
|
|
|
@ -64,6 +64,11 @@ CopySidFromSidAndRid(
|
||||||
_In_ PSID SrcSid,
|
_In_ PSID SrcSid,
|
||||||
_In_ ULONG RelativeId);
|
_In_ ULONG RelativeId);
|
||||||
|
|
||||||
|
PSTR
|
||||||
|
WINAPI
|
||||||
|
NetpAllocAnsiStrFromWStr(
|
||||||
|
_In_ PWSTR InString);
|
||||||
|
|
||||||
PWSTR
|
PWSTR
|
||||||
WINAPI
|
WINAPI
|
||||||
NetpAllocWStrFromAnsiStr(
|
NetpAllocWStrFromAnsiStr(
|
||||||
|
|
|
@ -604,19 +604,52 @@ DsGetForestTrustInformationW(
|
||||||
DWORD
|
DWORD
|
||||||
WINAPI
|
WINAPI
|
||||||
DsGetSiteNameA(
|
DsGetSiteNameA(
|
||||||
_In_ LPCSTR ComputerName,
|
_In_opt_ LPCSTR ComputerName,
|
||||||
_Out_ LPSTR *SiteName)
|
_Out_ LPSTR *SiteName)
|
||||||
{
|
{
|
||||||
FIXME("DsGetSiteNameA(%s, %p)\n",
|
PWSTR pComputerNameW = NULL;
|
||||||
|
PWSTR pSiteNameW = NULL;
|
||||||
|
DWORD dwError = ERROR_SUCCESS;
|
||||||
|
|
||||||
|
TRACE("DsGetSiteNameA(%s, %p)\n",
|
||||||
debugstr_a(ComputerName), SiteName);
|
debugstr_a(ComputerName), SiteName);
|
||||||
return ERROR_CALL_NOT_IMPLEMENTED;
|
|
||||||
|
if (ComputerName != NULL)
|
||||||
|
{
|
||||||
|
pComputerNameW = NetpAllocWStrFromAnsiStr((PSTR)ComputerName);
|
||||||
|
if (pComputerNameW == NULL)
|
||||||
|
{
|
||||||
|
dwError = ERROR_NOT_ENOUGH_MEMORY;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dwError = DsGetSiteNameW(pComputerNameW,
|
||||||
|
&pSiteNameW);
|
||||||
|
if (dwError != ERROR_SUCCESS)
|
||||||
|
goto done;
|
||||||
|
|
||||||
|
*SiteName = NetpAllocAnsiStrFromWStr(pSiteNameW);
|
||||||
|
if (*SiteName == NULL)
|
||||||
|
{
|
||||||
|
dwError = ERROR_NOT_ENOUGH_MEMORY;
|
||||||
|
}
|
||||||
|
|
||||||
|
done:
|
||||||
|
if (pSiteNameW != NULL)
|
||||||
|
NetApiBufferFree(pSiteNameW);
|
||||||
|
|
||||||
|
if (pComputerNameW != NULL)
|
||||||
|
NetApiBufferFree(pComputerNameW);
|
||||||
|
|
||||||
|
return dwError;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
DWORD
|
DWORD
|
||||||
WINAPI
|
WINAPI
|
||||||
DsGetSiteNameW(
|
DsGetSiteNameW(
|
||||||
_In_ LPCWSTR ComputerName,
|
_In_opt_ LPCWSTR ComputerName,
|
||||||
_Out_ LPWSTR *SiteName)
|
_Out_ LPWSTR *SiteName)
|
||||||
{
|
{
|
||||||
NET_API_STATUS status;
|
NET_API_STATUS status;
|
||||||
|
|
Loading…
Reference in a new issue