次の方法で共有


BPIO_OPERATIONS列挙 (ntddstor.h)

BPIO_OPERATIONS では、IOCTL_STORAGE_MANAGE_BYPASS_IO コントロール コードでサポートされるさまざまな BypassIO 操作を定義します。

構文

typedef enum _BPIO_OPERATIONS {
  BPIO_OP_ENABLE,
  BPIO_OP_DISABLE,
  BPIO_OP_QUERY
} BPIO_OPERATIONS;

定数

 
BPIO_OP_ENABLE
特定のボリュームまたはディスク (デバイス) に対して BypassIO を有効にすることを要求します。つまり、ドライバーには、そのスタックのすべての読み取り/書き込みが表示されない可能性があります。

手記

ボリュームおよびストレージ スタック内のすべてのドライバーには、BypassIO の有効化要求を拒否する機会がありますが、可能な限り有効にしておくことをお勧めします。

操作前に次の操作を行います。

* ドライバーが特定のデバイスの BypassIO をサポートできる場合は、要求をスタックに転送する必要があります。
* ドライバーが特定のデバイスの BypassIO をサポートできない場合は、次の手順を実行する必要があります。
* 有効化要求が拒否された理由、ドライバーの名前、および有効要求を拒否した理由に関する追加の詳細を含む一意の説明文字列を記述する操作 NTSTATUS を含む、BPIO_OUTPUT 構造を更新します。
*STATUS_SUCCESSで完全な IOCTL_STORAGE_MANAGE_BYPASS_IO

操作後、ドライバーは、その下のすべてのドライバーが BypassIO をサポートできるかどうかを確認できます。 "はい" の場合、ドライバーはファイルに必要な状態を保持し、完了処理を続行する必要があります。 BypassIO 対応状態と互換性がない可能性がある要求を適切に処理するには、状態を維持する必要があります。

ファイル システムは、BypassIO が現在有効になっているファイルの数のボリュームごとの数を保持します。 BPIO_OP_ENABLE 操作は、このカウントが 0 から 1 に遷移した場合にのみ送信されます。

ボリュームまたはストレージ スタック ドライバーが BypassIO を拒否した場合でも、ファイル システム スタックは引き続き BypassIO を実行できます。 これは、誰かがボリューム スタックで BypassIO を拒否した場合でも、ファイル システムはフィルターをバイパスできるためです。

BPIO_OP_DISABLE
特定のボリューム/ディスクに対して BypassIO を無効にすることを要求します。 これにより、ドライバーは関連付けられている BypassIO 状態をクリーンアップできます。

ファイル システムは、最後の BypassIO 対応ファイルが無効または閉じられたときにこの操作を送信します (ボリュームごとの数は 1 から 0 に遷移します)。

ドライバーが BPIO_OP_DISABLE を受信しても、現在 BypassIO が有効になっていない場合は、要求を無視する必要があります。

この操作は失敗しないでください。
BPIO_OP_QUERY
指定されたボリュームまたはディスクに対して BypassIO を有効にできるかどうかをクエリします。

記憶域ドライバーは、BPIO_OUTPUT 構造体の適切なフィールドに同じ診断情報を入力して、BPIO_OP_ENABLE 操作と同様に、この要求を処理する必要があります。 主な違いは、ドライバーが QUERY 中に BypassIO ENABLE 状態に入らない点です。

備考

詳細については、「BypassIO for storage drivers」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows 11
ヘッダー ntddstor.h

関連項目

IOCTL_STORAGE_MANAGE_BYPASS_IO