RtlUnicodeStringToAnsiString function (winternl.h)

Converts the specified Unicode source string into an ANSI string.


NTSTATUS RtlUnicodeStringToAnsiString(
  [in, out] PANSI_STRING     DestinationString,
  [in]      PCUNICODE_STRING SourceString,
  [in]      BOOLEAN          AllocateDestinationString


[in, out] DestinationString

A pointer to an ANSI_STRING structure to hold the converted ANSI string. If AllocateDestinationString is TRUE, the routine allocates a new buffer to hold the string data and updates the Buffer member of DestinationString to point to the new buffer. Otherwise, the routine uses the currently specified buffer to hold the string.

[in] SourceString

The UNICODE_STRING structure that contains the source string to be converted to ANSI.

[in] AllocateDestinationString

Controls allocation of the buffer space for the DestinationString.


Buffer space is allocated for DestinationString. If set to TRUE, the buffer must be deallocated using RtlFreeAnsiString.


Buffer space is not allocated for DestinationString.

Return value

The various NTSTATUS values are defined in NTSTATUS.H, which is distributed with the DDK.

Return code Description
The Unicode string was converted to ANSI. Otherwise, no storage was allocated and no conversion was done.


The translation is done with respect to the current system locale information.

Because there is no import library for this function, you must use GetProcAddress.


Minimum supported client Windows 2000 Professional [desktop apps only]
Minimum supported server Windows 2000 Server [desktop apps only]
Target Platform Windows
Header winternl.h
Library NtosKrnl.lib
DLL Ntdll.dll; NtosKrnl.exe