CmGetDeviceInstanceKeyPath
void __fastcall CmGetDeviceInstanceKeyPath(
__int64 a1,
__int64 a2,
__int16 a3,
int a4,
int a5,
NTSTRSAFE_PWSTR pszDest,
size_t cchDest,
__int64 a8){
__int64 v8;
unsigned __int64 v9;
__int64 v10;
unsigned __int64 v11;
__int64 v12;
unsigned __int64 v13;
UINT64 dwFlags;
if( (a3 & 0x200) != 0 )
{
if( a4 )
{
if( a4 != -1 )
{
v12 = -1i64;
do
++v12;
while( *(_WORD *)(a2 + 2 * v12) );
v13 = v12 + 79;
if( v13 <= 0xFFFFFFFF )
{
if( a8 )
*(_DWORD *)a8 = v13;
if( (unsigned int)v13 <= (unsigned int)cchDest )
{
LODWORD(dwFlags) = 2048;
RtlStringCchPrintfExW(
pszDest,
(unsigned int)cchDest,
0i64,
0i64,
dwFlags,
L"%s\\%04u\\%s\\%s",
L"System\\CurrentControlSet\\Hardware Profiles",
a4,
L"System\\CurrentControlSet\\Enum",
a2);
}
}
}
}
else
{
v10 = -1i64;
do
++v10;
while( *(_WORD *)(a2 + 2 * v10) );
v11 = v10 + 82;
if( v11 <= 0xFFFFFFFF )
{
if( a8 )
*(_DWORD *)a8 = v11;
if( (unsigned int)v11 <= (unsigned int)cchDest )
{
LODWORD(dwFlags) = 2048;
RtlStringCchPrintfExW(
pszDest,
(unsigned int)cchDest,
0i64,
0i64,
dwFlags,
(const WCHAR *)L"%s\\%s\\%s",
L"System\\CurrentControlSet\\Hardware Profiles\\Current",
L"System\\CurrentControlSet\\Enum",
a2);
}
}
}
}
else
{
v8 = -1i64;
do
++v8;
while( *(_WORD *)(a2 + 2 * v8) );
v9 = v8 + 31;
if( v9 <= 0xFFFFFFFF )
{
if( a8 )
*(_DWORD *)a8 = v9;
if( (unsigned int)v9 <= (unsigned int)cchDest )
{
LODWORD(dwFlags) = 2048;
RtlStringCchPrintfExW(
pszDest,
(unsigned int)cchDest,
0i64,
0i64,
dwFlags,
L"%s\\%s",
L"System\\CurrentControlSet\\Enum",
a2);
}
}
}
}Referenced by:
CmGetDeviceRegKeyPath