VfGetScatterGatherListEx
NTSTATUS __stdcall VfGetScatterGatherListEx(
_DMA_ADAPTER *DmaAdapter,
_DEVICE_OBJECT *DeviceObject,
VOID *DmaTransferContext,
_MDL *Mdl,
UINT64 Offset,
UINT64 Length,
UINT64 Flags,
VOID *ExecutionRoutine,
_DEVICE_OBJECT *a9,
_IRP *a10,
_SCATTER_GATHER_LIST *a11,
VOID *a12,
VOID *Context,
UINT8 WriteToDevice,
VOID *DmaCompletionRoutine,
_DMA_ADAPTER *a16,
_DEVICE_OBJECT *a17,
VOID *a18,
DMA_COMPLETION_STATUS a19,
VOID *CompletionContext,
_SCATTER_GATHER_LIST **ScatterGatherList){
VOID *RealDmaOperation;
INT64 v26;
UINT8 v27;
_LIST_ENTRY *AdapterInformationInternal;
ULONG_PTR v29;
ULONG_PTR v30;
int v31;
NTSTATUS v32;
UINT64 v34;
char v35;
__int64(__fastcall *v36)(_DMA_ADAPTER *, _DEVICE_OBJECT *, VOID *, _MDL *, UINT64, _DWORD, _DWORD, VOID *, _DEVICE_OBJECT *, char, _SCATTER_GATHER_LIST *, VOID *, VOID *);
RealDmaOperation = ViGetRealDmaOperation((ULONG_PTR)DmaAdapter, 0xC0ui64);
LOBYTE(v26) = 1;
v36 = (__int64(__fastcall *)(_DMA_ADAPTER *, _DEVICE_OBJECT *, VOID *, _MDL *, UINT64, _DWORD, _DWORD, VOID *, _DEVICE_OBJECT *, char, _SCATTER_GATHER_LIST *, VOID *, VOID *))RealDmaOperation;
AdapterInformationInternal = ViGetAdapterInformationInternal(DmaAdapter, v26);
if( AdapterInformationInternal )
{
VF_ASSERT_MAX_IRQL(v27);
_InterlockedIncrement((volatile signed __int32 *)&AdapterInformationInternal[10].Flink + 1);
_InterlockedIncrement((volatile signed __int32 *)&AdapterInformationInternal[10].Blink);
VERIFY_BUFFER_LOCKED(Mdl);
v29 = ViCheckMdlLength(Mdl, Offset, (unsigned int)Length);
if( v29 )
{
v30 = v29;
ViHalPreprocessOptions(
&unk_140C12CA0,
(PSTR)"The provided MDL is not sufficient to satisfy the requested length",
0x24ui64,
v29,
0i64,
0i64,
v34);
VfReportIssueWithOptions(0xE6ui64, 0x24u, v30, 0, 0, &unk_140C12CA0);
}
}
v35 = (char)a10;
v31 = v36(
DmaAdapter,
DeviceObject,
DmaTransferContext,
Mdl,
Offset,
Length,
Flags,
ExecutionRoutine,
a9,
v35,
a11,
a12,
Context);
v32 = v31;
if( AdapterInformationInternal && v31 < 0 )
DECREMENT_SCATTER_GATHER_LISTS((__int64)AdapterInformationInternal);
return v32;
}Referenced by:
No references.