NtCancelIoFileEx
NTSTATUS __stdcall NtCancelIoFileEx(
VOID *FileHandle,
_IO_STATUS_BLOCK *IoRequestToCancel,
_IO_STATUS_BLOCK *IoStatusBlock){
char PreviousMode;
__int64 v6;
NTSTATUS result;
_ETHREAD *CurrentThread;
_FILE_OBJECT *v9;
int v10;
_IO_STATUS_BLOCK *v11;
int v12;
_FILE_OBJECT *pFileObject;
pFileObject = 0i64;
PreviousMode = KeGetCurrentThread()->PreviousMode;
if( PreviousMode )
{
v6 = 0x7FFFFFFF0000i64;
if( (unsigned __int64)IoStatusBlock < 0x7FFFFFFF0000i64 )
v6 = (__int64)IoStatusBlock;
*(_DWORD *)v6 = *(_DWORD *)v6;
}
result = IopReferenceFileObject(FileHandle, 0i64, PreviousMode, &pFileObject, 0i64);
if( result >= 0 )
{
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
++CurrentThread->Tcb.OtherOperationCount;
__incgsdword(0x2EE4u);
v9 = pFileObject;
v10 = IopCancelIrpsInFileObjectList(
pFileObject,
KeGetCurrentThread()->ApcState.Process,
IoRequestToCancel,
0i64,
0,
0);
v12 = v10;
if( !IoRequestToCancel || !v10 )
v12 = IopCancelIrpsInThreadListForCurrentProcess(v9, IoRequestToCancel, v11) | v10;
IoStatusBlock->Status = v12 == 0 ? 0xC0000225 : 0;
IoStatusBlock->Information = 0i64;
HalPutDmaAdapter((PADAPTER_OBJECT)v9);
return v12 == 0 ? 0xC0000225 : 0;
}
return result;
}Referenced by:
No references.