NtCreateEvent
NTSTATUS __stdcall NtCreateEvent(
PVOID *EventHandle,
UINT64 DesiredAccess,
_OBJECT_ATTRIBUTES *ObjectAttributes,
_EVENT_TYPE EventType,
UINT8 InitialState){
unsigned int v6;
PVOID *v7;
char v8;
NTSTATUS result;
__int64 Flags;
UINT64 Flagsa;
PRKEVENT Event;
PVOID Handle;
v6 = DesiredAccess;
v7 = EventHandle;
Event = 0i64;
Handle = 0i64;
v8 = *((_BYTE *)KeGetCurrentThread() + 562);
if( v8 )
{
if( (unsigned __int64)EventHandle >= 0x7FFFFFFF0000i64 )
EventHandle = (PVOID *)0x7FFFFFFF0000i64;
*EventHandle = *EventHandle;
}
if( (unsigned int)EventType > SynchronizationEvent )
return -1073741811;
result = ObCreateObjectEx(v8, ExEventObjectType, (__int64)ObjectAttributes, v8, Flags, 24, 0, 0, &Event, 0i64);
if( result >= 0 )
{
KeInitializeEvent(Event, EventType, InitialState);
LODWORD(Flagsa) = 0;
result = ObInsertObjectEx(Event, 0i64, v6, 0i64, Flagsa, 0i64, &Handle);
LODWORD(Event) = result;
if( result >= 0 )
*v7 = Handle;
}
return result;
}Referenced by:
FsRtlInitializeSmssEvent
IoInitSystemPreDrivers
PfSnOpenVolumesForPrefetch
PfSnPopulateReadList
PfSnPrefetchMetadata
SepAdtOpenEtwReadyEvent