NtClearEvent
NTSTATUS __stdcall NtClearEvent(PVOID EventHandle){
KPROCESSOR_MODE v2;
NTSTATUS v3;
UINT64 v4;
UINT8 v5;
UINT8 v6;
struct _DMA_ADAPTER *v7;
NTSTATUS v8;
NTSTATUS v10;
IRP *Object;
PVOID VirtualAddress;
PVOID v13;
VirtualAddress = 0i64;
v2 = *((_BYTE *)KeGetCurrentThread() + 562);
v3 = ObReferenceObjectByHandle(EventHandle, 2u, (POBJECT_TYPE)ExEventObjectType, v2, &VirtualAddress, 0i64);
v7 = (struct _DMA_ADAPTER *)VirtualAddress;
v8 = v3;
if( v3 < 0 )
{
if( v3 == -1073741788 )
{
if( ExCrossVmEventObjectType )
{
v13 = 0i64;
v10 = ObReferenceObjectByHandle(EventHandle, 2u, ExCrossVmEventObjectType, v2, &v13, 0i64);
v7 = (struct _DMA_ADAPTER *)v13;
v8 = v10;
if( v10 >= 0 )
v8 = ExpResetCrossVmEvent((INT64)v13, 0i64);
}
}
}
else
{
KeResetEvent(VirtualAddress, v4, v5, v6, Object);
}
if( v7 )
HalPutDmaAdapter(v7);
return v8;
}Referenced by:
No references.