次の方法で共有


IOCTL_STORAGE_EJECTION_CONTROL IOCTL (ntddstor.h)

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

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

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

  1. デバイス オブジェクト拡張機能で、呼び出し元によってタグ付けされたロック数を保持します。
  2. 物理デバイスあたりのロック数を保持します。
  3. この IOCTL で呼び出されると、メディアの削除を防ぐフラグが設定されている場合は、カウントをインクリメントします。フラグがクリアされ、ドライバーが同じ呼び出し元からロック要求を以前に受信した場合は、カウントをデクリメントします。
  4. すべてのロックカウントが 0 でない限り、メディアの削除を防止します。
通常の状況では、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に設定されます。

要件

要件
Header ntddstor.h (Ntddstor.h を含む)

こちらもご覧ください

IOCTL_STORAGE_EJECT_MEDIA