【问题标题】:Windows handle to portable device便携式设备的 Windows 句柄
【发布时间】:2013-08-04 12:59:46
【问题描述】:

有人知道将文件句柄(例如通过 CreateFile() )获取到“便携式设备”吗?如果有可能吗? 就像驱动器号(例如“\\.\c:”)和物理驱动器(例如“\\.\PhysicalDrive0”)的可能性一样

对于便携式设备,我指的是可以通过 USB 连接到系统的智能手机、gps 等。 Windows 显示了一个便携式设备,您可以(例如)从中访问内部存储器或 SD 卡。

如果可能,我希望直接获取 SD 卡或“便携式设备”内的其他内存的句柄,以便我可以对数据进行文件读取。

这可能吗?如果可以,怎么办?

【问题讨论】:

  • 这些便携式设备中有许多是 MTP 设备,您无法直接访问设备的文件系统,但必须通过 Windows Media Device Manager SDK 或类似的东西。
  • @Hasturkun 谢谢。嗯......这不是我所希望的(但是,它曾经吗?;)通过快速扫描,我认为我也不会获得对设备的原始访问权限,这是我在解释文件时所需要的-系统(例如 FAT)我自己。
  • 另一方面,许多可移动设备使用映射的驱动器号公开对其文件系统的访问权限,因此您不需要对其硬件进行低级别访问。这样您就可以通过普通的文件 I/O 例程访问他们的文件,而不必关心他们是可移动系统。
  • 谢谢@RemyLebeau。但是,根据我的经验,Windows 资源管理器中“便携式设备”下列出的所有设备都没有驱动器号。例如,如果我使用 W7 通过 USB 连接我的智能手机或 gps,它们会列在“便携式设备”下,当我单击它们时,我会看到(例如在智能手机上)两个“驱动器”,一个是板载(闪存)内存,另一个是 micro SD 卡。两者都没有驱动器号,也无法通过“PhysicalDrive”获得。
  • 当我将家人的各种智能手机连接到我们的 Win7 机器时,Windows 资源管理器会弹出新的驱动器号,以访问智能手机内部文件系统和 SD 卡的内容。显然,它们不是附加到 Windows 机器的“物理”驱动器,但它们确实分配了驱动器号。是的,外部设备上的虚拟驱动器可以分配有驱动器号。这实际上取决于用于这些设备的特定驱动程序。并非所有制造商都以这种方式将他们的设备暴露给 Windows,但有些制造商会这样做。

标签: c++ c winapi handle createfile


【解决方案1】:

根据我的问题的 cmets,我的问题的答案是否定的。您无法使用便携式设备。至少不是我想要的方式和目的。

除非驱动程序通过驱动器号公开内部存储器和/或驱动器,但即便如此,您也不能确定您是否获得了对设备的真正原始访问权限,因为驱动程序可能伪造数据以使一个文件系统看起来像另一个文件系统。

【讨论】:

    猜你喜欢
    • 2011-01-29
    • 2011-09-03
    • 2013-05-19
    • 2014-02-22
    • 1970-01-01
    • 2013-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多