[Applies to KMDF and UMDF]
A driver's EvtDeviceSurpriseRemoval event callback function performs any operations that are needed after a device has been unexpectedly removed from the system or after a driver reports that the device has failed.
A handle to a framework device object.
## Return Value
To register an EvtDeviceSurpriseRemoval callback function, a driver must call WdfDeviceInitSetPnpPowerEventCallbacks.
The framework does not synchronize the EvtDeviceSurpriseRemoval callback function with other PnP and power management callback functions. For information about how the framework synchronizes the execution of a driver's event callback functions, see Using Automatic Synchronization.
For more information about when the framework calls this callback function, and for more information about synchronization issues, see A User Unplugs a Device.
To define an EvtDeviceSurpriseRemoval callback function, you must first provide a function declaration that identifies the type of callback function you’re defining. Windows provides a set of callback function types for drivers. Declaring a function using the callback function types helps Code Analysis for Drivers, Static Driver Verifier (SDV), and other verification tools find errors, and it’s a requirement for writing drivers for the Windows operating system.
For example, to define an EvtDeviceSurpriseRemoval callback function that is named MyDeviceSurpriseRemoval, use the EVT_WDF_DEVICE_SURPRISE_REMOVAL type as shown in this code example:
Then, implement your callback function as follows:
The EVT_WDF_DEVICE_SURPRISE_REMOVAL function type is defined in the Wdfdevice.h header file. To more accurately identify errors when you run the code analysis tools, be sure to add the Use_decl_annotations annotation to your function definition. The Use_decl_annotations annotation ensures that the annotations that are applied to the EVT_WDF_DEVICE_SURPRISE_REMOVAL function type in the header file are used. For more information about the requirements for function declarations, see Declaring Functions by Using Function Role Types for KMDF Drivers. For information about Use_decl_annotations, see Annotating Function Behavior.
|Windows Driver kit version|
|Minimum KMDF version||1.0|
|Minimum UMDF version||2.0|
|Header||wdfdevice.h (include Wdf.h)|
|DDI compliance rules|