PiDqConvertQueryFlagsToString
NTSTATUS __stdcall PiDqConvertQueryFlagsToString(
UINT64 QueryFlags,
WCHAR *QueryFlagsString,
UINT64 QueryFlagsStringSize,
UINT64 *RequiredSize){
unsigned int v4;
WCHAR *v6;
int v7;
NTSTATUS result;
unsigned int v9;
UINT64 v10;
UINT64 dwFlags;
size_t cbDest[2];
_NTSTRSAFE_PWSTR ppszDestEnd[2];
v4 = QueryFlagsStringSize;
v6 = QueryFlagsString;
v7 = QueryFlags;
result = 0;
if( (QueryFlags & 0xFFFFFFF8) != 0 )
return -1073741811;
v9 = 2;
if( (unsigned int)QueryFlagsStringSize >= 2 )
*QueryFlagsString = 0;
*(_QWORD *)ppszDestEnd = QueryFlagsString;
v10 = (unsigned int)QueryFlagsStringSize;
*(_QWORD *)cbDest = (unsigned int)QueryFlagsStringSize;
if( (QueryFlags & 1) != 0 )
{
v7 = QueryFlags & 0xFFFFFFFE;
v9 = 54;
if( (unsigned int)QueryFlagsStringSize >= 0x36 )
{
LODWORD(dwFlags) = 1024;
result = RtlStringCbCopyExW(
v6,
(unsigned int)QueryFlagsStringSize,
(WCHAR *)L"DevQueryFlagUpdateResults ",
(WCHAR **)ppszDestEnd,
(UINT64 *)cbDest,
dwFlags);
if( result < 0 )
return result;
v6 = *(WCHAR **)ppszDestEnd;
v10 = *(_QWORD *)cbDest;
}
}
if( (v7 & 2) != 0 )
{
v7 &= ~2u;
v9 += 52;
if( v9 <= v4 )
{
LODWORD(dwFlags) = 1024;
result = RtlStringCbCopyExW(
v6,
v10,
(WCHAR *)L"DevQueryFlagAllProperties ",
(WCHAR **)ppszDestEnd,
(UINT64 *)cbDest,
dwFlags);
if( result < 0 )
return result;
v6 = *(WCHAR **)ppszDestEnd;
v10 = *(_QWORD *)cbDest;
}
}
if( (v7 & 4) != 0 )
{
v7 &= ~4u;
v9 += 42;
if( v9 <= v4 )
{
LODWORD(dwFlags) = 1024;
result = RtlStringCbCopyExW(
v6,
v10,
(WCHAR *)L"DevQueryFlagLocalize ",
(WCHAR **)ppszDestEnd,
(UINT64 *)cbDest,
dwFlags);
if( result < 0 )
return result;
v6 = *(WCHAR **)ppszDestEnd;
v10 = *(_QWORD *)cbDest;
}
}
if( !v7
|| (v9 += 24, v9 > v4)
|| (LODWORD(dwFlags) = 1024,
result = RtlStringCbCopyExW(v6, v10, (WCHAR *)L"", (WCHAR **)ppszDestEnd, (UINT64 *)cbDest, dwFlags),
result >= 0) )
{
if( RequiredSize )
*(_DWORD *)RequiredSize = v9;
if( v9 < v4 )
return -1073741789;
}
return result;
}Referenced by:
PiDqIrpQueryCreate