【发布时间】: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