CmGetMatchingFilteredDeviceList
NTSTATUS __stdcall CmGetMatchingFilteredDeviceList(
HPNPCTX *hPnpCtx,
const WCHAR *FilterString,
_CM_DEVICE_LIST_FILTER FilterFlags,
UINT8 *MatchCallbackRoutine,
HPNPCTX *a5,
const WCHAR *a6,
_CM_OBJECT_TYPE a7,
VOID *a8,
VOID *MatchCallbackContext,
WCHAR *Buffer,
UINT64 BufferLength,
UINT64 *RequiredLength,
UINT64 Flags){
__int64(__fastcall *v17)(HPNPCTX *, _QWORD, __int64, __int64, int, UINT64 *);
HPNPCTX *v18;
int v19;
NTSTATUS v20;
NTSTATUS MatchingFilteredDeviceListWorker;
int v23;
int v24;
NTSTATUS v25;
VOID *v26;
WCHAR *v27;
UINT64 *v29;
UINT64 v30[12];
memset(v30, 0i64, 0x58u);
v17 = (__int64(__fastcall *)(HPNPCTX *, _QWORD, __int64, __int64, int, UINT64 *))*((_QWORD *)hPnpCtx + 63);
LODWORD(v30[9]) = 0;
v30[2] = (UINT64)FilterString;
LODWORD(v30[3]) = FilterFlags;
v30[4] = (UINT64)MatchCallbackRoutine;
v30[6] = (UINT64)a6;
v18 = hPnpCtx;
v30[8] = (UINT64)a8;
v30[5] = (UINT64)a5;
LODWORD(v30[7]) = a7;
if( v17 )
{
v19 = v17(hPnpCtx, 0i64, 1i64, 16i64, 1, v30);
if( v19 == -1073741822 )
{
v17 = 0i64;
}
else
{
if( v19 == -1073741536 )
return v30[0];
if( v19 )
return -1073741595;
}
}
LODWORD(v26) = v30[9];
MatchingFilteredDeviceListWorker = CmGetMatchingFilteredDeviceListWorker(
hPnpCtx,
(const WCHAR *)v30[2],
v30[3],
(UINT8 *)v30[4],
(HPNPCTX *)v30[5],
(const WCHAR *)v30[6],
v30[7],
(VOID *)v30[8],
v26,
v27,
(UINT64)hPnpCtx,
v29,
v30[0]);
v20 = MatchingFilteredDeviceListWorker;
if( v17 )
{
LODWORD(v30[0]) = MatchingFilteredDeviceListWorker;
v23 = v17(v18, 0i64, 1i64, 16i64, 2, v30);
v24 = v23;
if( v23 != -1073741822 )
{
if( v23 == -1073741536 )
return v30[0];
v25 = v20;
if( v24 )
return -1073741595;
return v25;
}
}
return v20;
}Referenced by:
CmDeleteInstallerClassWorker
IopGetRootDevices
PiCMGetDeviceIdList
PiDevCfgInitDriverDatabaseCallback
PipResetDevices