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.