再解析ポイントの操作
ファイル システムが再解析ポイントをサポートしているかどうかを確認するには、 GetVolumeInformation 関数を呼び出し、 FILE_SUPPORTS_REPARSE_POINTS ビット フラグを調べます。
DeviceIoControl 関数を使用すると、再解析ポイントを設定、変更、取得、および削除できます。 次の表では、 DeviceIoControl を使用して実行できる再解析ポイント操作について説明します。
操作 | 説明 |
---|---|
FSCTL_SET_REPARSE_POINT | 呼び出し元プログラムが新しい再解析ポイントを設定したり、既存の再解析ポイントを変更したりできるようにします。 |
FSCTL_GET_REPARSE_POINT | 既存の再解析ポイントに格納されている情報を取得します。 |
FSCTL_DELETE_REPARSE_POINT | 既存の再解析ポイントを削除します。 |
再解析ポイントを変更、取得、または削除する場合は、ファイルに含まれている操作で同じ再解析タグを指定する必要があります。 それ以外の場合、操作はエラー ERROR_REPARSE_TAG_MISMATCHで失敗します。 再解析ポイントを変更または削除する場合は、ファイルに含まれる操作で再解析 GUID も指定する必要があります。 それ以外の場合、操作はエラー ERROR_REPARSE_ATTRIBUTE_CONFLICTで失敗します。
ファイルまたはディレクトリに再解析ポイントが含まれているかどうかを確認するには、 GetFileAttributes 関数を使用します。 ファイルまたはディレクトリに再解析ポイントが関連付けられている場合は、 FILE_ATTRIBUTE_REPARSE_POINT 属性が設定されます。
ファイルまたはディレクトリへのハンドルをまだ持たずに既存の再解析ポイントを上書きするには、 CreateFile を FILE_FLAG_OPEN_REPARSE_POINTで呼び出します。 このフラグを使用すると、対応するファイル システム フィルターがインストールされ、正常に動作しているかどうかに関係なく、ファイルを開きます。