VfGetScatterGatherListEx

__int64 __fastcall VfGetScatterGatherListEx(
        ULONG_PTR a1,
        __int64 a2,
        __int64 a3,
        __int64 *a4,
        unsigned __int64 a5,
        unsigned int a6,
        int a7,
        __int64 a8,
        __int64 a9,
        char a10,
        __int64 a11,
        __int64 a12,
        __int64 a13){
  __int64(__fastcall *v17)(ULONG_PTR, __int64, __int64, __int64 *, unsigned __int64, unsigned int, int, __int64, __int64, char, __int64, __int64, __int64); 
  INT64 v18; 
  UINT8 v19; 
  LIST_ENTRY *AdapterInformationInternal; 
  unsigned int v21; 
  unsigned int v22; 
  int v23; 
  unsigned int v24; 
  UINT64 v26; 
  __int64(__fastcall *v28)(ULONG_PTR, __int64, __int64, __int64 *, unsigned __int64, unsigned int, int, __int64, __int64, char, __int64, __int64, __int64); 
  LODWORD(v17) = ViGetRealDmaOperation((_DMA_ADAPTER *)a1, 0xC0ui64);
  LOBYTE(v18) = 1;
  v28 = v17;
  AdapterInformationInternal = ViGetAdapterInformationInternal((DMA_ADAPTER *)a1, v18);
  if( AdapterInformationInternal )
  {
    VF_ASSERT_MAX_IRQL(v19);
    _InterlockedIncrement((volatile signed __int32 *)&AdapterInformationInternal[10].Flink + 1);
    _InterlockedIncrement((volatile signed __int32 *)&AdapterInformationInternal[10].Blink);
    VERIFY_BUFFER_LOCKED((MDL *)a4);
    v21 = ViCheckMdlLength((MDL *)a4, a5, a6);
    if( v21 )
    {
      v22 = v21;
      ViHalPreprocessOptions(
        &byte_140C12CA0,
        (PSTR)"The provided MDL is not sufficient to satisfy the requested length",
        0x24ui64,
        v21,
        0i64,
        0i64,
        v26);
      VfReportIssueWithOptions(0xE6ui64, 0x24ui64, v22, 0i64, 0i64, &byte_140C12CA0);
    }
  }
  v23 = v28(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13);
  v24 = v23;
  if( AdapterInformationInternal && v23 < 0 )
    DECREMENT_SCATTER_GATHER_LISTS((__int64)AdapterInformationInternal);
  return v24;
}

Referenced by:

No references.