FSCTL_MARK_HANDLE IOCTL (winioctl.h)

指定したファイルまたはディレクトリと、そのファイルまたはディレクトリの変更に関する情報を含む変更ジャーナル レコードをマークします。

この操作を実行するには、次のパラメーターを使用して DeviceIoControl 関数を呼び出します。

BOOL DeviceIoControl(
  (HANDLE) hDevice,             // handle to file or directory
  FSCTL_MARK_HANDLE,            // dwIoControlCode
  (LPVOID)lpInBuffer,           // input buffer
  (DWORD)nInBufferSize,         // size of input buffer
  NULL,                         // lpOutBuffer
  0,                            // nOutBufferSize
  (LPDWORD) lpBytesReturned,    // number of bytes returned
  (LPOVERLAPPED) lpOverlapped   // OVERLAPPED structure
);

注釈

この操作に対する重複した I/O の影響については、 DeviceIoControl トピックの「解説」セクションを参照してください。

FSCTL_MARK_HANDLE は、個々のファイルまたはディレクトリで動作する唯一の変更ジャーナル操作です。 ユーザーがアイテムに対して実行できる操作には影響しません。 代わりに、オペレーティング システムがアイテムを変更した方法に関する情報を提供するか、アイテムにプライベート データ ストリームを追加するか、ファイルまたはディレクトリに情報を追加します。

ファイルまたはディレクトリに変更がある場合は、 FSCTL_MARK_HANDLE で追加された情報も、ファイルまたはディレクトリ用に作成された USN レコードにコピーされます。 これら 2 つの操作は、互いに独立して行われる可能性があることに注意してください。たとえば、USN レコードが存在してファイルを最適化不可能としてマークできる必要はありません。また、対応する USN レコードの内容を更新するためにファイルまたはディレクトリをマークする必要はありません。 FSCTL_MARK_HANDLE が項目 をマークできる情報の詳細については (詳細については 、「MARK_HANDLE_INFO 」を参照してください)。

ボリュームの変更ジャーナルが削除中または非アクティブな間に FSCTL_MARK_HANDLE を使用してもエラーではありません。 変更ジャーナルが存在する限り、変更ジャーナルの状態に関係なく、適切な情報がファイルまたはディレクトリーに適用されます。

リモート ファイルのタイム スタンプが正しく更新されない場合があることに注意してください。 一貫性のある結果を得るには、バッファーなしの I/O を使用します。

ボリュームは NTFS である必要があります。

Windows 8とWindows Server 2012では、このコードは次のテクノロジでサポートされています。

テクノロジ サポートされています
サーバー メッセージ ブロック (SMB) 3.0 プロトコル いいえ
SMB 3.0 Transparent Failover (TFO) いいえ
スケールアウト ファイル共有 (SO) を使う SMB 3.0 いいえ
クラスターの共有ボリューム ファイル システム (CsvFS) はい

CsvF は常に ダイレクト IO の対象となるファイルの USN_SOURCE_REPLICATION_MANAGEMENTとMARK_HANDLE_PROTECT_CLUSTERS を発行します。

要件

要件
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
Header winioctl.h (Windows.h を含む)

こちらもご覧ください