次の方法で共有


UMDF での一般 I/O ターゲットの状態の制御

フレームワークでは、一般 I/O ターゲットに対して次の状態が定義されています。

  • 開始
    I/O ターゲットは開いている (UMDF ドライバーが利用できる) 状態であり、ドライバーは I/O ターゲットに I/O 要求を送信できます。フレームワークは該当するドライバーに要求を送信します。

  • 停止
    I/O ターゲットは開いていますが、UMDF ドライバーは、IWDFIoRequest::Send メソッドの呼び出しで Flags パラメーターに WDF_REQUEST_SEND_OPTION_IGNORE_TARGET_STATE フラグを渡さないと I/O 要求を I/O ターゲットに送信できません。

    フレームワークは該当するドライバーへの要求の送信を停止します。

  • Query-Remove のために終了
    I/O ターゲットは、そのデバイスが間もなく削除されるため、一時的に閉じています。

  • 終了
    I/O ターゲットは閉じているため、開始または停止できません。

  • 削除済み
    I/O ターゲットのデバイスは削除されています。

 

WDF_IO_TARGET_STATE 列挙型は、これらの状態を表す値を定義します。

ローカル I/O ターゲットの状態

フレームワークは、自動的にローカル I/O ターゲットを開いて開始します。

必要に応じて、ドライバーは IWDFIoTargetStateManagement::Stop を呼び出してローカル I/O ターゲットを一時的に停止し、IWDFIoTargetStateManagement::Start を呼び出して再開することができます。たとえば、ドライバーが一時的なエラー条件を検出し、エラー条件が修正されてからローカル I/O ターゲットを再開する場合に、ドライバーはローカル I/O ターゲットを停止できます。

ローカル I/O ターゲットのデバイスが削除されると、フレームワークは自動的に I/O ターゲットを停止して閉じ、ターゲットのキューにあるすべての I/O 要求を取り消します。フレームワークは、デバイス オブジェクトのイベント コールバック関数を呼び出すことにより、デバイスが利用できなくなったことをドライバーに通知します。これらのコールバック関数の詳細については、「UMDF の PnP と電源管理のシナリオ」を参照してください。

ドライバーでローカル I/O ターゲットの現在の状態を取得するには、IWDFIoTargetStateManagement::GetState を呼び出します。

リモート I/O ターゲットの状態

ドライバーでリモート I/O ターゲットを開くには、IWDFRemoteTarget::OpenFileByName または IWDFRemoteTarget::OpenRemoteInterface を呼び出す必要があります。ドライバーがリモート I/O ターゲットを開くと、フレームワークは自動的に I/O ターゲットを開始します。

必要に応じて、ドライバーは IWDFRemoteTarget::Stop を呼び出してリモート I/O ターゲットを一時的に停止し、IWDFRemoteTarget::Start を呼び出して再開することができます。

リモート I/O ターゲットのデバイスが削除されると、フレームワークは自動的に I/O ターゲットを停止して閉じ、ドライバーが次のイベント コールバック関数を登録していない限り、ターゲットのキューにあるすべての I/O 要求を取り消します。

 

ドライバーでリモート I/O ターゲットの現在の状態を取得するには、IWDFRemoteTarget::GetState を呼び出します。