WdfPdoRequestEject 函数 (wdfpdo.h)
[仅适用于 KMDF]
WdfPdoRequestEject 方法通知框架指定的设备即将从其扩展坞中弹出。
语法
void WdfPdoRequestEject(
[in] WDFDEVICE Device
);
参数
[in] Device
表示设备的物理设备对象的框架设备对象的句柄, (PDO) 。
返回值
无
备注
如果驱动程序提供无效的对象句柄,则会发生 bug 检查。
总线驱动程序可以调用 WdfPdoRequestEject 或 WdfChildListRequestChildEject 来报告驱动程序检测到尝试从设备的扩展坞中弹出其枚举的子设备之一。 例如,驱动程序可能会检测到用户按下了弹出按钮。
如果设备的 PDO 的框架设备对象可用,驱动程序可以调用 WdfPdoRequestEject。 如果驱动程序正在使用动态总线枚举,并且设备的标识说明可用,则驱动程序可以调用 WdfChildListRequestChildEject。
有关 WdfPdoRequestEject 和 WdfChildListRequestChildEject 的详细信息,请参阅 支持可弹出设备。
示例
下面的代码示例搜索子设备列表,以查找与指定序列号匹配的设备。 当示例找到正确的子级时,它会调用 WdfPdoRequestEject 来指示正在弹出子级。 此示例取自 Toaster 示例总线驱动程序并进行了简化。
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);
要求
要求 | 值 |
---|---|
目标平台 | 通用 |
最低 KMDF 版本 | 1.0 |
标头 | wdfpdo.h (包括 Wdf.h) |
Library | Wdf01000.sys (请参阅框架库 Versioning.) |
IRQL | <= DISPATCH_LEVEL |
DDI 符合性规则 | DriverCreate (kmdf) 、 KmdfIrql (kmdf) 、 KmdfIrql2 (kmdf) 、 KmdfIrqlExplicit (kmdf) |