次の方法で共有


WdfIoTargetCloseForQueryRemove 関数 (wdfiotarget.h)

[KMDF と UMDF に適用]

WdfIoTargetCloseForQueryRemove メソッドは、ターゲット デバイスが間もなく削除される可能性があるため、指定されたリモート I/O ターゲットを一時的に閉じます。

構文

void WdfIoTargetCloseForQueryRemove(
  [in] WDFIOTARGET IoTarget
);

パラメーター

[in] IoTarget

WdfIoTargetCreate の以前の呼び出しから取得されたリモート I/O ターゲット オブジェクトへのハンドル。

戻り値

なし

解説

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

EvtIoTargetQueryRemove コールバック関数を提供するドライバーは、ターゲット デバイスを安全に削除できるとドライバーが判断した場合、そのコールバック関数内から WdfIoTargetCloseForQueryRemove を呼び出す必要があります。

WdfIoTargetCloseForQueryRemove の詳細については、「一般的な I/O ターゲットの状態の制御」を参照してください。

I/O ターゲットの詳細については、「I /O ターゲットの使用」を参照してください。

次のコード例は、トースター サンプル ドライバーからの EvtIoTargetQueryRemove コールバック関数です。 関数はタイマーを停止し、以前に送信された作業項目が確実に処理されたことを確認し、 WdfIoTargetCloseForQueryRemove を呼び出します。

NTSTATUS
ToastMon_EvtIoTargetQueryRemove(
    WDFIOTARGET IoTarget
)
{
    PTARGET_DEVICE_INFO  targetDeviceInfo = NULL;

    //
    // Get I/O target object's context space.
    //
    targetDeviceInfo = GetTargetDeviceInfo(IoTarget);

    //
    // Stop the timer and wait for any outstanding work items
    // to finish before closing the target.
    //
    WdfTimerStop(targetDeviceInfo->TimerForPostingRequests, TRUE);
    WdfWorkItemFlush(targetDeviceInfo->WorkItemForPostingRequests);

    WdfIoTargetCloseForQueryRemove(IoTarget);

    return STATUS_SUCCESS;
}

要件

要件
対象プラットフォーム ユニバーサル
最小 KMDF バージョン 1.0
最小 UMDF バージョン 2.0
Header wdfiotarget.h (Wdf.h を含む)
Library Wdf01000.sys (KMDF);WUDFx02000.dll (UMDF)
IRQL PASSIVE_LEVEL
DDI コンプライアンス規則 DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

こちらもご覧ください

EvtIoTargetQueryRemove

WdfIoTargetCreate