次の方法で共有


CSV_CONTROL_OP列挙 (ntifs.h)

FSCTL_CSV_CONTROL制御コードで使用するクラスター共有ボリューム (CSV) 制御操作の種類 指定します。

構文

typedef enum _CSV_CONTROL_OP {
  CsvControlStartRedirectFile = 0x02,
  CsvControlStopRedirectFile = 0x03,
  CsvControlQueryRedirectState = 0x04,
  CsvControlQueryFileRevision = 0x06,
  CsvControlQueryMdsPath = 0x08,
  CsvControlQueryFileRevisionFileId128 = 0x09,
  CsvControlQueryVolumeRedirectState = 0x0a,
  CsvControlEnableUSNRangeModificationTracking = 0x0d,
  CsvControlMarkHandleLocalVolumeMount = 0x0e,
  CsvControlUnmarkHandleLocalVolumeMount = 0x0f,
  CsvControlGetCsvFsMdsPathV2 = 0x12,
  CsvControlDisableCaching = 0x13,
  CsvControlEnableCaching = 0x14,
  CsvControlStartForceDFO = 0x15,
  CsvControlStopForceDFO = 0x16,
  CsvControlQueryMdsPathNoPause = 0x17,
  CsvControlSetVolumeId = 0x18,
  CsvControlQueryVolumeId = 0x19
} CSV_CONTROL_OP, *PCSV_CONTROL_OP;

定数

 
CsvControlStartRedirectFile
値: 0x02
CSV ファイルのリダイレクトを開始します。
CsvControlStopRedirectFile
値: 0x03
CSV ファイルのリダイレクトを停止します。
CsvControlQueryRedirectState
値: 0x04
状態リダイレクトを検索します。 この値を指定する場合は、 CSV_QUERY_REDIRECT_STATE 構造体も使用する必要があります。
CsvControlQueryFileRevision
値: 0x06
ファイルリビジョンを検索します。 この値を指定する場合は、 CSV_QUERY_FILE_REVISION 構造体も使用する必要があります。
CsvControlQueryMdsPath
値: 0x08
MDS パスを検索します。 この値を指定する場合は、 CSV_QUERY_MDS_PATH 構造体も使用する必要があります。
CsvControlQueryFileRevisionFileId128
値: 0x09
128 ビット ファイルリビジョンを検索します。 この値を指定する場合は、CSV_QUERY_FILE_REVISION_FILE_ID_128構造体も使用する必要があります。
CsvControlQueryVolumeRedirectState
値: 0x0a
ボリューム状態のリダイレクトを検索します。 この値を指定する場合は、CSV_QUERY_VOLUME_REDIRECT_STATE構造体も使用する必要があります。
CsvControlEnableUSNRangeModificationTracking
値: 0x0d
USN 範囲の追跡を有効にします。
CsvControlMarkHandleLocalVolumeMount
値: 0x0e
VHD ファイルがループバック マウントされようとしている場合は、ハンドルをマークし、CVSFS に I/O の失敗を要求し、I/O が進行しない場合は短いタイムアウト (現在は 20 秒) 後にハンドルを無効にします。
CsvControlUnmarkHandleLocalVolumeMount
値: 0x0f
VHD ファイルがループバックアンマウントされようとしている場合、 以前に CsvControlMarkHandleLocalVolumeMount でマークされていたハンドルのマークを解除します。
CsvControlGetCsvFsMdsPathV2
値: 0x12
MDS パスのバージョン 2 を検索します。 この値を指定する場合は、CSV_QUERY_MDS_PATH_V2構造体も使用する必要があります。
CsvControlDisableCaching
値: 0x13
CSV ファイルのキャッシュを無効にします。
CsvControlEnableCaching
値: 0x14
CSV ファイルのキャッシュを有効にします。
CsvControlStartForceDFO
値: 0x15
CSVFS がダウンレベル ファイル オブジェクト (DFO) で I/O ダウンレベルの転送を開始するように強制します。 詳細については、「解説」を参照してください。
CsvControlStopForceDFO
値: 0x16
DFO での CSVFS による I/O 転送の強制を停止します。 詳細については、「解説」を参照してください。
CsvControlQueryMdsPathNoPause
値: 0x17
CsvControlQueryMdsPath に似ています。 MDS パスを検索しますが、要求の時点で CSV ボリュームが一時停止している場合は、最後の調整ノードを返す代わりに 、MdsNodeId を 0xFFFFFFFF に設定します。 これにより、クライアントは調整ノードが変更されている可能性があることを検出できます。 CsvControlQueryMdsPathNoPause を指定した場合は、 CSV_QUERY_MDS_PATH 構造体も使用する必要があります。
CsvControlSetVolumeId
値: 0x18
CSV ボリューム GUID を設定します。 詳細については、「解説」を参照してください。
CsvControlQueryVolumeId
値: 0x19
CSV ボリューム GUID が使用可能かどうかを照会します。 詳細については、「解説」を参照してください。

