このアーカイブは同期化されません。 mixi の日記が更新されても、このアーカイブには反映されません。
NTFS のボリュームマウントポイントは、
ディレクトリに設定することができ、
リンクの処理は NTFS によって行われる。
そのため、一度設定したマウントポイントは、
OS を再起動しても維持されている。
また、ディスクを異なる PC に持っていっても、
リンク先のボリュームが存在すれば利用できる。
こんなことが可能なのは、リンク先に関する情報が、
ディスク自身に保存されているからである。
しかしながら、一般的にディレクトリが持てる情報は、
自分の中に含まれるファイルやサブディレクトリの情報や、
ディレクトリの属性や作成日時しかない。
そこで、NTFS はディレクトリに対して特殊な属性を持たせ、
拡張情報を追加することで対応している。
まず、マウントポイントとして機能するディレクトリには、
読み取り専用やシステム属性と同じように、
「リパースポイント」という属性が設定されている。
この属性は <winnt.h> ヘッダファイルに、
FILE_ATTRIBUTE_REPARSE_POINT として定義されており、
GetFileAttributes などの API で取得できる。
また、リパースポイントの属性を持つディレクトリには、
リパースタグという特殊な追加情報が関連付けられている。
リパースは、再解析という意味であり、
この属性が設定されたディレクトリは、
NTFS ドライバが特別な扱いをする。
その処理は、リパースタグの内容に沿って行われる。
リパースタグは、タグの種類とそのデータで構成されている。
NTFS は、リパースポイントを色々な用途に使えるように、
タグの種類によって機能を定義できるようにしている。
ボリュームマウントポイント機能は、
リパースタグに設定できる 1 つの種類に過ぎず、
そのタグの種類を表す値は、<winnt.h> に、
IO_REPARSE_TAG_MOUNT_POINT として定義されている。
他の種類のリパースタグもある。最新の開発キットには、
IO_REPARSE_TAG_SYMBOLIC_LINK なんて値も確認できる。
近い将来シンボリックリンクが実装されるのかもしれない。
ディレクトリに設定されているリパースタグの種類は、
FindFirstFile などの API で得ることができる。
ボリュームマウントポイントの場合は、
リパースタグのデータとして、
リンク先のパス情報を持っている。
つまり、以下のようなイメージである。
パス: d:\mnt\system
属性: FILE_ATTRIBUTE_REPARSE_POINT | FILE_ATTRIBUTE_DIRECTORY
タグの種類: IO_REPARSE_TAG_MOUNT_POINT
タグデータ: Volume{2c4c2620-c203-11d9-a821-806d6172696f}
NTFS ドライバは、ディレクトリにアクセスする際、
この情報を元に、リンク先のボリュームを識別し、
ボリュームが、まるでディレクトリの配下にあるように
パスで扱うことができるように処理しているのである。