[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型指定された列挙子値。 このパラメーターを 0 にすることはできません。
戻り値
操作が成功した場合、メソッドはフレームワーク デバイス オブジェクトにハンドルを返します。 それ以外の場合は、null 返します。
ドライバーが無効なオブジェクト ハンドルを提供すると、システム バグ チェックが発生します。
注釈
静的バス列挙を使用するバス ドライバーは、WdfFdoRetrieveNextStaticChild 呼び出すことができます。
子デバイスの一覧の項目を取得するには、ドライバーは次の手順を実行する必要があります。
- WdfFdoLockStaticChildListForIteration 呼び出して、子リストをロックします。
- WdfFdoRetrieveNextStaticChild を繰り返し呼び出して、メソッドが NULL 返すまで、リスト内の項目を一度に 1 つずつ取得します。
- 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) |