次の方法で共有


WdfDeviceInitFree 関数 (wdfdevice.h)

[KMDF にのみ適用]

WdfDeviceInitFree メソッドは、WDFDEVICE_INIT 構造体の割り当てを解除します。

構文

VOID WdfDeviceInitFree(
  [in] PWDFDEVICE_INIT DeviceInit
);

パラメーター

[in] DeviceInit

WDFDEVICE_INIT 構造体へのポインター。

戻り値

何一つ

備考

ドライバーが WdfPdoInitAllocate または WdfControlDeviceInitAllocateを する呼び出しからWDFDEVICE_INIT構造体を受け取り、その後、デバイス オブジェクト初期化メソッドを呼び出すか、WdfDeviceCreateするときにエラーが発生した場合、ドライバーは WdfDeviceInitFree 呼び出す必要があります。

ドライバーは、WdfDeviceCreate 正常に呼び出された後、WdfDeviceInitFree を呼び出してはなりません。

EvtDriverDeviceAdd コールバック関数への入力としてWDFDEVICE_INIT構造体を受け取った場合、ドライバーは WdfDeviceInitFree 呼び出す必要はありません。これは、フレームワークがコールバック関数が返された後に構造体を削除するためです。

WdfDeviceCreate 呼び出す方法の詳細については、「フレームワーク デバイス オブジェクトの作成」を参照してください。

次のコード例では、WdfPdoInitAssignRawDevice の呼び出しが失敗した場合に、WdfDeviceInitFree 呼び出します。

NTSTATUS  status;

status = WdfPdoInitAssignRawDevice(
                                   pDeviceInit,
                                   &GUID_DEVCLASS_KEYBOARD
                                   );
if (!NT_SUCCESS(status)) {
    WdfDeviceInitFree(pDeviceInit);
    pDeviceInit = NULL;
    return STATUS;
}

必要条件

要件 価値
ターゲット プラットフォーム 万国
最小 KMDF バージョン 1.0
ヘッダー wdfdevice.h (Wdf.h を含む)
ライブラリ Wdf01000.sys (フレームワーク ライブラリのバージョン管理を参照)。
IRQL <= DISPATCH_LEVEL
DDI コンプライアンス規則 する DoubleDeviceInitFree(kmdf), DriverCreate(kmdf), InitFreeDeviceCallback(kmdf), InitFreeDeviceCreate (kmdf), InitFreeDeviceCreateType2(kmdf), InitFreeDeviceCreateType4(kmdf), InitFreeNull() kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), PdoInitFreeDeviceCallback(kmdf), PdoInitFreeDeviceCreate(kmdf), PdoInitFreeDeviceCreateType2(kmdf), PdoInitFreeDeviceCreateType4(kmdf)

関連項目

WdfDeviceCreate