PiPnpRtlEnumeratorFilterCallback

NTSTATUS __fastcall PiPnpRtlEnumeratorFilterCallback(
        HPNPCTX *hPnpCtx,
        const WCHAR *ObjectName,
        _CM_OBJECT_TYPE ObjectType,
        VOID *Context){
  char v8; 
  PCUNICODE_STRING v9; 
  __int64(__fastcall *v10)(HPNPCTX *, const WCHAR *, _QWORD, _QWORD); 
  _UNICODE_STRING DestinationString[2]; 
  UINT8 Present; 

  v8 = 0;
  Present = 0;
  DestinationString[0] = 0i64;
  if( !*((_BYTE *)Context + 8)
    || (LODWORD(v10) = CmIsDevicePresent(hPnpCtx, (WCHAR *)ObjectName, &Present), (int)v10 >= 0) && Present )
  {
    v9 = *(PCUNICODE_STRING *)Context;
    if( !*(_QWORD *)Context
      || v9->Length < 2u
      || !*v9->Buffer
      || (LODWORD(v10) = RtlInitUnicodeStringEx(DestinationString, (WCHAR *)ObjectName), (int)v10 >= 0)
      && (LODWORD(v10) = (unsigned int)RtlPrefixUnicodeString(*(PCUNICODE_STRING *)Context, DestinationString, 1u),
          (_BYTE)v10) )
    {
      v10 = (__int64(__fastcall *)(HPNPCTX *, const WCHAR *, _QWORD, _QWORD))*((_QWORD *)Context + 2);
      v8 = 1;
      if( v10 )
      {
        LODWORD(v10) = v10(hPnpCtx, ObjectName, (unsigned int)ObjectType, *((_QWORD *)Context + 3));
        v8 = (char)v10;
      }
    }
  }
  LOBYTE(v10) = v8;
  return(int)v10;
}

Referenced by:

No references.