问题标签 [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.
java - 在 Netbeans 中包含本机库
我正在尝试从 java 签名的小程序中读取便携式设备....我在 http://code.google.com/p/jmtp/w/list上找到了一个 jmtp 库来访问便携式设备,但是当我运行它时netbeans 它给出了错误
p>我搜索并发现我必须将 .dll 文件作为本机库包含在 jmtp 项目中...我右键单击项目并导航到属性,然后选择“运行”并选择 VM 选项为
并将 jmtp.dll 文件放在 c:\jmtp 文件夹中但同样的错误不断出现我的代码是
请告诉我是什么问题
path - 如何为 mtp 设备构建路径(可在文件夹浏览对话框中使用)?
我实现了从 windows pc 到 android 设备的文件传输,该设备通过 MTP 连接到计算机。复制实现已准备就绪(我使用了此示例:http ://code.msdn.microsoft.com/windowsdesktop/Portable-Devices-COM-API-fd4a5f7d )。
现在我想改进 UI,我想提供一个文件夹选择对话框,用户可以在其中选择一个 MTP 设备文件夹,我将在其中保存文件(使用 FOS_PICKFOLDERS 的 CLSID_FileOpenDialog 效果很好)。请注意,简单的文件保存对话框不起作用,因为您会从对话框中收到错误消息:“您无法在此处保存”。
文件夹浏览的结果将类似于:
::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\?\usb#vid_04e8&pid_6860&mi_00#6&2296b879&0&0000#{6ac27878-a6fa-4155-ba85-f98f491d4f33}\ ,SECZ9519043CHOHB,12635222016}{01B8016B-0164-00F2-E100-55012C014001}
usb#vid_04e8&pid_6860&mi_00#6&2296b879&0&0000#{6ac27878-a6fa-4155-ba85-f98f491d4f33}
我知道这是设备,IPortableDeviceManager 使用它作为设备 ID。
SID-{10001,SECZ9519043CHOHB,12635222016}\{01B8016B-0164-00F2-E100-55012C014001}
这是设备上的路径。这些 GUID 是设备对象的 WPD_OBJECT_PERSISTENT_UNIQUE_ID 属性。
有了这些信息,我可以选择设备并在设备中找到文件夹,这样我就可以进行复制了。
我的问题是我还想在设备上的文件夹浏览对话框中选择一个默认目录,但我无法创建上面提到的路径。请注意,如果我将其作为默认路径,它将在正确的文件夹中开始浏览。
有问题的部分是起始 GUID,我无法获得:
::{20D04FE0-3AEA-1069-A2D8-08002B30309D}
我还查看了注册表。我只在一个条目中找到了这个 GUID:
HKEY_USERS\S-1-5-21-2044730494-4069800027-1247311059-1000\Software\Microsoft\Windows\CurrentVersion\Explorer\CLSID{20D04FE0-3AEA-1069-A2D8-08002B30309D}\ DefaultIcon
哪个值是这样的:
C:\Windows\System32\imageres.dll,-109
(CLSID 子文件夹包含更多的 GUID,所以我找不到,这是正确的)
你知道如何让这个 GUID 能够构建整个默认路径吗?
winapi - WPD MTP 数据流挂在 Release
在 Windows 8 下使用 WPD(Windows 便携式设备)API 从与 MTP 兼容的移动设备读取数据时遇到了一个奇怪的问题(尚未尝试任何其他 Windows 版本)。
症状是,在调用通过该函数获取Release
的接口时,偶尔会挂起,直到设备与PC断开连接后才返回。IStream
IPortableDeviceResources::GetStream
Release
经过一些实验,我发现只要读取了流的全部内容,这种情况就不会发生。但如果流仅被部分读取(例如,文件的前 256Kb),它可能看似随机发生(尽管非常频繁)。
这已在 iPhone 和 Windows Phone 8 移动设备上重现,因此它似乎不是特定于设备的。
有没有人遇到过这种问题?更重要的是,除了总是阅读流的全部内容之外,有没有人知道解决它的方法?
谢谢!
registry - WPD 上层过滤器导致 MTP 设备安装失败
我一直在为 WPD(便携式设备)类编写 KMDF 过滤器驱动程序(基于http://www.osronline.com/article.cfm?article=446中的示例)。驱动程序的目的是对设备的块写入请求。
我在注册表中为 WPD 类设置了 UpperFilters,当插入三星 Galaxy S3 时,我能够捕获发送到设备的 WPD IOCTL(当前驱动程序只将请求转发给下一个驱动程序)。到目前为止,一切都很好。
然后我安装了 Samsung Kies 以查看过滤器驱动程序是否仍然有效,但是当我插入设备时,Windows 尝试安装“Samsung Mobile MTP Device”并失败。我试了几次(我确认驱动程序仍然安装,这不是缺少驱动程序的问题)。当我从 UpperFilters 中删除我的驱动程序时,该设备已安装并可以正常工作。当我放回过滤器时,设备无法启动(代码 10)。使用Windbg,我可以看到我的驱动程序启动,设备被添加,然后驱动程序卸载(我不知道中间发生了什么......)
当我试图将它作为一个较低的过滤器时,它又可以正常工作了。
在网上搜索时,我发现使用 WDM 而不是 WDK 时也会发生这种情况。
为什么在这种情况下放置 UpperFilter 会导致设备无法启动?
有没有办法解决它?
driver - 用于 MTP 设备的 UMDF 过滤器驱动程序
我正在尝试为 Windows 7 上的 MTP 设备编写过滤器驱动程序,以记录文件操作并阻止某些文件操作。我发现在 Windows 中处理 MTP 的驱动程序是一个名为 WpdMtpDr.dll 的 UMDF 驱动程序,我根据这个示例(UMDF 函数驱动程序之上的示例 UMDF 过滤器驱动程序)为它编写了一个 UMDF 过滤器驱动程序,因为我将WpdMtpDr.dll
其视为功能驱动程序。我还以此作为参考来确定驱动程序是作为上过滤器还是下过滤器安装的。我使用 dpinst.exe 安装了驱动程序。下面是我的 INF 文件。
安装没有错误,但在插入 MTP 设备(三星 Galaxy S3)时,过滤器驱动程序不在其驱动程序列表中(通过设备管理器查看),并且从未调用其 DllMain。
我试图在上下过滤器之间切换,它也没有帮助。
我究竟做错了什么?
winapi - 如何异步读取 WPD MTP 数据流?
我的示例应用程序从一个函数中获取一个COM IStream
实例。IPortableDeviceResources::GetStream()
我想使用这个 IStream 对象异步读取设备对象的内容。如何使用异步名字对象来做到这一点?
c# - 在 C# 中访问 Windows 便携式设备自动化 API
我正在编写一个 Metro Style C#/XAML 应用程序,它连接到蓝牙低功耗设备并从中接收数据。Microsoft 共享了一个使用 WPD API 的示例,它可以满足我的所有需求。但它是用 javascript 编写的,并使用 javascript 特定的方法,如 ActiveXObject()。
有没有办法将此代码移植到 C# Metro 应用程序?
windows - Windows 便携式设备 (WPD) 可再发行用于 Windows XP?
我正在尝试在 Windows XP 下使用 Windows 便携式设备 (WPD) API。
MSDN 说Windows XP 下支持Windows Portable Device API :
Windows 7、Windows Vista 和 Windows XP 操作系统支持 WPD 应用程序编程接口。
WPD 对象作为从PortableDeviceApi.dll
.
除了类:
未在 Windows XP(SP3、32 位、Professional)下注册:
并且Windows XP 上不存在PortableDeviceApi.dll :
这意味着必须有一个可再发行的Windows 便携式设备,我可以将其发送给我的 Windows XP 客户。
问题: Windows 便携式设备在哪里可再发行,以便我可以将其发送给我的 Windows XP 客户?
c# - 如何重命名 WPD 设备上的对象
我正在制作一个PortableDeviceLib的分支,它与 WPD/MTP 设备上的存储服务一起使用。并偶然发现了一个问题。我想重命名设备上的文件对象,所以首先想到的是更改对象的属性。但我这样做是个例外。如果我更改,名称会更改,但文件名与预期相同,也不例外。WPD_OBJECT_ORIGINAL_FILE_NAME
WPD_OBJECT_NAME
所以问题是,如何重命名 WPD 设备上的对象?为什么我得到异常更改文件名属性?
我想重命名的原因是,当将文件复制到设备时,如果文件已经存在,它会得到一个扩展名dup0
,dup1
等的副本。