共用方式為


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

如果驅動程式提供無效的物件句柄,就會發生系統錯誤檢查。

備註

使用靜態總線列舉的總線驅動程式可以呼叫 WdfFdoRetrieveNextStaticChild

若要擷取子裝置清單中的專案,驅動程序應該:

  1. 呼叫 WdfFdoLockStaticChildListForIteration 來鎖定子清單。
  2. 重複呼叫 WdfFdoRetrieveNextStaticChild,以取得清單中的專案,一次一個,直到方法傳回 NULL為止。
  3. 呼叫 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)

另請參閱

WdfFdoLockStaticChildListForIteration

WdfFdoUnlockStaticChildListFromIteration