SmCreateEvent
NTSTATUS __stdcall SmCreateEvent(_KEVENT **EventOut){
PVOID *v1;
PVOID *v2;
int Event;
NTSTATUS v4;
_ADAPTER_OBJECT *v5;
_OBJECT_ATTRIBUTES ObjectAttributes;
void *EventHandle;
PVOID Object;
memset(&ObjectAttributes.Length + 1, 0, 20);
memset(&ObjectAttributes.Attributes + 1, 0, 20);
EventHandle = 0i64;
v2 = v1;
ObjectAttributes.Length = 48;
ObjectAttributes.Attributes = 512;
Event = ZwCreateEvent((UINT64)&EventHandle, 0x1F0003ui64, (INT64)&ObjectAttributes, 1ui64, 0);
if( Event >= 0 )
{
Object = 0i64;
v4 = ObReferenceObjectByHandle(EventHandle, 0x1F0003ui64, (_OBJECT_TYPE *)ExEventObjectType, 0, &Object, 0i64);
v5 = (_ADAPTER_OBJECT *)Object;
Event = v4;
if( v4 >= 0 )
{
*v2 = Object;
v5 = 0i64;
Event = 0;
}
if( v5 )
HalPutDmaAdapter(v5);
}
if( EventHandle )
ZwClose((_HANDLE)EventHandle);
return Event;
}Referenced by:
SmRegistrationCtxStart