次の方法で共有


WdfIoTargetClose 関数 (wdfiotarget.h)

[KMDF と UMDF に適用]

WdfIoTargetClose メソッドは、指定されたリモート I/O ターゲットを閉じます。

構文

void WdfIoTargetClose(
  [in] WDFIOTARGET IoTarget
);

パラメーター

[in] IoTarget

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

戻り値

なし

解説

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

ドライバーは WdfIoTargetClose を呼び出した後、 WdfIoTargetOpen を呼び出してリモート I/O ターゲットを再度開くことができます。

EvtIoTargetRemoveComplete コールバック関数を提供するドライバーは、そのコールバック関数内から WdfIoTargetClose を呼び出す必要があります。

WdfIoTargetClose メソッドが返される前に、フレームワークはターゲット キューのすべての I/O 要求を取り消します。

ドライバーがリモート I/O ターゲットの使用を完了し、ターゲットをもう一度使用せず、ターゲットにまだ保留中の子要求オブジェクトがない場合、ドライバーは WdfIoTargetClose を最初に呼び出さずに WdfObjectDelete を呼び出すことができます。 WdfObjectDelete を呼び出すと、リモート I/O ターゲットが閉じられ、ターゲット キューのすべての I/O 要求が取り消され、I/O ターゲット オブジェクトが削除されます。 (リモート I/O ターゲットの親オブジェクトがデバイス オブジェクトである場合、フレームワークはターゲットを閉じ、親オブジェクトを削除するときにターゲット オブジェクトを削除します。ターゲットにまだ保留中の子要求オブジェクトがある場合、ドライバーは WdfObjectDelete を安全に呼び出す前に WdfIoTargetClose を呼び出す必要があります。

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

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

次のコード例は、指定した I/O ターゲットをドライバーの I/O ターゲットのコレクションから削除し、I/O ターゲットを閉じる EvtIoTargetRemoveComplete コールバック関数です。

VOID
MyEvtIoTargetRemoveComplete(
    WDFIOTARGET IoTarget
)
{
    //
    // Get device information from the I/O target object's
    // context space.
    //
    targetDeviceInfo = GetTargetDeviceInfo(IoTarget);
    deviceExtension = targetDeviceInfo->DeviceExtension;

    //
    // Remove the target device from the collection.
    //
    WdfWaitLockAcquire(
                       deviceExtension->TargetDeviceCollectionLock,
                       NULL
                       );

    WdfCollectionRemove(
                        deviceExtension->TargetDeviceCollection,
                        IoTarget
                        );

    WdfWaitLockRelease(deviceExtension->TargetDeviceCollectionLock);

    //
    // Close the target.
    //
    WdfIoTargetClose(IoTarget);
}

要件

要件
対象プラットフォーム ユニバーサル
最小 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)

こちらもご覧ください

EvtIoTargetRemoveComplete

WdfIoTargetCreate