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。
若要擷取子裝置清單中的專案,驅動程序應該:
- 呼叫 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);
規格需求
需求 | 值 |
---|---|
目標平台 | Universal |
最低 KMDF 版本 | 1.0 |
標頭 | wdffdo.h (包含 Wdf.h) |
程式庫 | Wdf01000.sys (請參閱 Framework Library Versioning.) |
IRQL | <= DISPATCH_LEVEL |
DDI 合規性規則 | DriverCreate (kmdf) 、 KmdfIrql (kmdf) 、 KmdfIrql2 (kmdf) 、KmdfIrqlExplicit (kmdf) 、 PdoDeviceInitAPI (kmdf) |