Using Events in Display Drivers

GDI provides support for events, a type of kernel dispatcher object that can be used to synchronize two threads running below DISPATCH_LEVEL. A display driver can use events to synchronize access to the video hardware:

  • By the display driver and the video miniport driver

  • By the display or video miniport driver and another component, such as an OpenGL driver or a program extension (such as the Display program in Control Panel).

The following table lists the GDI event-related functions.

Function Description

EngClearEvent

Sets a given event object to the nonsignaled state.

EngCreateEvent

Creates a synchronization event object.

EngDeleteEvent

Deletes the specified event object.

EngMapEvent

Maps a user-mode event object to kernel mode.

EngReadStateEvent

Returns the current state of a given event object: signaled or nonsignaled.

EngSetEvent

Sets an event object to the signaled state if it was not already in that state, and returns the event object's previous state.

EngUnmapEvent

Cleans up the kernel-mode resources allocated for a mapped user-mode event.

EngWaitForSingleObject

Puts the current thread into a wait state until the given dispatch object is set to the signaled state, or (optionally) until the wait times out.

The video port driver also provides support for events to video miniport drivers. See Events in Video Miniport Drivers (Windows 2000 Model) for more information.

For a broader perspective on events, see Event Objects.