FsRtlMdlReadEx
INT64 __stdcall FsRtlMdlReadEx(
FILE_OBJECT *FileObject,
LARGE_INTEGER *FileOffset,
UINT64 Length,
UINT64 LockKey,
MDL **MdlChain,
IO_STATUS_BLOCK *IoStatus){
int v6;
ULONG v7;
int v10;
INT64 result;
_DEVICE_OBJECT *RelatedDeviceObject;
PIRP v13;
PIRP v14;
__int64 v15;
v6 = LockKey;
v7 = Length;
if( FsRtlMdlRead(FileObject, FileOffset, Length, LockKey, MdlChain, IoStatus) )
return 0;
RelatedDeviceObject = IoGetRelatedDeviceObject(FileObject);
v13 = IoBuildAsynchronousFsdRequest(3u, RelatedDeviceObject, 0i64, v7, FileOffset, 0i64);
v14 = v13;
if( v13 )
{
v15 = *((_QWORD *)v13 + 23);
*(_QWORD *)(v15 - 24) = FileObject;
*(_BYTE *)(v15 - 71) = 2;
*(_DWORD *)(v15 - 56) = v6;
*((_DWORD *)v14 + 4) |= 4u;
v10 = IoSynchronousCallDriver(RelatedDeviceObject, v14);
IoStatus->Status = *((_DWORD *)v14 + 12);
IoStatus->Information = *((_QWORD *)v14 + 7);
if( v10 >= 0 )
{
*MdlChain = (MDL *)*((_QWORD *)v14 + 1);
*((_QWORD *)v14 + 1) = 0i64;
}
IoFreeIrp(v14);
return(unsigned int)v10;
}
result = 3221225626i64;
IoStatus->Status = -1073741670;
return result;
}Referenced by:
No references.