次の方法で共有


ユーザーがデバイスを取り外す (UMDF 1)

警告

UMDF 2 は UMDF の最新バージョンであり、UMDF 1 よりも優先されます。 すべての新しい UMDF ドライバーは、UMDF 2 を使用して作成する必要があります。 UMDF 1 には新機能が追加されておらず、Windows 10 の新しいバージョンでは UMDF 1 のサポートが制限されています。 ユニバーサル Windows ドライバーでは、UMDF 2 を使用する必要があります。

アーカイブされた UMDF 1 サンプルは「Windows 11, version 22H2 - May 2022 Driver Samples Update」にあります。

詳細については、「UMDF の概要」を参照してください。

システムの実行中、ユーザーは次の 2 つの方法のいずれかでデバイスを取り外すことができます。順序正しい取り外しとは、デバイスがこれから取り外されることをユーザーがシステムに通知するものです (たとえば、Unplug or Eject Hardware プログラムを使用)。突然の取り外しでは、ユーザーはシステムに通知せずにデバイスを取り外します。 バスが突然の取り外しをサポートしている場合 (USB など)、デバイスのドライバーは、デバイスが突然消失することに対応できる必要があります。

順序正しい取り外し
ユーザーは、システムの Unplug or Eject Hardware プログラムを使用するか、デバイス マネージャーを使用してデバイスを無効にするか、取り出し可能なデバイスの取り出しボタンを押すことによって、取り外しを要求します。 ドライバーが IPnpCallback::OnQueryRemove コールバック関数を提供しており、そのコールバック関数が取り外しを拒否しない限り、フレームワークはデバイスの取り外しまたは無効化を許可します。

次の図は、電源切断時と取り外し時の一連の UMDF コールバックを示しています。 この一連の手順は、図の最上部で動作電力状態 (D0) にあるデバイスから始まります。

Flowchart that shows device power-down and orderly removal sequence for a UMDF driver.

突然の取り外し
このシナリオでは、ユーザーが予期せずデバイスを取り外します。 一連の突然の取り外し手順では、UMDF は IPnpCallback::OnSurpriseRemoval コールバックを呼び出して、デバイスが予期せず取り外されたことをドライバーに通知します。 このコールバックは、一連の取り外し手順の中で他のコールバックと共に特定の順序で実行されるとは限りません。

一般にドライバーは、取り外しパスに含まれるハードウェアにアクセスしないようにする必要があります。 ハードウェアへのアクセスの試行が無限に待機すると、リフレクタはタイムアウトになります。 次の図は、UMDF ドライバーの一連の突然の取り外し手順を示しています。

Flowchart that shows surprise-removal sequence for a UMDF driver.