WdfFdoRetrieveNextStaticChild 函数 (wdffdo.h)
[仅适用于 KMDF]
WdfFdoRetrieveNextStaticChild 方法检索子设备列表中下一个框架设备对象的句柄。
语法
WDFDEVICE WdfFdoRetrieveNextStaticChild(
[in] WDFDEVICE Fdo,
[in, optional] WDFDEVICE PreviousChild,
[in] ULONG Flags
);
参数
[in] Fdo
表示父设备的框架设备对象的句柄。
[in, optional] PreviousChild
框架设备对象的句柄,该对象表示先前调用 WdfFdoRetrieveNextStaticChild 返回的子设备。 对于对 WdfFdoRetrieveNextStaticChild 的首次调用,此值必须为 NULL。
[in] Flags
一个WDF_RETRIEVE_CHILD_FLAGS类型的枚举器值,该值标识方法应检索的子设备的类型。 此参数不能为零。
返回值
如果操作成功,该方法将返回框架设备对象的句柄。 否则返回 NULL。
如果驱动程序提供无效的对象句柄,则会发生系统 bug 检查。
注解
使用静态总线枚举的总线驱动程序可以调用 WdfFdoRetrieveNextStaticChild。
若要检索子设备列表中的项,驱动程序应:
- 调用 WdfFdoLockStaticChildListForIteration 以锁定子列表。
- 重复调用 WdfFdoRetrieveNextStaticChild 以获取列表中的项,一次一个,直到方法返回 NULL。
- 调用 WdfFdoUnlockStaticChildListFromIteration 以解锁子列表。
示例
下面的代码示例搜索静态子列表,直到找到序列号与特定值匹配的子设备。 有关 WdfFdoRetrieveNextStaticChild 的其他示例用法,请参阅 Toaster 示例总线驱动程序。
PPDO_DEVICE_DATA pdoData;
WDFDEVICE hChild;
NTSTATUS status = STATUS_INVALID_PARAMETER;
WdfFdoLockStaticChildListForIteration(Device);
while ((hChild = WdfFdoRetrieveNextStaticChild(
Device,
hChild,
WdfRetrieveAddedChildren
)) != NULL) {
//
// Obtain device object context data and check the
// stored serial number.
//
pdoData = PdoGetData(hChild);
if (SerialNo == pdoData->SerialNo) {
status = STATUS_SUCCESS;
WdfPdoRequestEject(hChild);
break;
}
}
WdfFdoUnlockStaticChildListFromIteration(Device);
要求
要求 | 值 |
---|---|
目标平台 | 通用 |
最低 KMDF 版本 | 1.0 |
标头 | wdffdo.h (包括 Wdf.h) |
Library | Wdf01000.sys (请参阅框架库版本控制.) |
IRQL | <= DISPATCH_LEVEL |
DDI 符合性规则 | DriverCreate (kmdf) 、 KmdfIrql (kmdf) 、 KmdfIrql2 (kmdf) 、 KmdfIrqlExplicit (kmdf) 、 PdoDeviceInitAPI (kmdf) |