命名卷

标签是一种用户友好名称,通常由最终用户分配给卷,以便于识别。 卷可以有标签、驱动器号、两者,或者两者都没有。 若要设置卷的标签,请使用 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) 支持 \\?\ 前缀的文件函数版本。