PnpConvertDevpropcompkeyArrayToString
NTSTATUS __fastcall PnpConvertDevpropcompkeyArrayToString(
__int64 a1,
unsigned int a2,
WCHAR *a3,
unsigned int a4,
unsigned int *a5){
unsigned int v5;
WCHAR *v6;
unsigned int v10;
unsigned int v11;
NTSTATUS result;
UINT64 RequiredSize;
v5 = a4;
v6 = a3;
LODWORD(RequiredSize) = 0;
v10 = 2;
if( a4 >= 2 )
*a3 = 0;
v11 = 0;
if( a2 )
{
while( 1 )
{
result = ConvertDevpropcompkeyToString((_DEVPROPCOMPKEY *const)(a1 + 32i64 * v11), v6, v5, &RequiredSize);
if( (int)(result + 0x80000000) >= 0 && result != -1073741789 )
break;
if( v10 + (_DWORD)RequiredSize - 2 < v10 )
return -1073741675;
v10 += RequiredSize - 2;
if( v5 >= (unsigned __int64)(unsigned int)RequiredSize - 2 )
{
v5 += 2 - RequiredSize;
v6 += ((unsigned __int64)(unsigned int)RequiredSize - 2) >> 1;
}
if( ++v11 >= a2 )
goto LABEL_10;
}
}
else
{
LABEL_10:
result = 0;
if( a5 )
*a5 = v10;
if( v10 > a4 )
return -1073741789;
}
return result;
}Referenced by:
PiDqIrpQueryCreate