WdfFdoAddStaticChild 関数 (wdffdo.h)

[KMDF にのみ適用]

WdfFdoAddStaticChild メソッドは、静的列挙体によって識別された子デバイスの関数ドライバーの一覧に指定されたデバイスを追加します。

構文

NTSTATUS WdfFdoAddStaticChild(
  [in] WDFDEVICE Fdo,
  [in] WDFDEVICE Child
);

パラメーター

[in] Fdo

親デバイスを表すフレームワーク デバイス オブジェクトへのハンドル。

[in] Child

子デバイスを表すフレームワーク デバイス オブジェクトへのハンドル。

戻り値

操作が成功した場合、メソッドは STATUS_SUCCESS を返します。 その他の戻り値は次のとおりです。

リターン コード 説明
STATUS_INVALID_PARAMETER
Fdo は、関数ドライバーのデバイス オブジェクトへのハンドルではありません。
 

メソッドは、他の NTSTATUS 値も返す場合があります。

ドライバーが無効なオブジェクト ハンドルを提供すると、システム バグ チェックが発生します。

注釈

静的バス列挙を使用するドライバーは 、WdfFdoAddStaticChild を呼び出すことができます。 静的な子リストの詳細については、「 バス上のデバイスの列挙」を参照してください。

WdfFdoAddStaticChildFALSE として評価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)

こちらもご覧ください

WdfChildListAddOrUpdateChildDescriptionAsPresent

WdfDeviceCreate

WdfPdoInitAllocate