PnpFixupID
UINT64 __stdcall PnpFixupID(
PWCHAR ID,
UINT64 MaxIDLength,
UINT64 Multi,
UINT64 AllowedSeparators,
UNICODE_STRING *LogString){
unsigned int v5;
unsigned int v7;
PWCHAR v8;
PWCHAR v9;
WCHAR *v10;
WCHAR v11;
UNICODE_STRING *v13;
wchar_t *p_OutputLength;
UINT64 DumpDataSize;
UNICODE_STRING InsertionString2;
unsigned int v17;
v5 = AllowedSeparators;
*(_DWORD *)(&InsertionString2.MaximumLength + 1) = 0;
v7 = 0;
v8 = 0i64;
v9 = ID;
v10 = &ID[(unsigned int)MaxIDLength];
if( ID < v10 )
{
while( 1 )
{
v11 = *v9;
if( *v9 )
{
if( v11 == 32 )
{
*v9 = 95;
}
else
{
if( (unsigned __int16)(v11 - 32) > 0x5Fu || v11 == 44 )
{
v13 = LogString;
if( !LogString )
return 0i64;
*(_DWORD *)&InsertionString2.Length = 2359330;
p_OutputLength = (wchar_t *)&stru_1407D01E0.OutputLength;
LODWORD(DumpDataSize) = 2;
LABEL_26:
InsertionString2.Buffer = p_OutputLength;
PnpLogEvent(v13, &InsertionString2, 3221487672i64, v9, DumpDataSize);
return 0i64;
}
if( v11 == 92 )
{
v17 = ++v7;
if( v7 > v5 )
{
v13 = LogString;
if( !LogString )
return 0i64;
*(_DWORD *)&InsertionString2.Length = 2621478;
p_OutputLength = (wchar_t *)&stru_1407D01E0.Rsi;
LODWORD(DumpDataSize) = 4;
v9 = (PWCHAR)&v17;
goto LABEL_26;
}
}
}
}
else
{
if( !(_DWORD)Multi || v8 && v9 == v8 + 1 )
{
LABEL_8:
if( v9 < v10 && (v7 == v5 || v5 == -1) )
return(unsigned int)(v9 - ID) + 1;
break;
}
v8 = v9;
}
if( ++v9 >= v10 )
goto LABEL_8;
}
}
v13 = LogString;
if( LogString )
{
*(_DWORD *)&InsertionString2.Length = 7471216;
p_OutputLength = L"not terminated, too long or invalid number of separators";
LODWORD(DumpDataSize) = 0;
v9 = 0i64;
goto LABEL_26;
}
return 0i64;
}Referenced by:
PnpQueryID