[仅适用于 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的其他示例用法,请参阅 烤箱 示例总线驱动程序。
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) |
图书馆 | Wdf01000.sys(请参阅框架库版本控制。 |
IRQL | <= DISPATCH_LEVEL |
DDI 符合性规则 | DriverCreate(kmdf),KmdfIrql(kmdf),KmdfIrql2(kmdf),KmdfIrqlExplicit(kmdf),PdoDeviceInitAPI(kmdf) |