CmOpenDeviceInterfaceRegKey
NTSTATUS __stdcall CmOpenDeviceInterfaceRegKey(
HPNPCTX *hPnpCtx,
const WCHAR *DeviceInterfaceName,
INT64 CmKeyTypeFlags,
UINT64 HardwareProfileId,
INT64 DesiredAccess,
INT64 Create,
VOID **DeviceInterfaceKey,
UINT64 *Disposition){
unsigned int v9;
__int64(__fastcall *v11)(HPNPCTX *, const WCHAR *, __int64);
int v12;
NTSTATUS v13;
NTSTATUS v14;
int v16;
int v17;
int v18;
UINT64 v19;
_QWORD v20[12];
v9 = CmKeyTypeFlags;
memset(v20, 0i64, 0x58u);
v11 = (__int64(__fastcall *)(HPNPCTX *, const WCHAR *, __int64))*((_QWORD *)hPnpCtx + 63);
LODWORD(v20[3]) = DesiredAccess;
v20[2] = v9;
BYTE4(v20[3]) = Create;
v20[4] = DeviceInterfaceKey;
if( v11 )
{
v12 = v11(hPnpCtx, DeviceInterfaceName, 3i64);
if( v12 == -1073741822 )
{
v11 = 0i64;
}
else
{
if( v12 == -1073741536 )
{
LABEL_12:
v14 = v20[0];
goto LABEL_5;
}
if( v12 )
return -1073741595;
}
}
LODWORD(v19) = v20[3];
v13 = CmOpenDeviceInterfaceRegKeyWorker(
hPnpCtx,
(WCHAR *)DeviceInterfaceName,
v20[2],
HIDWORD(v20[2]),
v19,
BYTE4(v20[3]),
(VOID **)v20[4],
&v20[5]);
v14 = v13;
if( v11 )
{
LODWORD(v20[0]) = v13;
v16 = v11(hPnpCtx, DeviceInterfaceName, 3i64);
v17 = v16;
if( v16 != -1073741822 )
{
if( v16 != -1073741536 )
{
v18 = v14;
if( v17 )
v18 = -1073741595;
v14 = v18;
goto LABEL_5;
}
goto LABEL_12;
}
}
LABEL_5:
if( v14 >= 0 && Disposition )
*(_DWORD *)Disposition = v20[5];
return v14;
}Referenced by:
CmCreateDeviceInterfaceWorker
CmDeleteDeviceInterfaceMappedPropertyFromRegValue
CmDeleteDeviceInterfaceRegKeyWorker
CmGetDeviceInterfaceMappedPropertyFromRegValue
CmOpenDeviceInterfaceRegKeyWorker
CmSetDeviceInterfaceMappedPropertyFromRegValue
IoGetDeviceInterfaceAlias
IoOpenDeviceInterfaceRegistryKey
IopGetDeviceInterfaces
PiCMOpenDeviceInterfaceKey
PiDevCfgConfigureDeviceInterface
PnpDispatchDeviceInterface