RtlAnsiStringToUnicodeString
NTSTATUS __stdcall RtlAnsiStringToUnicodeString(
_UNICODE_STRING *DestinationString,
_STRING *SourceString,
UINT8 AllocateDestinationString){
unsigned int v6;
unsigned __int64 v7;
UINT32 v8;
int v9;
wchar_t *StringRoutine;
UINT64 BytesInMultiByteString;
UINT64 BytesInUnicodeString;
LODWORD(BytesInUnicodeString) = 0;
v6 = RtlxAnsiStringToUnicodeSize(&SourceString->Length);
if( v6 > 0xFFFE )
return -1073741584;
DestinationString->Length = v6 - 2;
if( AllocateDestinationString )
{
DestinationString->MaximumLength = v6;
StringRoutine = (wchar_t *)ExpAllocateStringRoutine(v6);
DestinationString->Buffer = StringRoutine;
if( !StringRoutine )
return -1073741801;
}
else
{
v7 = (unsigned __int16)(v6 - 2) + 2i64;
if( v7 > DestinationString->MaximumLength || v7 < 2 )
return -2147483643;
}
LODWORD(BytesInMultiByteString) = SourceString->Length;
v9 = RtlMultiByteToUnicodeN(
DestinationString->Buffer,
DestinationString->Length,
&BytesInUnicodeString,
SourceString->Buffer,
BytesInMultiByteString);
if( v9 >= 0 )
{
DestinationString->Buffer[(unsigned __int64)(unsigned int)BytesInUnicodeString >> 1] = 0;
v9 = 0;
}
if( v9 < 0 )
{
if( AllocateDestinationString )
{
ExFreePoolWithTag(DestinationString->Buffer, v8);
DestinationString->Buffer = 0i64;
}
}
return v9;
}Referenced by:
AslStringAnsiToUnicode
CmLogMcUpdateStatus
CmpAddProcessorConfigurationEntry
CmpAddRemoveContainerToCLFSLog
CmpCreateHwProfileFriendlyName
CmpFindControlSet
CmpInitializeDriverStores
CmpInitializeLoadOptions
CmpInitializeRegistryNode
CmpSetSystemBiosInformation
CmpSetVersionData
CmpSetVideoBiosInformation
EmpInfParseGetGuidFromName
EtwWmitraceWorker
ExpCovReadFriendlyName
ExpSystemErrorHandler2
HvlDebuggerSupportInitialize
InitBootProcessor
IopApplySystemPartitionProt
IopCopyBootLogRegistryToFile
IopCreateArcNames
IopCreateArcNamesCd
IopCreateUnicodeFromAnsiBuffer
IopGetBootDiskInformation
IopInitializeBootLogging
IopMarkBootPartition
KsepStringAnsiToUnicode
MiLogFailedDriverLoad
MiResolveImageReferences
MiSnapThunk
NtQuerySystemEnvironmentValue
ObCheckRefTraceProcess
PiGetDefaultMessageString
PiUEventHandleVetoEvent
PipCriticalDeviceWaitCallback
PipSmBiosGetString
PnpLogVetoInformation
PopAnsiStringToUnicodeString
PopEmModuleAddressMatchCallback
PopEmUpdateDeviceConstraintCallback
RamdiskStart
RtlCreateUnicodeStringFromAsciiz
RtlInt64ToUnicodeString
RtlIntegerToUnicodeString
ScAnsiToUnicodeString
SepInitializationPhase1
WmipDriverEntry
WmipQueryWmiRegInfo