PnP Notification Overview

The PnP manager provides a mechanism for drivers and applications to be notified when certain events occur on a specific device or on the system in general. A driver can register for notification of the following categories of events:

EventCategoryDeviceInterfaceChange

When a driver registers for this category of events on a device interface, the PnP manager notifies the driver of the following events:

GUID_DEVICE_INTERFACE_ARRIVAL

Indicates that a device interface of the specified class has been enabled. For example, a user added a new disk to the machine and the volume manager enabled a new volume (a device interface of the class "volume").

GUID_DEVICE_INTERFACE_REMOVAL

Indicates that a device interface of the specified class has been disabled.

When a driver registers for this category of events on a device, the PnP manager notifies the driver when the following events occur on the device:

GUID_TARGET_DEVICE_QUERY_REMOVE

Indicates that the PnP manager is about to remove the drivers for the device. Several actions can cause this event, including: a user has requested to remove the specified device from the machine or a user has issued an update-driver request for the device. This notification requests the drivers for the device to either approve or veto the impending remove operation.

GUID_TARGET_DEVICE_REMOVE_COMPLETE

Indicates that the specified device has been removed from the machine or that a user is changing the driver(s) for the device.

GUID_TARGET_DEVICE_REMOVE_CANCELLED

Indicates that an impending remove operation on the specified device has been canceled.

GUID_XXX (custom events)

Indicates that a custom event has occurred on the specified device.

A driver writer can define a custom event for a device. When the driver (or another related component) notifies the PnP manager that the custom event has occurred, the PnP manager notifies any components that registered for target device change notifications on the device.

Unlike registering for device interface changes, which can be considered a "passive" interest in the interface, registering for target device changes indicates an "active" interest in a device.

EventCategoryHardwareProfileChange

This category includes the following events:

GUID_HWPROFILE_QUERY_CHANGE

Indicates that a user has requested to change the hardware profile of the machine. The PnP manager uses this notification to ask registered components whether it can change the hardware profile without disrupting system operation. Registered components typically succeed these query requests.

GUID_HWPROFILE_CHANGE_COMPLETE

Indicates that the hardware profile of the machine has changed. If a driver maintains profile-specific settings, such a driver should refresh those settings after a hardware profile change.

GUID_HWPROFILE_CHANGE_CANCELLED

Indicates that an impending hardware profile change has been canceled.