问题标签 [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 回答
502 浏览

c# - 如何使用 WPD 将文件传输到没有驱动器号的 Android 设备

对不起,我的英语不好,请帮我解决这个问题。我能够使用 WPD 从 Android 设备检索文件,但无法传输回 Android 设备。我按照https://dzone.com/articles/windows-portable-devices-0中的教程进行操作,但该方法仅适用于具有驱动器号的设备。谢谢你。

0 投票
1 回答
1195 浏览

delphi - 如何枚举 MTP 和 PTP 设备

此答案解释了如何使用 WMI 按驱动器号查找附加的 USB 大容量存储设备,但我正在尝试查找附加的 MTP 或 PTP 设备的名称(或 UNC 路径),例如附加的相机或移动设备,它们没有安装驱动器号,这样我就可以爬取他们的目录来搜索图像。我怎样才能做到这一点?

0 投票
1 回答
336 浏览

windows - 如何从 WPD API 获取设备的根目录?

我想从 WPD API 获取 MTP USB 设备的所有根目录(我可以将它们识别为 GUID)。所以我的问题是:我怎么能做到这一点?任何代码片段将不胜感激。

0 投票
1 回答
191 浏览

c++ - 包含 PortableDevice.h 会导致很多错误

我阅读了这篇文章并刚刚在 VisualStudio 2017 中创建了一个 cpp 控制台项目,其中包括一些标头。

stdafx.h:

我所做的就是这个,我得到了很多错误。

我不知道如何处理这个问题,因为我不熟悉 Windows 开发,这是第一次创建 Windows 应用程序。我该如何解决这个问题或如何获得有关此的信息?

0 投票
0 回答
422 浏览

c++ - CoCreateInstance 返回 E_INVALIDARG

我一直致力于为 Golang 包装 WindowsPortableDevice Api。下面的 c++ 代码可以正常工作,但突然无法正常工作。

libgowpd.h:

libgowpd.cpp:

在戈朗

我想我pPortableDeviceManager通过获取地址正确传递了指针,pPortableDeviceManager但它返回0x80070057错误代码(E_INVALIDARG)。

我做错了什么?

0 投票
1 回答
143 浏览

c++ - WPD 获取媒体尺寸

我想通过 IPortableDeviceValues 获取 WPD 上图像文件的宽度和高度。

根据Windows 开发中心,每个类型为 WPD_CONTENT_TYPE_IMAGE 的对象(它们是)都需要提供 WPD_MEDIA_WIDTH/WPD_MEDIA_HEIGHT 但我总是收到错误消息。

我总是从

hr = 0x80070490 我在这里找不到这个错误代码

有谁知道出了什么问题?

0 投票
1 回答
810 浏览

c# - 如何获取 CD / DVD 驱动器上的文件更改通知?

我是 C# 新手,必须用 C# 开发一个 Windows 窗体应用程序。此应用程序应跟踪以下内容。

  • 监控外部和内部的 CD/DVD 驱动器。
  • 监控 CD/DVD 驱动器上创建、修改和删除的文件。

我可以RegisterNotification通过跟踪方法WM_DEVICECHANGE中的消息来获取 CD/DVD 驱动器插入的系统通知WndProc

上述实现让我知道何时将新设备连接到 PC。

我面临的问题是如何跟踪 CD/DVD 上发生的文件更改(写入/修改)。一种选择是将 CD/DVD 中的文件作为后台作业进行轮询。但是,这将是最后的选择。

我发现IMAPI我们可以通过它写入 CD/DVD,但我只需要监视文件更改以进行审计。

请指出我如何在我的程序中接收 CD/DVD 通知上的文件更改的正确方向?

我已经尝试过FileSystemWatcher,但它似乎不适用于 CD/DVD 驱动器。

2018 年 2 月 7 日更新:

我能找到的另一种方法是通过WMI附加到WMI Events. 我发现了一个问题Best way to detect dvd insertion in drive c#也可以回答。我想知道在 WMI 中检测 DVD 文件系统修改是否可行,以及是否有专家可以共享相同的查询。我希望如果Arshad能够在这方面提供帮助。

0 投票
0 回答
167 浏览

c++ - IPortableDeviceEventCallback 无法正常工作(奇怪的行为)

我想在连接的手机上拍摄照片时在我的应用程序中接收回调 (WPD_EVENT_OBJECT_ADDED)。我实现了 WPD 客户端和 IPortableDeviceEventCallback,如Windows Dev Center中所示。

现在我的问题是,只有当我通过 Windows 资源管理器打开手机上的 DCIM/Camera 文件夹并且资源管理器开始为图像创建缩略图时,才会调用 IPortableDeviceEventCallback::OnEvent() 方法。在我这样做一次之后,我会收到来自手机的所有事件,直到我断开并重新连接它。但如果我不这样做,除非我断开电话,否则永远不会调用 onEvent()。

使用不同的 Android 和 iOS 手机进行测试。有谁知道发生了什么?

在我的 MTP 实现中,我注册了我的 DeviceEventsCallback() eventNotifier

我的 open() 函数如下所示:

0 投票
1 回答
152 浏览

driver - 如何从windows上层过滤器中获取过滤后的目标设备信息

我正在为 WPD 设备编写一个上层过滤器。我为 Read/Write/Ioctl 指定了回调函数,从回调声明中我可以得到 WDFQueue、WDFRequest。

但是从参数队列或请求中,我只能得到由我的驱动程序创建的设备信息。有什么方法可以检索我的驱动程序当前正在过滤的附加设备的信息?(例如,从内核日志中我可以看到对我的 android 设备的 ioctl 请求,但我不知道如何获取 android 设备对象获取设备名称)

0 投票
1 回答
158 浏览

python-3.x - 如何关闭在 Python/pythoncom/comtypes 中打开的 Windows 便携式设备 IStream

我在 python 中使用带有 pythoncom 和 comtypes 的 Windows 便携式设备。

我遇到了麻烦,因为当我请求 WPD_RESOURCE_THUMBNAIL 资源时,一些 android 设备返回一个“方形”缩略图,而原始图像具有 16:9 格式(或 4:3 ...)。

然后我尝试请求 WPD_RESOURCE_DEFAULT 资源以从 EXIF 数据中获取缩略图:因此无需读取整个文件,一旦获得缩略图的 EXIF 标签,我可以停止读取并跳到下一个文件。

我可以从 EXIF 中获取第一个文件的缩略图。在第二个文件上,我卡在 GetStream() 方法上。它只是挂起。我想是因为上一次调用的 IStream 没有关闭/处理。

您对如何强制此 IStream 的 Dispose / Close 有任何想法吗?

这就是我在代码中所做的:

提前感谢您对此的任何建议。

编辑:由于我没有找到其他方法来中断流并释放所有资源,因此我最终读取了 WPD_RESOURCE_DEFAULT 的整个流。它有点慢,但更安全,因为应用程序也在大屏幕上运行,并且使用 EXIF 的缩略图会导致屏幕上的图像质量很差。因此,我决定为此目的读取 WPD_RESOURCE_DEFAULT 的整个流,并在这一点之外的某个地方加速代码。感谢@ShadowRanger 的支持。