NtRemoveIoCompletion

NTSTATUS __stdcall NtRemoveIoCompletion(
        PVOID IoCompletionHandle,
        PVOID *KeyContext,
        PVOID *ApcContext,
        IO_STATUS_BLOCK *IoStatusBlock,
        LARGE_INTEGER *Timeout){
  KPROCESSOR_MODE v9; 
  __int64 v10; 
  __int64 v11; 
  __int64 v12; 
  __int64 v13; 
  LARGE_INTEGER *CapturedTimeout; 
  NTSTATUS result; 
  NTSTATUS v16; 
  NTSTATUS v17; 
  char NumEntriesRemoved[12]; 
  LONGLONG v19; 
  PVOID IoCompletionPtr; 
  _FILE_IO_COMPLETION_INFORMATION IoCompletionInformation; 
  _LIST_ENTRY *EntryArray; 
  EntryArray = 0i64;
  memset(&IoCompletionInformation, 0, sizeof(IoCompletionInformation));
  memset(NumEntriesRemoved, 0, sizeof(NumEntriesRemoved));
  v19 = 0i64;
  v9 = *((_BYTE *)KeGetCurrentThread() + 562);
  if( v9 )
  {
    v10 = (__int64)ApcContext;
    if( (unsigned __int64)ApcContext >= 0x7FFFFFFF0000i64 )
      v10 = 0x7FFFFFFF0000i64;
    *(_QWORD *)v10 = *(_QWORD *)v10;
    v11 = (__int64)KeyContext;
    if( (unsigned __int64)KeyContext >= 0x7FFFFFFF0000i64 )
      v11 = 0x7FFFFFFF0000i64;
    *(_QWORD *)v11 = *(_QWORD *)v11;
    v12 = (__int64)IoStatusBlock;
    if( (unsigned __int64)IoStatusBlock >= 0x7FFFFFFF0000i64 )
      v12 = 0x7FFFFFFF0000i64;
    *(_DWORD *)v12 = *(_DWORD *)v12;
    v13 = (__int64)Timeout;
    if( Timeout )
    {
      *(_QWORD *)&NumEntriesRemoved[4] = &v19;
      if( (unsigned __int64)Timeout >= 0x7FFFFFFF0000i64 )
        v13 = 0x7FFFFFFF0000i64;
      v19 = *(_QWORD *)v13;
    }
    CapturedTimeout = *(LARGE_INTEGER **)&NumEntriesRemoved[4];
  }
  else
  {
    CapturedTimeout = *(LARGE_INTEGER **)&NumEntriesRemoved[4];
    if( Timeout )
      CapturedTimeout = Timeout;
  }
  IoCompletionPtr = 0i64;
  result = ObReferenceObjectByHandle(IoCompletionHandle, 2u, IoCompletionObjectType, v9, &IoCompletionPtr, 0i64);
  if( result >= 0 )
  {
    IoRemoveIoCompletion(
      IoCompletionPtr,
      &IoCompletionInformation,
      &EntryArray,
      1ui64,
      (UINT64 *)NumEntriesRemoved,
      v9,
      CapturedTimeout,
      0);
    v17 = v16;
    HalPutDmaAdapter((PADAPTER_OBJECT)IoCompletionPtr);
    if( !v17 )
    {
      *KeyContext = IoCompletionInformation.KeyContext;
      *ApcContext = IoCompletionInformation.ApcContext;
      *IoStatusBlock = IoCompletionInformation.IoStatusBlock;
    }
    return v17;
  }
  return result;
}

Referenced by:

No references.