// Public nt-lite DDK event declarations. #pragma once #include #include #include #include #include typedef enum EVENT_TYPE { EventAutoReset, EventManualReset, } EVENT_TYPE; typedef struct EVENT { OBJECT Header; SPINLOCK Lock; EVENT_TYPE Type; uint32_t Signaled; LIST_ENTRY WaitList; LIST_ENTRY MultiWaitList; } EVENT; // Creates an event object. __declspec(dllexport) KSTATUS KeEventCreate(EVENT_TYPE type, uint32_t initialState, EVENT** out); // Signals an event. __declspec(dllexport) void KeSignalEvent(EVENT* event); // Clears an event. __declspec(dllexport) void KeClearEvent(EVENT* event); // Waits for an event. __declspec(dllexport) KSTATUS KeWaitForEvent(EVENT* event, uint8_t alertable); // Attempts to wait for an event without blocking. __declspec(dllexport) KSTATUS KeTryWaitEvent(EVENT* event); // Waits for one of several events. __declspec(dllexport) KSTATUS KeWaitForMultipleEvents(EVENT** events, uint32_t count, uint8_t alertable, uint64_t timeoutMs, uint32_t* signaledIndexOut);