问题标签 [drives]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
4758 浏览

c++ - 如何将 linux 设备路径与 Windows 驱动器名称匹配?

我正在编写一个应用程序,它在某个阶段在 Linux 环境中执行低级磁盘操作。该应用程序实际上由两部分组成,一个在 Windows 上运行并与用户交互,另一个是从 LiveCD 运行的 linux 部分。用户选择 Windows 驱动器号,然后 linux 部分对相应的分区执行操作。问题是在 Windows 驱动器号(如 C:)和 linux 设备名称(如 /dev/sda1)之间找到匹配项。这是我目前认为丑陋的解决方案:

  • 在 Windows 中的某个预定义位置(即系统分区的根目录)中存储分区信息(即驱动器号、块数、驱动器序列号等)。

  • 从 /proc/partitions 读取分区列表。只获取那些具有 SCSI 或 IDE 硬盘驱动器主编号和将它们标识为真实分区而不是整个磁盘的次编号的分区。

  • 尝试使用 ntfs 或 vfat 文件系统安装它们。检查挂载的分区是否包含Windows应用程序存储的信息。

  • 找到由 Windows 应用程序编写的所需信息后,进行实际匹配。对于在 /proc/partitions 中找到的每个分区,获取驱动器序列号(通过 HDIO_GET_IDENTITY 系统调用)、块数(来自 /proc/partitions)和驱动器偏移量(/sys/blocks/drive_path/partition_name/start),将其与 Windows信息,如果匹配 - 将 Windows 驱动器号与 linux 设备名称一起存储。

这个方案有几个问题:

  • 这很丑陋。在 Windows 中写入数据,然后在 Linux 中读取数据会使测试成为一场噩梦。

  • linux 设备主编号仅与 IDE 或 SCSI 设备进行比较。这可能会失败,即在 USB 或 FireWire 磁盘上。可以添加这些类型的磁盘,但将应用程序限制为仅可能设备的已知子集似乎是个坏主意。

  • 看起来 HDIO_GET_IDENTITY 仅适用于 IDE 和 SATA 驱动器。

  • /sys/block hack 可能不适用于 IDE 或 SATA 驱动器以外的其他驱动器。

关于如何改进此架构的任何想法?也许还有另一种方法来确定 Windows 名称,而无需在 Windows 应用程序中写入所有数据?

PS 应用程序的语言是 C++。我无法改变这一点。

0 投票
8 回答
5938 浏览

hardware - 广告磁盘空间与实际磁盘空间

为什么广告的磁盘空间几乎总是高于 UI 报告的磁盘空间?例如,我有一个“80 gb”硬盘,但 iTunes UI 显示只有 74。我通常会在硬盘和驱动器盘符上报告的数量上看到这一点。

0 投票
7 回答
32893 浏览

c++ - 枚举 Windows 中所有可用的驱动器号

我想使用 VC++ 在 Windows 中枚举所有可用的驱动器号(尚未使用)。

我怎样才能做到这一点?

0 投票
2 回答
480 浏览

windows - 网络驱动器标签

我正在尝试将某些网络资源的标签映射为驱动器。当我使用 DriveInfo.GetDrives() 时,本地卷按预期具有 VolumeLabel 填充参数,但在网络驱动器中它是一个空字符串。我怎样才能得到这些标签?

0 投票
1 回答
67 浏览

windows - 在 Windows 中为远程资源创建驱动器?

似乎没有任何好的软件可以将 FTP 挂载到本地驱动器号(有关详细信息,请参阅此处SF Question)所以我在想为什么不自己写它,但我对处理 Windows 的经验很少(在编程时)水平)那么做这样的事情会涉及什么?需要做什么才能在“我的电脑”下获得一个新的“驱动器”?需要做什么才能获取列出“驱动器”的 FTP(或其他远程资源)的内容?

0 投票
3 回答
1252 浏览

winapi - 锁定可移动驱动器?

朋友们,如何在 VB6中锁定/解锁(基于软件的)可移动磁盘/驱动器?我需要知道为此目的是否有任何特定的win32例程?

0 投票
1 回答
1716 浏览

.net - System.IO.DriveInfo.GetDrives() 因网络驱动器断开而挂起

我正在.NET 3.5 中编写文件管理器。在启动时,应用程序必须枚举可用的驱动器。我正在使用 DriveInfo.GetDrives 来做到这一点。

不幸的是,我的用户感叹,当他们断开网络驱动器时,应用程序需要大约 30 秒才能启动。

我发现当您的网络驱动器断开连接时,GetDrives() 函数会挂起数秒。用户界面冻结。这发生在启动时,每次我连接一个新驱动器时。

总而言之,我需要一种方法来枚举立即返回的可用驱动器,即使有断开的网络驱动器。谢谢你的帮助。

附加信息:

  1. 我用 WMI 做了一些测试,同样的问题出现了。WMI 查询在 15 秒左右后返回。

  2. 我还考虑过将对 DriveInfo 的调用移至单独的线程。这将解决不阻塞用户界面的问题;但这意味着,当用户连接新驱动器时,驱动器图标只会在 15 秒后出现。那并不理想。

非常感谢您的帮助。

0 投票
3 回答
1402 浏览

c# - 获取逻辑驱动器

我使用以下代码获取逻辑驱动器:

但是当我想遍历它时,会发生异常,并显示以下消息:

我怎样才能得到刚刚准备好的驱动器?

0 投票
4 回答
3762 浏览

c# - c# 如何在我们的系统中搜索媒体文件?

我想通过 c# 搜索位于我系统中的媒体文件。意味着我想创建将扫描所有驱动器的搜索引擎(这里又是一个小问题,如何通过 c# 代码获取我们系统上的驱动器?)并搜索 .mp3、.mp4 等媒体文件。我如何通过 c# 桌面应用程序做到这一点?

0 投票
1 回答
2084 浏览

delphi - 如何显示未命名驱动器的标签?

我想获取驱动器的名称或标签。

我使用这个功能:

例如,这是我在 Windows Explorer 中的驱动器:

代码的输出:

C 和 E 的标签是空的。我应该使用什么 winapi/function 来显示未命名驱动器(C 和 E)的标签?