注釈

この列挙で FSCTL_CSV_CONTROL コントロール コードを呼び出す代わりに、この列挙型のメンバーをカプセル化する CSV_CONTROL_PARAM 構造体を使用します。

CsvControlStartForceDFO と CsvControlStopForceDFO

CSVFS でファイル オブジェクトを開くと、CSVFS はダウンレベル のファイル システム (NTFS または REFS) で開き、開くすべてのユーザーに一致する下位レベルのファイル オブジェクト (DFO) が開きます。 そのファイル オブジェクトは、CSVFS 上のファイルを開くアプリケーションの一部として開き、アプリケーションが CSVFS 上のファイル オブジェクトのハンドルを閉じると閉じられます。 内部的に CSVFS は、ページング ファイル オブジェクト (PFO) と呼ばれる追加のファイル オブジェクトを開きます。このオブジェクトは、CSVFS 上の同じファイルのすべての開き間で共有されます。 既定では、CSVFS では、次のような多くの操作に使用されます。

  • Oplock ネゴシエーション
  • バイト範囲ロック
  • ページング I/O の転送

フィルター処理ソリューションによっては、特別な方法でハンドルをマークし、一致する DFO で CSVFS によってすべての読み取りと書き込みを下位レベルで転送することが想定される場合があります。 アプリケーションは、 CSVControlStartForceDFO を送信することで、CSVFS に対して DFO での IO ダウンレベルの転送を強制的に開始できます。 その後、アプリケーションで CsvControlStopForceDFO を使用して、既定の動作に戻すことができます。 CsvControlStartForceDFO の送信に使用されたハンドルを閉じると、アプリケーションが CsvControlStopForceDFO を送信したかのように暗黙的に元に戻されます。

CsvControlSetVolumeId と CsvControlQueryVolumeId

これらのコントロールを使用すると、CSVFS の下の下位レベルのファイル システムにアタッチされたファイル システム ミニフィルターで、CSV ボリューム GUID を学習できます。 クラスター物理ディスク リソースは、ダウンレベルのファイル システムがマウントされた後にこの GUID を設定するため、マウント中にフィルターがアタッチされている場合は使用できません。 フィルターのアタッチ中に、ファイル システム ミニフィルターで CsvControlQueryVolumeId を発行して、GUID が既に使用可能かどうかを照会できます。 csvflt が受け取るようにするには、コントロールをスタックの先頭に送信する必要があります。 ボリューム GUID がまだ使用できない場合、 csvflt はSTATUS_UNSUCCESSFULを返します。 ボリューム GUID がまだ使用できない場合は、フィルターのアタッチに失敗しないようにしてください。

後で、物理ディスク リソースは、ボリューム GUID を使用して CsvControlSetVolumeId を送信します。 スタック上のすべてのフィルターでは、CsvControlSetVolumeId コントロールを使用してボリューム GUID を格納できます。 フィルターは、このコントロールを完了できません。 代わりに、スタックを下に移動できるようにし、他のフィルターで GUID を格納できるようにする必要があります。

要件

要件
Header ntifs.h

こちらもご覧ください

ファイル管理の列挙

CSV_CONTROL_PARAM

CSV_QUERY_FILE_REVISION

CSV_QUERY_MDS_PATH

CSV_QUERY_REDIRECT_STATE

FSCTL_CSV_CONTROL