iphone - 可以在 Windows 中使用 CreateFile 以编程方式从 iPhone 读取图像吗?

标签 iphone windows winapi filesystems createfile

当 iPhone 连接到 Win7 计算机时,可以使用资源管理器(以及我的应用程序的打开文件对话框)查看图像。但是,文件位置不包含驱动器号。

例如 Computer\Apple iPhone\Internal Storage\DCIM\800AAAAA\IMG_0008.JPG 而不是 E:\DCIM\800AAAAA\IMG_0008.JPG 这是常见的SD 卡、USB 驱动器等...

我曾尝试使用 CreateFileW 从 iPhone 读取图像,但失败并显示“(错误代码:3)系统找不到指定的路径。”我也尝试过使用 Chrome 访问它们,但也失败了。

有什么建议吗?

最佳答案

该文件夹实际上是所谓的“虚拟文件夹”,在文件系统上没有完整路径。您将需要使用从打开的对话框返回的 shell 项来获取文件的内容,而不是使用 CreateFile。

数据应该是可访问的,但您应该按照 the MSDN documentation 中的说明进行操作.我确信可能有更好的示例(因为这仅提供指导)。

编辑 粗略的过程是从 IFileOpenDialog 获取 IShellItem,然后绑定(bind)到流,然后读取流(假设只读)——记住这段代码几乎没有错误处理或检查或安全:

if (pitem->GetDisplayName(SIGDN_NORMALDISPLAY, &destName) == S_OK) {
    std::cout << destName << std::endl;
    CoTaskMemFree(destName);
}
IStream *pistream;
if (pitem->BindToHandler(0, BHID_Stream, IID_PPV_ARGS(&pistream)) == S_OK) {
    char input[1024];
    long to_read = 1024;
    unsigned long read;
    while (S_OK == pistream->Read(input, to_read, &read)) {
       std::cout << input << std::endl;
    }
    pistream->Release();
}
pitem->Release();

关于iphone - 可以在 Windows 中使用 CreateFile 以编程方式从 iPhone 读取图像吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11017615/

相关文章:

ios - 证书尚未生效

c++ - WaitForMultipleObjects 会修改*多个*对象的状态吗?

c++ - 如何从 ip 地址或 sockaddr_in 结构(C++/WinAPI)获取主机名?

c++ - 将 CoCreateInstance 重定向到假实现

iphone - 有没有办法识别在父 uitableview 中选择的单元格

iphone - 使用plist/XML下载缓存明细数据?

iphone - 如何将滑动手势添加到 UITableView 单元格?

linux - Windows 上的 wx python 图像刷新

windows - CMD(命令提示符)进不去桌面

c# - PrincipalContext.ValidateCredentials 在 XP 上始终使用 Machine ContextType 返回 False