CmGetMatchingCommonClassList
NTSTATUS __stdcall CmGetMatchingCommonClassList(
HPNPCTX *hPnpCtx,
_CM_OBJECT_TYPE CmObjectType,
UINT8 *MatchCallbackRoutine,
HPNPCTX *a4,
const WCHAR *a5,
_CM_OBJECT_TYPE a6,
VOID *a7,
VOID *MatchCallbackContext,
WCHAR *Buffer,
INT64 BufferLength,
UINT64 *RequiredLength,
UINT64 Flags){
__int64(__fastcall *v16)(HPNPCTX *, _QWORD, _QWORD, __int64, int, WCHAR **);
int v17;
NTSTATUS MatchingCommonClassListWorker;
NTSTATUS v19;
int v21;
int v22;
NTSTATUS v23;
VOID *v24;
WCHAR *v25[12];
memset(v25, 0i64, 0x58u);
v16 = (__int64(__fastcall *)(HPNPCTX *, _QWORD, _QWORD, __int64, int, WCHAR **))*((_QWORD *)hPnpCtx + 63);
LODWORD(v25[5]) = a6;
v25[2] = (WCHAR *)MatchCallbackRoutine;
v25[3] = (WCHAR *)a4;
v25[6] = (WCHAR *)a7;
LODWORD(v25[7]) = (_DWORD)MatchCallbackContext;
v25[4] = (WCHAR *)a5;
if( v16 )
{
v17 = v16(hPnpCtx, 0i64, (unsigned int)CmObjectType, 4i64, 1, v25);
if( v17 == -1073741822 )
{
v16 = 0i64;
}
else
{
if( v17 == -1073741536 )
return(NTSTATUS)v25[0];
if( v17 )
return -1073741595;
}
}
MatchingCommonClassListWorker = CmGetMatchingCommonClassListWorker(
hPnpCtx,
CmObjectType,
(UINT8 *)v25[2],
(HPNPCTX *)v25[3],
v25[4],
(_CM_OBJECT_TYPE)v25[5],
v25[6],
v24,
v25[0],
(INT64)v25[1],
(UINT64 *)v25[2],
(UINT64)v25[3]);
v19 = MatchingCommonClassListWorker;
if( !v16 )
return v19;
LODWORD(v25[0]) = MatchingCommonClassListWorker;
v21 = v16(hPnpCtx, 0i64, (unsigned int)CmObjectType, 4i64, 2, v25);
v22 = v21;
if( v21 == -1073741822 )
return v19;
if( v21 == -1073741536 )
return(NTSTATUS)v25[0];
v23 = v19;
if( v22 )
return -1073741595;
return v23;
}Referenced by:
PnpDispatchInstallerClass
PnpDispatchInterfaceClass