Processing System Broadcasts from a VxD

Virtual device drivers can send and receive system broadcast messages under Windows 95. The notification services are provided by the shell VxD. To receive system broadcast messages, VxDs must call the SHELL_HookSystemBroadcast function.

Between the sending of Sys_Critial_Init and when a VxD receives the WM_STARTSESSION notification, application time events are not processed. Also, during this time, broadcasts are sent only to VxDs (since other Windows system components are not loaded). This rule also applies to the time between a successful WM_ENDSESSION notification and Sys_Critical_Exit. During these phases of system operations, VxDs must send notifications only during times when other VxDs can safely respond to them.

During all other times, SHELL_BroadcastSystemMessage must only be called at application time.

WM_STARTSESSION


WM_STARTSESSION
 reserved = wParam // undefined
 reserved = lParam // undefined

Informs VxDs that the Windows user interface component is now active and that the SHELL_CallAtAppyTime services will now work.

Special Notifications for VxDs

VxDs receive WM_QUERYENDSESSION and WM_ENDSESSION messages when the Windows user interface component is shut down. These notifications have the same purpose as the WM_ENDSESSION message received by Windows applications. VxDs can refuse to allow Windows to shut down during the WM_QUERYENDSESSION broadcast. For more details on the wParam values for these broadcasts, refer to the Windows software development kit (SDK).

VxDs may also receive WM_STARTSESSION, a special notification that is not sent to Windows applications or drivers.