ObWaitForSingleObject
NTSTATUS __stdcall ObWaitForSingleObject(
VOID *Handle,
INT8 AccessMode,
INT8 WaitMode,
UINT8 Alertable,
_LARGE_INTEGER *Timeout){
int v7;
char *v8;
VOID *WaitObject;
UINT64 Tag;
PVOID Object;
Object = 0i64;
LODWORD(Tag) = 1951883855;
v7 = ObReferenceObjectByHandleWithTag(Handle, 0x100000ui64, 0i64, AccessMode, Tag, &Object, 0i64);
if( v7 < 0 )
return v7;
v8 = (char *)Object;
WaitObject = ObpGetWaitObject((_OBJECT_HEADER *)((char *)Object - 48));
if( !*(&WheapDeferredInternalLogsEventLock + 56)
|| ObTypeIndexTable[(unsigned __int8)ObHeaderCookie ^ (unsigned __int8)*(v8 - 24) ^ (unsigned __int64)(unsigned __int8)((unsigned __int16)((_WORD)v8 - 48) >> 8)] != *(&WheapDeferredInternalLogsEventLock + 56) )
{
v7 = KeWaitForSingleObject((UINT64)WaitObject, 6, WaitMode, Alertable, (INT64)Timeout);
ObfDereferenceObjectWithTag(v8, 0x7457624Fui64);
return v7;
}
ObfDereferenceObjectWithTag(v8, 0x7457624Fui64);
return -1073741788;
}Referenced by:
NtWaitForSingleObject