IoRecordIoAttribution

VOID __fastcall IoRecordIoAttribution(VOID *OpaqueHandle, _IO_ATTRIBUTION_INFORMATION *AttributionInformation){
  VOID *DiskIoAttribution; 
  VOID *v4; 
  _IOP_DISK_IO_ATTRIBUTION_CONTEXT *v5; 
  __int32 bf_0; 

  if( AttributionInformation->Version == 1 )
  {
    DiskIoAttribution = IopFindDiskIoAttribution(OpaqueHandle);
    v4 = DiskIoAttribution;
    if( DiskIoAttribution )
    {
      v5 = (_IOP_DISK_IO_ATTRIBUTION_CONTEXT *)DiskIoAttribution;
      do
      {
        bf_0 = AttributionInformation->Flags._bf_0;
        if( ((bf_0 & 0x800) == 0 || (bf_0 & 0x200) != 0 || *((_QWORD *)v5 + 22))
          && IopRecordIoAttribution(v5, AttributionInformation) < 0 )
        {
          break;
        }
        v5 = (_IOP_DISK_IO_ATTRIBUTION_CONTEXT *)*((_QWORD *)v5 + 22);
      }
      while( v5 );
      IoDiskIoAttributionDereference(v4);
    }
  }
}

Referenced by:

No references.