CmEnumDevicesInContainerWithCallback
NTSTATUS __stdcall CmEnumDevicesInContainerWithCallback(
HPNPCTX *hPnpCtx,
const WCHAR *ContainerId,
VOID *ObjectBaseKey,
PNPCTX_REG_ENUM_KEY_ACTION *ContainedDeviceCallback,
HPNPCTX *a5,
const WCHAR *a6,
VOID *a7,
VOID *Context,
UINT64 Flags,
UINT64 *a10,
INT64 a11){
__int64(__fastcall *v15)(HPNPCTX *, const WCHAR *, __int64, __int64, int, UINT64 *);
int v16;
NTSTATUS v17;
NTSTATUS v18;
int v19;
int v20;
NTSTATUS v21;
WCHAR *v23;
VOID *v24;
VOID *v25;
UINT64 v26[12];
memset(v26, 0i64, 0x58u);
v15 = (__int64(__fastcall *)(HPNPCTX *, const WCHAR *, __int64, __int64, int, UINT64 *))*((_QWORD *)hPnpCtx + 63);
LODWORD(v26[5]) = 0;
v26[2] = (UINT64)ObjectBaseKey;
v26[3] = (UINT64)ContainedDeviceCallback;
v26[4] = (UINT64)a5;
if( v15 )
{
v16 = v15(hPnpCtx, ContainerId, 5i64, 15i64, 1, v26);
if( v16 == -1073741822 )
{
v15 = 0i64;
}
else
{
if( v16 == -1073741536 )
return v26[0];
if( v16 )
return -1073741595;
}
}
LODWORD(v23) = v26[5];
v17 = CmEnumDevicesInContainerWithCallbackWorker(
hPnpCtx,
ContainerId,
(VOID *)v26[2],
(PNPCTX_REG_ENUM_KEY_ACTION *)v26[3],
(HPNPCTX *)v26[4],
v23,
v24,
v25,
v26[0],
(UINT64 *)v26[1],
v26[2]);
v18 = v17;
if( !v15 )
return v18;
LODWORD(v26[0]) = v17;
v19 = v15(hPnpCtx, ContainerId, 5i64, 15i64, 2, v26);
v20 = v19;
if( v19 == -1073741822 )
return v18;
if( v19 == -1073741536 )
return v26[0];
v21 = v18;
if( v20 )
return -1073741595;
return v21;
}Referenced by:
PiDcResetChildDeviceContainers