[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) |