PiBuildAndOpenDeviceDirectoryPath
NTSTATUS __fastcall PiBuildAndOpenDeviceDirectoryPath(
PCUNICODE_STRING SourceString,
UINT16 *a2,
INT64 a3,
CHAR a4,
INT64 a5){
__int64 v8;
unsigned int v9;
int v10;
_UNICODE_STRING String;
String = 0i64;
RtlInitUnicodeString(&String, 0i64);
v8 = -1i64;
do
++v8;
while( *(_WORD *)(a3 + 2 * v8) );
v9 = *a2 + SourceString->Length + 20 + 2 * v8;
if( v9 <= 0xFFFE )
{
v10 = IopAllocateUnicodeString(&String, v9);
if( v10 >= 0 )
{
v10 = RtlUnicodeStringPrintfEx(&String, 0i64, 0x800ui64, (WCHAR *)L"%wZ\\%ws\\%wZ\\%ws");
if( v10 >= 0 )
{
v10 = PiOpenDirectoryWithRoot(SourceString, &String);
if( v10 >= 0 )
*(_QWORD *)a5 = 0i64;
}
}
}
else
{
v10 = -2147483643;
}
RtlFreeAnsiString(&String);
return v10;
}Referenced by:
IoGetDeviceDirectory