ボリュームの名前付け

ラベルは、ユーザーフレンドリな名前であり、通常はエンド ユーザーが認識しやすくするためにボリュームに割り当てられます。 ボリュームには、ラベル、ドライブ文字、両方、またはその両方を含めることができます。 ボリュームのラベルを設定するには、 SetVolumeLabel 関数を使用します。

いくつかの要因により、ドライブ文字とラベルのみを使用して特定のボリュームを識別することが困難になる場合があります。 1 つは、ボリュームにドライブ文字やラベルを付ける必要がないということです。 もう 1 つは、2 つの異なるボリュームに同じラベルを付けることができるため、ドライブ文字を除いて区別できなくなります。 3 つ目の要因は、ボリュームがコンピューターに追加され、コンピューターから削除されると、ドライブ文字の割り当てが変更される可能性があるということです。

この問題を解決するために、オペレーティング システムは ボリューム GUID パス を使用してボリュームを識別します。 次の形式の文字列です。

"\\?\Volume{GUID}\"

ここで 、GUID はボリュームを識別するグローバル一意識別子 (GUID) です。

ボリューム GUID パスは、ボリューム GUID パスが 1 つのボリュームのみを参照できるため、 一意のボリューム名と呼ばれることがあります。 ただし、1 つのボリュームに複数のボリューム GUID パスが含まれる可能性があるため、この用語は誤解を招きます。

"\\?\" プレフィックスはパス解析を無効にし、パスの一部とは見なされません。 "\\?\" プレフィックスの詳細については、「 ファイルまたはディレクトリの名前付け」を参照してください。

"\\?\" プレフィックスを持つボリューム GUID パスを使用する場合は、完全なパスを指定する必要があります。

マウントされたフォルダーは、1 つのボリューム上のフォルダーと別のボリュームの間の関連付けであるため、フォルダー パスを使用してボリュームにアクセスできます。 たとえば、 SetVolumeMountPoint 関数を使用して、ボリューム "D:\" を関連付けるマウントされたフォルダーを作成する場合です。フォルダー "C:\MountD\" を使用すると、いずれかのパス ("D:\"または "C:\MountD\") を使用してボリューム "D:\" にアクセスします。

ボリューム マウント ポイントは、ボリュームへのアクセスに使用できる任意のユーザー モード パスです。 ボリューム マウント ポイントには、次の 3 種類があります。

  • ドライブ文字 ("C:\" など)。
  • "\\?\Volume{26a21bda-a627-11d7-9931-806e6f6e6963}\ などのボリューム GUID パス。
  • マウントされたフォルダー ("C:\MountD\" など)。

ボリューム GUID パスを入力パラメーターとして受け取るボリュームおよびマウントされたフォルダー関数には、末尾の円記号が必要です。 ボリューム GUID パスを返すすべてのボリュームおよびマウントされたフォルダー関数は、末尾の円記号を提供しますが、 これは CreateFile 関数では当てはまりません。 CreateFile を呼び出してボリュームを開き、指定したボリューム名から末尾の円記号を省略できます。 CreateFile では 、ボリュームのルート ディレクトリとしてバックスラッシュが付加されたボリューム GUID パスが処理されます。

オペレーティング システムは、ボリュームが最初にインストールされたとき、およびボリュームのフォーマット時にボリューム GUID パスをボリュームに割り当てます。 ボリュームとマウントされたフォルダー関数は、ボリューム GUID パスを使用してボリュームにアクセスします。 ボリュームのボリューム GUID パスを取得するには、 GetVolumeNameForVolumeMountPoint 関数を使用します。

パスの長さは、深いディレクトリ ツリーを持つボリュームを別のボリューム上のディレクトリに関連付けるマウントされたフォルダーを作成するときに問題になる可能性があります。 これは、ボリュームのパスがディレクトリのパスに連結されるためです。 グローバルに定義された定数 MAX_PATH は、パスに含めることができる最大文字数を定義します。 ( MAX_PATHの詳細については、「 ファイルまたはディレクトリの名前付け」を参照してください)。この制約は、次のいずれかの方法で回避できます。

  • ボリューム GUID パスでボリュームを参照します。
  • \\?\ プレフィックスをサポートする Unicode (W) バージョンのファイル関数を使用します。