CmClassFilterCallback

UINT8 __stdcall CmClassFilterCallback(
        HPNPCTX *hPnpCtx,
        WCHAR *CmObjectName,
        _CM_OBJECT_TYPE CmObjectType,
        VOID *Context){
  UINT8 v8; 
  WCHAR *v9; 
  __int64(__fastcall *v10)(HPNPCTX *, WCHAR *, _QWORD, _QWORD); 
  UINT64 Flags; 
  UINT64 CmRegPropType; 
  _UNICODE_STRING String2; 
  _UNICODE_STRING DestinationString; 
  UINT8 PropertyBuffer[76]; 
  __int16 v17; 

  CmRegPropType = 0i64;
  v8 = 0;
  DestinationString = 0i64;
  String2 = 0i64;
  if( Context )
  {
    v9 = *(WCHAR **)Context;
    if( !*(_QWORD *)Context
      || !*v9
      || RtlInitUnicodeStringEx(&DestinationString, v9) >= 0
      && (LODWORD(Flags) = 0,
          LODWORD(CmRegPropType) = 78,
          CmGetDeviceRegProp(
            hPnpCtx,
            CmObjectName,
            0i64,
            9i64,
            (UINT64 *)((char *)&CmRegPropType + 4),
            PropertyBuffer,
            &CmRegPropType,
            Flags) >= 0)
      && HIDWORD(CmRegPropType) == 1
      && (unsigned int)CmRegPropType >= 2
      && (v17 = 0, RtlInitUnicodeStringEx(&String2, (WCHAR *)PropertyBuffer) >= 0)
      && (unsigned __int8)RtlEqualUnicodeString(&DestinationString, &String2, 1u) )
    {
      v10 = (__int64(__fastcall *)(HPNPCTX *, WCHAR *, _QWORD, _QWORD))*((_QWORD *)Context + 1);
      v8 = 1;
      if( v10 )
        return v10(hPnpCtx, CmObjectName, (unsigned int)CmObjectType, *((_QWORD *)Context + 2));
    }
  }
  return v8;
}

Referenced by:

No references.