次の方法で共有


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 を呼び出してはなりません。

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

WdfDeviceCreate の呼び出しの詳細については、「Framework デバイス オブジェクトの作成」を参照してください。

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

NTSTATUS  status;

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

要件

要件
対象プラットフォーム ユニバーサル
最小 KMDF バージョン 1.0
Header wdfdevice.h (Wdf.h を含む)
Library Wdf01000.sys (「Framework ライブラリのバージョン管理」を参照)。
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