The WdfDeviceInitSetRemoveLockOptions method causes the framework to acquire a remove lock before delivering an IRP of any type to the driver.
void WdfDeviceInitSetRemoveLockOptions( [in] PWDFDEVICE_INIT DeviceInit, [in] PWDF_REMOVE_LOCK_OPTIONS Options );
- DeviceInit [in]
A caller-supplied pointer to a WDFDEVICE_INIT structure.
- Options [in]
A pointer to a WDF_REMOVE_LOCK_OPTIONS structure.
This method does not return a value.
By default, the framework acquires a remove lock before it delivers IRPs of the following major types to the driver:
Starting in KMDF 1.11, the driver can optionally call WdfDeviceInitSetRemoveLockOptions to cause the framework to acquire a remove lock before delivering all IRP types, not just those listed above.
If your driver has kernel-mode clients that send I/O unsynchronized with the PnP state of your device, you may experience crashes due to I/O IRPs arriving after the framework device object has been removed. In this case, you can call WdfDeviceInitSetRemoveLockOptions to prevent the device object from being removed until I/O has completed.
Note WdfDeviceInitSetRemoveLockOptions is not supported on control objects.
After a driver calls WdfDeviceInitSetRemoveLockOptions, the setting remains in effect for the lifetime of the framework device object.
For more information about remove locks, see Using Remove Locks.
This code example initializes a WDF_REMOVE_LOCK_OPTIONS structure and calls WdfDeviceInitSetRemoveLockOptions.
WDF_REMOVE_LOCK_OPTIONS RemoveLockOptions; WDF_REMOVE_LOCK_OPTIONS_INIT( &RemoveLockOptions, WDF_REMOVE_LOCK_OPTION_ACQUIRE_FOR_IO ); WdfDeviceInitSetRemoveLockOptions( DeviceInit, &RemoveLockOptions );
|Available in version 1.11 and later versions of KMDF (see KMDF Version History).|
DDI compliance rules
Build date: 4/23/2013