命名卷

标签是一个用户友好的名称,它通常由最终用户分配给卷,以便更轻松地识别。 卷可以有标签、驱动器号、两者或两者均不能。 若要设置卷的标签,请使用 SetVolumeLabel 函数。

多种因素可能使仅使用驱动器号和标签来识别特定卷变得困难。 一个是卷不需要有驱动器号或标签。 另一个是,两个不同的卷可以具有相同的标签,这使得它们不区分,但驱动器号除外。 第三个因素是,驱动器号分配随着卷添加到计算机和从计算机中删除而更改。

若要解决此问题,操作系统使用 卷 GUID 路径 来标识卷。 这些是以下形式的字符串:

“\\?\Volume{GUID}\”

其中 GUID 是标识卷的全局唯一标识符 (GUID) 。

卷 GUID 路径有时称为 唯一卷名称,因为卷 GUID 路径只能引用一个卷。 但是,此术语具有误导性,因为卷可以具有多个卷 GUID 路径。

“\\?\”前缀禁用路径分析,不被视为路径的一部分。 有关“\\?\”前缀的详细信息,请参阅 命名文件或目录

使用具有“\\?”前缀的卷 GUID 路径时,必须指定完整路径。

装载的文件夹是一个卷和另一卷上的文件夹之间的关联,因此文件夹路径可用于访问卷。 例如,如果使用 SetVolumeMountPoint 函数创建关联卷“D:\”的已装载文件夹使用文件夹“C:\MountD\”,然后可以使用任一路径 (“D:\”或“C:\MountD\”) 访问卷“D:\”。

卷装入点是可用于访问卷的任何用户模式路径。 有三种类型的卷装入点:

  • 驱动器号,例如“C:\”。
  • 卷 GUID 路径,例如“\\?\Volume{26a21bda-a627-11d7-9931-806e6f6e6963}\”。
  • 装载的文件夹,例如“C:\MountD\”。

将卷 GUID 路径用作输入参数的所有卷和装载文件夹函数都需要尾随反斜杠。 返回卷 GUID 路径的所有卷和装载文件夹函数都提供尾随反斜杠,但这与 CreateFile 函数并不一样。 可以通过调用 CreateFile 打开卷,并从指定的卷名称中省略尾随反斜杠。 CreateFile 将卷 GUID 路径与追加反斜杠作为卷的根目录进行处理。

操作系统在首次安装卷时以及卷的格式设置时,为卷分配卷 GUID 路径。 卷和装载的文件夹函数使用卷 GUID 路径来访问卷。 若要获取卷的卷 GUID 路径,请使用 GetVolumeNameForVolumeMountPoint 函数。

创建装载的文件夹时,路径长度可能很担心,该文件夹将具有深目录树的卷与另一卷上的目录相关联。 这是因为卷的路径连接到目录的路径。 全局定义的常量 MAX_PATH 定义路径可以包含的最大字符数。 (有关 MAX_PATH的详细信息,请参阅 命名文件或 Directory.) 可以通过执行以下操作之一来避免此约束:

  • 按卷 GUID 路径引用卷。
  • 使用支持 \\?\ 前缀的文件函数的 Unicode (W) 版本。