PiDevCfgMigrateRootDevice
__int64 __fastcall PiDevCfgMigrateRootDevice(__int64 a1, __int64 a2, _DWORD *a3){
WCHAR *v5;
int v7;
int v8;
unsigned int *v9;
UNICODE_STRING ValueName;
KEY_VALUE_FULL_INFORMATION *Information;
Information = 0i64;
v5 = *(WCHAR **)(a2 + 8);
ValueName = 0i64;
LOBYTE(v7) = 0;
v8 = PiDevCfgOpenDeviceMigrationKey(v5, (PVOID *)a2);
if( v8 >= 0 )
{
if( IopGetRegistryValue(0i64, (PWCHAR)L"ConfigFlags", 0i64, &Information) >= 0 )
{
if( PnpValidateRegistryDword(Information) )
v7 = *(unsigned int *)((char *)v9 + v9[2]);
ExFreePoolWithTag(v9, 0);
}
if( (v7 & 1) == 0 )
return(unsigned int)-1073741823;
ValueName.Buffer = L"DriverInfName";
*(_DWORD *)&ValueName.Length = 1835034;
if( PnpRegistryValueExists(0i64, &ValueName) )
return(unsigned int)-1073741823;
else
return(unsigned int)PiDevCfgMigrateDevice(a1, a2, 0i64, 0i64, a3, 0i64);
}
return(unsigned int)v8;
}Referenced by:
PiDevCfgProcessDevice