[僅適用於 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的其他範例用法,請參閱 烤箱 範例總線驅動程式。
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) |