HalpMapTransferV3

_LARGE_INTEGER __stdcall HalpMapTransferV3(
        _ADAPTER_OBJECT *ChildAdapter,
        _MDL *Mdl,
        VOID *MapRegisterBase,
        VOID *CurrentVa,
        UINT8 DeferFlushing,
        INT64 WriteToDevice,
        UINT8 a7){
  __int16 v7; 
  _QWORD *v10; 
  __int64 v11; 
  INT64 v12; 
  INT64 v13; 
  _LARGE_INTEGER LogicalAddressOut; 

  v7 = (__int16)CurrentVa;
  LogicalAddressOut.QuadPart = 0i64;
  if( !*(_DWORD *)DeferFlushing )
    return 0i64;
  if( !ChildAdapter->DomainPointer )
  {
    *(_DWORD *)DeferFlushing = 0;
    return 0i64;
  }
  v10 = (_QWORD *)*((_QWORD *)MapRegisterBase + 7);
  LOBYTE(v13) = a7;
  LOBYTE(v12) = WriteToDevice;
  if( ChildAdapter->ScatterGather )
    HalpDmaMapScatterTransferV3(
      ChildAdapter,
      Mdl,
      (_HALP_DMA_TRANSLATION_ENTRY *)MapRegisterBase,
      CurrentVa,
      (UINT64 *)DeferFlushing,
      v12,
      v13,
      &LogicalAddressOut);
  else
    HalpDmaMapContiguousTransferV3(
      ChildAdapter,
      Mdl,
      (_HALP_DMA_TRANSLATION_ENTRY *)MapRegisterBase,
      CurrentVa,
      (UINT64 *)DeferFlushing,
      v12,
      v13,
      &LogicalAddressOut);
  if( !ChildAdapter->MasterDevice && !(_BYTE)WriteToDevice )
  {
    if( ChildAdapter->IgnoreCount )
      HalpDmaZeroMapBuffers(v11, v10, v7 & 0xFFF, *(_DWORD *)DeferFlushing);
  }
  return LogicalAddressOut;
}

Referenced by:

IoMapTransferInternal