IopIoRateStartRateControl

NTSTATUS __stdcall IopIoRateStartRateControl(
        UINT64 *RateAmounts,
        UINT64 Flags,
        PVOID VolumeHandle,
        PVOID DiskIoAttribution,
        PVOID *RateControl,
        UINT64 *VolumeKey){
  unsigned int v8; 
  __int64(__fastcall **ExtensionTable)(UINT64 *, __int64, _QWORD, PVOID, _QWORD *, PVOID, UINT64 *, __int64); 
  PVOID v10; 
  NTSTATUS v11; 
  UINT64 v12; 
  UINT64 v14; 
  __int128 v15; 
  __int128 v16; 
  __int128 v17; 
  __m128i v18; 
  _QWORD v19[4]; 
  __int64 v20; 
  v14 = 0i64;
  v8 = (unsigned int)VolumeHandle;
  v17 = 0i64;
  v18 = 0i64;
  v15 = 0i64;
  v16 = 0i64;
  ExtensionTable = (__int64(__fastcall **)(UINT64 *, __int64, _QWORD, PVOID, _QWORD *, PVOID, UINT64 *, __int64))ExGetExtensionTable(IopIoRateExtensionHost);
  if( !ExtensionTable )
    return -1073741822;
  IoDiskIoAttributionQuery((__int64)RateControl, &v17, &v15);
  v10 = RateControl[3];
  v19[2] = *((_QWORD *)&v16 + 1) + v18.m128i_i64[0];
  v19[3] = *((_QWORD *)&v16 + 1) + _mm_srli_si128(v18, 8).m128i_u64[0];
  v19[0] = v15 + v17;
  v19[1] = *((_QWORD *)&v15 + 1) + *((_QWORD *)&v17 + 1);
  v11 = (*ExtensionTable)(RateAmounts, 15i64, v8, DiskIoAttribution, v19, v10, &v14, v20);
  if( v11 >= 0 )
  {
    v12 = v14;
    v14 = 0i64;
    v11 = 0;
    *VolumeKey = v12;
  }
  ExReleaseRundownProtection(IopIoRateExtensionHost + 8);
  return v11;
}

Referenced by:

IoStartIoRateControl