NtCancelSynchronousIoFile
NTSTATUS __stdcall NtCancelSynchronousIoFile(
PVOID ThreadHandle,
IO_STATUS_BLOCK *IoRequestToCancel,
IO_STATUS_BLOCK *IoStatusBlock){
KPROCESSOR_MODE v5;
__int64 v6;
NTSTATUS result;
_ETHREAD *CurrentThread;
struct _DMA_ADAPTER *v9;
PVOID Thread;
int v11;
v5 = *((_BYTE *)KeGetCurrentThread() + 562);
if( v5 )
{
v6 = 0x7FFFFFFF0000i64;
if( (unsigned __int64)IoStatusBlock < 0x7FFFFFFF0000i64 )
v6 = (__int64)IoStatusBlock;
*(_DWORD *)v6 = *(_DWORD *)v6;
}
Thread = 0i64;
result = ObReferenceObjectByHandle(ThreadHandle, 1u, (POBJECT_TYPE)PsThreadType, v5, &Thread, 0i64);
if( result >= 0 )
{
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
++*((_QWORD *)CurrentThread + 114);
__incgsdword(0x2EE4u);
v9 = (struct _DMA_ADAPTER *)Thread;
v11 = (unsigned int)IopCancelSynchronousIrpsForThread(Thread, IoRequestToCancel) == 0 ? 0xC0000225 : 0;
IoStatusBlock->Status = v11;
IoStatusBlock->Information = 0i64;
HalPutDmaAdapter(v9);
return v11;
}
return result;
}Referenced by:
No references.