WdfFdoAddStaticChild 関数 (wdffdo.h)
[KMDF にのみ適用]
WdfFdoAddStaticChild メソッドは、静的列挙体によって識別された子デバイスの関数ドライバーの一覧に指定されたデバイスを追加します。
構文
NTSTATUS WdfFdoAddStaticChild(
[in] WDFDEVICE Fdo,
[in] WDFDEVICE Child
);
パラメーター
[in] Fdo
親デバイスを表すフレームワーク デバイス オブジェクトへのハンドル。
[in] Child
子デバイスを表すフレームワーク デバイス オブジェクトへのハンドル。
戻り値
操作が成功した場合、メソッドは STATUS_SUCCESS を返します。 その他の戻り値は次のとおりです。
リターン コード | 説明 |
---|---|
|
Fdo は、関数ドライバーのデバイス オブジェクトへのハンドルではありません。 |
メソッドは、他の NTSTATUS 値も返す場合があります。
ドライバーが無効なオブジェクト ハンドルを提供すると、システム バグ チェックが発生します。
注釈
静的バス列挙を使用するドライバーは 、WdfFdoAddStaticChild を呼び出すことができます。 静的な子リストの詳細については、「 バス上のデバイスの列挙」を参照してください。
WdfFdoAddStaticChild が FALSE として評価NT_SUCCESS NTSTATUS 値を返す場合、ドライバーは WdfObjectDelete を呼び出して、子デバイスを表すフレームワーク デバイス オブジェクトを削除する必要があります。 WdfFdoAddStaticChild がSTATUS_SUCCESSを返した後、ドライバーはフレームワーク デバイス オブジェクトを削除しないでください。
例
次のコード例では、新しい子デバイスを表すフレームワーク デバイス オブジェクトを作成し、子デバイスを親デバイスの子リストに追加します。 完全なコード例については、 KbFiltr サンプル ドライバーを参照してください。
NTSTATUS status;
PWDFDEVICE_INIT pDeviceInit = NULL;
WDFDEVICE hChild = NULL;
WDF_OBJECT_ATTRIBUTES pdoAttributes;
pDeviceInit = WdfPdoInitAllocate(Device);
if (pDeviceInit == NULL) {
status = STATUS_INSUFFICIENT_RESOURCES;
goto Cleanup;
}
...
status = WdfDeviceCreate(
&pDeviceInit,
&pdoAttributes,
&hChild
);
if (!NT_SUCCESS(status)) {
WdfDeviceInitFree(pDeviceInit);
pDeviceInit = NULL;
goto Cleanup;
}
...
status = WdfFdoAddStaticChild(
Device,
hChild
);
if (!NT_SUCCESS(status)) {
goto Cleanup;
}
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
最小 KMDF バージョン | 1.0 |
Header | wdffdo.h (Wdf.h を含む) |
Library | Wdf01000.sys (「Framework ライブラリのバージョン管理」を参照)。 |
IRQL | <= DISPATCH_LEVEL |
DDI コンプライアンス規則 | AddPdoToStaticChildList(kmdf), DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |