因此,Linux 会“挂载”硬盘来执行某些操作(如读取/写入)。Windows 是否以相同的方式“挂载”硬盘?
在 Microsoft 的上下文中它是否有不同的名称?
答案1
如果您了解 Windows 内部结构,请修复我的错误。
“安装”由两个主要部分组成,这两个部分在两个系统中是相同的,但它们的分离略有不同:
- 访问磁盘上的文件系统;
- 为文件系统分配路径。
在 Linux 上,同一个mount()
函数可以完成这两项工作;文件系统必须明确安装在用户选择的路径上,并且只要安装在至少一个路径上(可能更多),它就会保持打开状态。一旦文件系统的所有路径都已umount()
安装,它就会关闭。
当卷出现时,Windows 会自动挂载卷 - 它会立即打开文件系统并分配一个驱动器号和/或任何其他配置的名称。
可以使用FSCTL_LOCK_VOLUME
和/或FSCTL_DISMOUNT_VOLUME
读写控制功能(例如,chkdsk
在其上运行)但当程序解锁或退出时会自动重新挂载。这种行为可以看作与 Linux 相反。由于卸载文件系统是暂时的,因此即使卸载后,它仍会保留分配的名称。(“安全删除”功能会卸载文件系统并禁用底层设备,以防止 Windows 看到文件系统并重新挂载它。)
一个文件系统可以分配有多个名称:
驱动器号(
A:
、C:
、[:
)——自动分配给新磁盘,并在重启时丢失,但 Windows 会记住用户配置的分配。在这方面,它们类似于 Unix 挂载点。(驱动器号也可以分配给任意设备,包括 Windows 支持的网络文件系统。你可以在
\GLOBAL??\
和\Sessions\<session>\DosDevices\<loginid>\
在程序运行对象。注意:驱动器号通常是系统范围的,但也可以使用
subst
或 来在会话范围内分配DefineDosDevice()
,是的,它接受[:
。会话范围的分配永远不会存储在任何地方,并且在重新启动时消失。文件夹挂载点(
C:\Disks\Music
)——文件系统可以挂载到任意目录,就像在 Unix 中一样;然而,它们实际上以以下形式存储在目标磁盘上:重新解析点(一种更强大的符号链接形式),它通过其卷名。(也存在不同类型的重新解析点;一些标准的重新解析点是挂载点、符号链接、目录连接。)
卷 GUID 路径 (
\\?\Volume{710308c0-978e-11e1-95bc-806d6172696f}\
)(至少它似乎是这么叫的)–Win32 命名空间\\?\
,包含 Windows 分配给此特定 Windows 系统上特定卷的 UUID。它们无法更改。它们在 WinObj 中由mountvol
、 或 下列出\GLOBAL??\
。与驱动器号不同,这些对于所有用户都是相同的。设备接口路径
\\?\STORAGE#Volume#<something>Signature<hex>Offset<hex>Length<hex>#<uuid>\
与卷 GUID 路径不同,每个卷只有一个设备接口路径。- 卷设备名称
\Device\HarddiskVolume23
- 与所有之前的只是符号链接的卷不同,它直接命名卷。您知道这一点,因为它在\Device
命名空间中,而不是\\?
命名空间中。这也意味着您不能将它与诸如 之类的函数一起使用CreateFile
。
- 卷设备名称
diskmgmt.msc
,mountvol
并可diskpart
管理驱动器号和挂载点。
即使卷没有任何驱动器号并且没有“安装”在任何文件夹上,它仍然保持打开状态,并且仍然可以通过其卷名访问其内容;例如
\\?\Volume{710308c0-978e-11e1-95bc-806d6172696f}\Windows\Explorer.exe
答案2
mountvol.exe
与 Windows 相同。
答案3
是的,但一般来说,它是自动处理的(例如,使用 USB 驱动器)。
磁盘管理实用程序(计算机管理的一部分)允许您操作卷和挂载点。Explorer 对网络共享执行相同的操作。根据您运行的 Windows 版本,还有命令行版本(Windows 7 中为 diskpart.exe)。
答案4
填写您的 _ _ _ _ _ _ 的最简短、最明显的答案是“mount”。Linux 可以挂载(和卸载)文件系统,Windows 也是如此。
它们各自在不同程度上实现了这一过程的自动化,这取决于一系列我无法列出的混合因素,但我认为缓存策略、用户风格/偏好和专利对该过程的自动化有重大影响。