NtCancelIoFileEx
NTSTATUS __stdcall NtCancelIoFileEx(
PVOID FileHandle,
IO_STATUS_BLOCK *IoRequestToCancel,
IO_STATUS_BLOCK *IoStatusBlock){
INT8 v5;
__int64 v6;
NTSTATUS result;
_ETHREAD *CurrentThread;
FILE_OBJECT *v9;
int v10;
int v11;
PADAPTER_OBJECT DmaAdapter;
DmaAdapter = 0i64;
v5 = *((_BYTE *)KeGetCurrentThread() + 562);
if( v5 )
{
v6 = 0x7FFFFFFF0000i64;
if( (unsigned __int64)IoStatusBlock < 0x7FFFFFFF0000i64 )
v6 = (__int64)IoStatusBlock;
*(_DWORD *)v6 = *(_DWORD *)v6;
}
result = IopReferenceFileObject(FileHandle, 0i64, v5, (FILE_OBJECT **)&DmaAdapter, 0i64);
if( result >= 0 )
{
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
++*((_QWORD *)CurrentThread + 114);
__incgsdword(0x2EE4u);
v9 = (FILE_OBJECT *)DmaAdapter;
v10 = IopCancelIrpsInFileObjectList(
(_FILE_OBJECT *)DmaAdapter,
*((_EPROCESS **)KeGetCurrentThread() + 23),
IoRequestToCancel,
0i64,
0,
0);
v11 = v10;
if( !IoRequestToCancel || !v10 )
v11 = IopCancelIrpsInThreadListForCurrentProcess(v9, IoRequestToCancel) | v10;
IoStatusBlock->Status = v11 == 0 ? 0xC0000225 : 0;
IoStatusBlock->Information = 0i64;
HalPutDmaAdapter((PADAPTER_OBJECT)v9);
return v11 == 0 ? 0xC0000225 : 0;
}
return result;
}Referenced by:
No references.