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

若要检索子设备列表中的项,驱动程序应:

  1. 调用 WdfFdoLockStaticChildListForIteration 以锁定子列表。
  2. 重复调用 WdfFdoRetrieveNextStaticChild 以获取列表中的项,一次一个,直到方法返回 NULL
  3. 调用 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)

另请参阅

WdfFdoLockStaticChildListForIteration

WdfFdoUnlockStaticChildListFromIteration