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.