次の方法で共有


IOCTL_STORAGE_EJECTION_CONTROL IOCTL (ntddstor.h)

メディアの削除を防ぐためにデバイスをロックします。 ドライバーがドライブの使用中にメディアが削除されないようにできる場合、ドライバーはメディアを取り出すメカニズムを無効または有効にして、ドライブをロックします。 呼び出し元は、この要求を送信するために、FILE_READ_ATTRIBUTESでデバイスを開く必要があります。

IOCTL_STORAGE_MEDIA_REMOVALとは異なり、ドライバーは呼び出し元による IOCTL_STORAGE_EJECTION_CONTROL 要求を追跡し、同じ呼び出し元からロック要求を受信していないロック解除要求を無視するため、他の呼び出し元がドライブのロックを解除できなくなります。

リムーバブル メディア デバイスのドライバー - この IOCTL をサポートするには、次の操作を行う必要があります。

  1. デバイス オブジェクト拡張機能で、呼び出し元によってタグ付けされたロック数を保持します。
  2. 物理デバイスごとのロック数を保持します。
  3. この IOCTL で呼び出された場合、メディアの削除を禁止するフラグが設定されている場合は、カウントをインクリメントします。フラグがクリアされ、ドライバーが同じ呼び出し元からロック要求を以前に受信した場合は、カウントを減らします。
  4. すべてのロックカウントがゼロでない限り、メディアを削除しないようにします。
通常の状況では、IOCTL_STORAGE_EJECTION_CONTROLを使用してデバイスをロックした呼び出し元は、Irp->AssociatedIrp.SystemBuffer FALSE のブール値設定してIOCTL_STORAGE_EJECTION_CONTROLをもう一度送信することで、デバイスのロックを解除します。 ただし、呼び出し元がデバイスのロックを正しく解除できない場合があります。

メディアの削除ロックが正しく解放されるように、クラス ドライバーは、IOCTL_STORAGE_EJECTION_CONTROLでメディアをロックする呼び出し元を追跡します。 呼び出し元がデバイスのロックを解除せずに終了した場合、クラス ドライバーはデバイスのロックを解除します。

メジャー コード

IRP_MJ_DEVICE_CONTROL

入力バッファー

Irp- >AssociatedIrp.SystemBuffer のバッファーにはブール値が含まれており、ドライバーがドライブ内のメディアをロックする必要があることを示す true

入力バッファーの長さ

ブール値の長さ。

出力バッファー

何一つ。

出力バッファーの長さ

何一つ。

状態ブロック

情報 フィールドは 0 に設定されます。 状態 フィールドはSTATUS_SUCCESSに設定されているか、場合によってはSTATUS_INVALID_DEVICE_REQUEST、STATUS_NO_MEDIA_IN_DEVICE、またはSTATUS_DEVICE_NOT_CONNECTEDに設定されます。

必要条件

要件 価値
ヘッダー ntddstor.h (Ntddstor.h を含む)

関連項目

IOCTL_STORAGE_EJECT_MEDIA