WdfPdoRequestEject function (wdfpdo.h)
[Applies to KMDF only]
The WdfPdoRequestEject method informs the framework that a specified device is about to be ejected from its docking station.
Syntax
void WdfPdoRequestEject(
[in] WDFDEVICE Device
);
Parameters
[in] Device
A handle to a framework device object that represents the device's physical device object (PDO).
Return value
None
Remarks
A bug check occurs if the driver supplies an invalid object handle.
A bus driver can call WdfPdoRequestEject or WdfChildListRequestChildEject to report that the driver has detected an attempt to eject one of its enumerated child devices from the device's docking station. For example, the driver might detect that a user has pushed an eject button.
If the framework device object for the device's PDO is available, the driver can call WdfPdoRequestEject. If the driver is using dynamic bus enumeration and if the device's identification description is available, the driver can call WdfChildListRequestChildEject.
For more information about WdfPdoRequestEject and WdfChildListRequestChildEject, see Supporting Ejectable Devices.
Examples
The following code example searches a list of child devices to find one that matches a specified serial number. When the example finds the correct child, it calls WdfPdoRequestEject to indicate that the child is being ejected. This example was taken from the Toaster sample bus driver and simplified.
WDFDEVICE hChild = NULL;
NTSTATUS status = STATUS_INVALID_PARAMETER;
PPDO_DEVICE_DATA pdoData;
WdfFdoLockStaticChildListForIteration(Device);
while ((hChild = WdfFdoRetrieveNextStaticChild(
Device,
hChild,
WdfRetrieveAddedChildren
)) != NULL) {
//
// Obtain device object context space, and check the
// stored serial number.
//
pdoData = PdoGetData(hChild);
if (SerialNo == pdoData->SerialNo) {
status = STATUS_SUCCESS;
WdfPdoRequestEject(hChild);
}
}
WdfFdoUnlockStaticChildListFromIteration(Device);
Requirements
Requirement | Value |
---|---|
Target Platform | Universal |
Minimum KMDF version | 1.0 |
Header | wdfpdo.h (include Wdf.h) |
Library | Wdf01000.sys (see Framework Library Versioning.) |
IRQL | <= DISPATCH_LEVEL |
DDI compliance rules | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |