次の方法で共有


WdfDriverCreate 関数 (wdfdriver.h)

[KMDF と UMDF に適用]

WdfDriverCreate メソッドは、呼び出し元のドライバーのフレームワーク ドライバー オブジェクトを作成します。

構文

NTSTATUS WdfDriverCreate(
  [in]            PDRIVER_OBJECT         DriverObject,
  [in]            PCUNICODE_STRING       RegistryPath,
  [in, optional]  PWDF_OBJECT_ATTRIBUTES DriverAttributes,
  [in]            PWDF_DRIVER_CONFIG     DriverConfig,
  [out, optional] WDFDRIVER              *Driver
);

パラメーター

[in] DriverObject

Windows ドライバー モデル (WDM) ドライバー オブジェクトを表す DRIVER_OBJECT 構造体へのポインター。 ドライバーは、DriverEntry ルーチンへの入力としてこのポインターを受け取ります。

[in] RegistryPath

ドライバーが DriverEntry ルーチンへの入力として受け取ったレジストリ パス文字列を含む UNICODE_STRING 構造体へのポインター。

[in, optional] DriverAttributes

呼び出し元によって割り当てられた WDF_OBJECT_ATTRIBUTES 構造体へのポインター。 (構造体の ParentObject メンバーは NULL する必要があります)。このパラメーターは省略可能であり、WDF_NO_OBJECT_ATTRIBUTESできます。

[in] DriverConfig

呼び出し元によって割り当てられた WDF_DRIVER_CONFIG 構造体へのポインター。

[out, optional] Driver

新しいフレームワーク ドライバー オブジェクトへのハンドルを受け取る場所へのポインター。 このパラメーターは省略可能であり、WDF_NO_HANDLEできます。

戻り値

WdfDriverCreate は、操作が成功した場合にSTATUS_SUCCESSを返します。 それ以外の場合、このメソッドは次のいずれかの値を返す可能性があります。

リターン コード 説明
STATUS_DRIVER_INTERNAL_ERROR
WdfDriverCreate 呼び出されたドライバー 複数回です。
STATUS_INVALID_PARAMETER
非プラグ アンド プレイ (PnP) ドライバーEvtDriverDeviceAdd コールバック関数を指定しました。
 

戻り値の詳細については、「Framework オブジェクト作成エラーの」を参照してください。

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

DriverObjectRegistryPath、または DriverConfig パラメーターが NULL 場合、システム バグ チェックが発生します。

注釈

Kernel-Mode Driver Framework を使用するドライバーは、他のフレームワーク ルーチン 呼び出す前に、DriverEntry ルーチン内から WdfDriverCreate を呼び出す必要があります。 DriverEntryの詳細については、「DriverEntry for Framework ベースのドライバー」を参照してください。

ドライバーが WdfDriverCreate 呼び出す前に、ドライバーは WDF_DRIVER_CONFIG 構造体を初期化するために WDF_DRIVER_CONFIG_INIT を呼び出す必要があります。

フレームワーク ドライバー オブジェクトは、フレームワーク オブジェクトのドライバーツリーの最上位であるため、親オブジェクトがありません。

ドライバーが EvtCleanupCallback 提供するか、ドライバー オブジェクトの EvtDestroyCallback コールバック関数を する場合、フレームワークは IRQL = PASSIVE_LEVEL でこれらのコールバック関数を呼び出します。

例示

次のコード例は、WDF_DRIVER_CONFIG構造体を初期化し、フレームワーク ドライバー オブジェクトを作成する DriverEntry ルーチンです。

NTSTATUS
DriverEntry(
    IN PDRIVER_OBJECT  DriverObject,
    IN PUNICODE_STRING  RegistryPath
    )
{
    WDF_DRIVER_CONFIG  config;
    NTSTATUS  status = STATUS_SUCCESS;

    WDF_DRIVER_CONFIG_INIT(
                           &config,
                           MyEvtDeviceAdd
                           );
    config.EvtDriverUnload = MyEvtDriverUnload;
    status = WdfDriverCreate(
                             DriverObject,
                             RegistryPath,
                             WDF_NO_OBJECT_ATTRIBUTES,
                              &config,
                             WDF_NO_HANDLE
                             );
    if (!NT_SUCCESS(status)) {
        TraceEvents(
                    TRACE_LEVEL_ERROR,
                    DBG_PNP,
                    "WdfDriverCreate failed with status %!STATUS!",
                    status
                    );
    }
    return status;
}

必要条件

要件 価値
ターゲット プラットフォーム 普遍
最小 KMDF バージョン 1.0
UMDF の最小バージョン する 2.0
ヘッダー wdfdriver.h (Wdf.h を含む)
図書館 Wdf01000.sys (KMDF);WUDFx02000.dll (UMDF)
IRQL PASSIVE_LEVEL
DDI コンプライアンス規則 する ChangeQueueState(kmdf), DriverAttributeChanged(kmdf), DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), ミニポートOnlyWdmDevice(kmdf)

こちらもご覧ください

DRIVER_OBJECT

DriverEntry

EvtDriverDeviceAdd

UNICODE_STRING

WDF_DRIVER_CONFIG

WDF_DRIVER_CONFIG_INIT

WDF_OBJECT_ATTRIBUTES