问题标签 [wpd]

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 投票
1 回答
535 浏览

c++ - WPD 对象文件名在“。”处截断

在我的项目中,我使用 Windows 便携式设备 (WPD) API 来枚举移动设备的内容。WPD API 枚举指南。我能够枚举每个对象并查看它们的属性,如 API 编程指南中所示。WPD API 属性指南

但是,当我尝试获取名称中包含 a 的对象.名称时,返回的值会被截断.

例如,名称为 的对象(设备上的文件夹)com.example返回为com. 当我尝试在设备上查找特定文件路径时,这成为一个明显的问题。

我似乎无法弄清楚出了什么问题。我是否误解了文件名的实际含义?对象内是否有example其他属性或某物com?我很困惑。

编辑:所以我使用 WPD API 示例软件来检索 com.example 对象的所有对象属性,您可以看到 WPD 本身无法获取完整的文件夹名称。在此处输入图像描述

谢谢你的时间!

0 投票
1 回答
452 浏览

.net - shell32 copyhere 在 .Net 和 powershell 脚本中都不起作用

有一个powershell脚本可以通过MTP以编程方式在pc和android之间复制文件,请参阅access-file-system-against-mtp-connection,它在powershell控制台下运行时工作,然后我制作了如下脚本:

该脚本在powershell控制台上运行良好,但是当我在cmd下运行它时

powershell -文件 mtpcp.ps1 c:\test\Android\test\

或者

powershell ./mtpcp.ps1 c:\test\Android\test\

它什么也不做(没有显示错误)。

然后我使用 system.Shell32 在 .Net 上实现了相同的功能,CopyHere 功能适用于常规路径c:\,但不适用于 mtp 设备路径,就像 powershell 一样,它在 CopyHere 功能上什么也不做,也没有错误消息出现。

0 投票
1 回答
587 浏览

c# - 如何使用 C# 获取 MTP 设备可用存储和存储容量?

我正在使用 PortableDevice API 来获取 MTP 设备检测和设备属性。我想获得 MTP 设备存储,例如存储容量和可用存储容量。这是我获取设备友好名称的示例代码,

同样,我想从 MTP 设备读取设备存储和可用空间。

我试过这样,但我错过了一些东西,

……………………………………………………………………………………………………………………………………………………………………………… .....................

提前致谢。

0 投票
1 回答
453 浏览

c++ - WPD API - 无法从设备传输内容(包括 SSCCE)

我需要枚举 MTP android 设备的内容并将文件从设备传输到 Windows PC。

按照此处找到的将内容从设备传输到 PC的指南,我尝试将简单的文本文档传输到指定目录。但是,输出文件始终为空,即使返回值表明X number of bytes have been written.

我只使用推荐的 Windows API 调用创建了一个 SSCCE,以轻松重现该问题。我使用了 API 文档和官方示例项目作为参考。

主文件

Qt项目文件

为了测试,我有一个通过 MTP 连接的 android 手机,在根目录上有一个名为的文件夹testFolder,里面有一个testfile.txt带有文本的文件hello world。运行此应用程序时,输出表明已写入 11 个字节,但文件为空。请你自己试试?

我似乎无法理解为什么文件总是空的。有任何想法吗?

谢谢你的时间。

0 投票
1 回答
100 浏览

jpeg - C#:WPD - 下载带有元标记的图片

我正在运行便携式设备 API 以自动从连接的智能手机获取照片。我已经正确传输了所有内容。我使用的代码是标准 DownloadFile() 例程:

此标准代码有两个问题: 1) - 当图像保存到 windows 机器时,没有 EXIF 信息。这个信息是我需要的。我该如何保存它?2)保存的文件非常臃肿。例如,源 jpeg 为 1,045,807 字节,而下载的文件为 3,942,840 字节!它类似于所有其他文件。我认为 unsafe{} 部分中的一些会逐字节输出它?有没有更好的数据传输方式?(安全的方式?)

0 投票
1 回答
446 浏览

c++ - Windows 便携式设备 - 在创建/复制/删除新文件时通知

是否可以在使用 ( IPortableDeviceEventCallback) 从/复制到/存储设备中删除文件时收到通知。

到目前为止,我只在闪存驱动器断开连接或用户在外部更改其名称时收到通知。

编辑:我有兴趣接收WPD_EVENT_OBJECT_ADDED活动。

显示支持所需的事件,但在新文件复制时没有发送任何内容

0 投票
2 回答
557 浏览

c++ - WPD API 检测设备是否是电话?

编辑:要求提供完整的源代码。下面是一个准系统实现,以复制该错误。删除了内容枚举,但是无论如何在第一个对象调用时都会发生崩溃。在这种情况下,WPD_DEVICE_OBJECT_ID 对象。

链接到 CPP(错误从第 103 行开始)

链接到 QMAKE.PRO(我正在使用 Qt)


在我的项目中,我使用WPD API来读取移动设备的内容。我遵循 API 到一个 tee 并成功实现了内容枚举。

但是,如果连接了 USB 驱动器,WPD API 有时也会将其检测为设备。无论如何,我的程序将继续进行内容枚举。我不想要那个。我只想列举移动设备。

问题是,在内容枚举期间,当我的程序尝试检索 USB 驱动器上对象的属性时,它会崩溃。以下是崩溃详情:

崩溃发生在此调用上:

hr返回 FAILED 然后我的程序崩溃。

经过一番研究,我发现异常代码c0000417意味着发生了缓冲区溢出?如果我错了,请纠正我,但这是 WPD API 中的漏洞吗?如果是这样,我怎么能提前检测到这个设备不是移动设备?

谢谢你的时间!

0 投票
2 回答
739 浏览

winapi - 如何通过win32 wpd api获取序列号

如标题所示,我在 google 上搜索这个问题,但似乎无法通过 WPD(Windows Portable Device) api 获取序列号,在MSDN中,我找到了 Portable Device 的 WPD_DEVICE_SERIAL_NUMBER 属性,谁能告诉我如何使用 wpd api 获取此属性?

0 投票
3 回答
695 浏览

c# - 安装 Windows 10 创建者更新 1703 后将数据复制到便携式设备时出现 System.AccessViolationException

我正在尝试使用此代码段将内容传输到便携式设备

尝试执行 targetStream.Write System.AccessViolationException 时发生。

这仅适用于 Windows 10,创建者更新 1703。

你能告诉我我做错了什么吗?

提前致谢。

0 投票
1 回答
1207 浏览

vb.net - 如何将文件从路径复制到 WPD 或 MTP 设备

我正在使用 VB.NET 创建视频复制应用程序。我可以轻松地将所需的文件从路径复制到 USB,但我在使用手机等便携式设备时遇到了麻烦。

到目前为止,我能够使用此问题中给出的代码和 DLL 找到并连接手机,但我无法将文件复制到设备。

我与此相关的子代码如下: