次の方法で共有


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_OP_ENABLE 操作と同様にこの要求を処理し、 BPIO_OUTPUT 構造体の適切なフィールドに同じ診断情報を入力する必要があります。 主な違いは、クエリ中にドライバーが BypassIO ENABLE 状態に入らない点です。

注釈

詳細については、 ストレージ ドライバーの BypassIO に関するページを参照してください。

要件

要件
サポートされている最小のクライアント Windows 11
Header ntddstor.h

こちらもご覧ください

IOCTL_STORAGE_MANAGE_BYPASS_IO