- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
WPD在 Windows XP(如果重要的话是 SP1)上不能正常工作,即使 Microsoft states it does .
WPD 问题:
IPortableDeviceManager.GetDevices
调用在 Win XP 上找不到任何设备,而在 Windows 7 上找到所有连接的摄像头。
其他一些人遇到了同样的问题,WPD 不能在 XP 上运行,没有解决方案: 1 2
我决定使用 WIA 重新实现该功能。
WIA 自动化/WIA 接口(interface)问题:
WIA 自动化
在与相机交互时仅提供愚蠢的对话框 - 我需要从代码中执行此操作WIA 接口(interface)
进行编程,以使用 WIA 完成较低级别的任务。我还没有找到任何示例如何从 C# 使用 WIA 接口(interface)(还发现一些迹象表明这根本不可能或至少不可能 very hard to do )因此我查看了 WIA 2.0(wiaaut.dll 的包装器):
我在这里没有选择......你能推荐一个替代方案来为连接到在 Windows XP 上运行的计算机的相机提供以下功能吗?
最佳答案
Microsoft 声称在安装了 WMP11 的 XP 上支持 WPD 和 MTP,事实确实如此!
然而,默认情况下,在 XP 上,相机设备很可能会加载 PTP 驱动程序堆栈。您可以通过查看“设备管理器”、“属性”、“驱动程序”选项卡中的“驱动程序详细信息”页面来检查这一点,您应该在其中看到:
也就是说,除非您的相机供应商为您在 XP 上的设备提供了自定义的 WPD 兼容 INF 文件。大多数没有,可能是由于依赖 WMP10/11。
然而,创建您自己的自定义 INF 以启用 MTP 相对容易,有关这方面的详细信息在 Microsoft Media Transfer Protocol Porting Kit 中给出。在“为 MTP 设备提供自定义 INF 文件”部分下的 mtpdev.chm 帮助文件中。
但是那里的细节似乎有些不完整,关于 C:\Windows\Inf\WpdMtp.inf installed with Windows Media Player 11 的注释中所需的部分还有更多信息:
;;******************************************************************************
;; The following are to be used in vendor specific "Includes" and "Needs" sections.
;; Specifically, the INF should contain:
;;
;; [DDInstall]
;; Include = wpdmtp.inf
;; Needs = WPD.MTP
;;
;; [DDInstall.hw]
;; Include = wpdmtp.inf
;; Needs = WPD.MTP.Registration <- includes all default legacy API and autoplay registration for the device
;; - OR -
;; Needs = WPD.MTP.RegistrationBasic <- only do minimum registration, no legacy API or autoplay
;;
;; [DDInstall.Services]
;; Include = wpdmtp.inf
;; Needs = WPD.MTP.Services
;;
;; [DDInstall.CoInstallers]
;; Include = wpdmtp.inf
;; Needs = WPD.MTP.CoInstallers
;;
;; [DDInstall.Wdf]
;; Include = wpdmtp.inf
;; Needs = WPD.MTP.Wdf
;; UmdfServiceOrder=WpdMtpDriver
;;
;;******************************************************************************
例如,对于尼康 D90,可以创建以下 INF 文件:
[Version]
Signature="$WINDOWS NT$"
Class=WPD
ClassGUID={EEC5AD98-8080-425f-922A-DABF3DE3F69A}
Provider=%Provider%
DriverVer=02/22/2006,5.2.5326.4762
[Manufacturer]
%MfgName%=Nikon
[Nikon]
%Nikon.DeviceDesc%=Nikon_MTP, USB\VID_04B0&PID_0421
[Nikon_MTP]
Include = wpdmtp.inf
Needs = WPD.MTP
[Nikon_MTP.hw]
Include = wpdmtp.inf
Needs = WPD.MTP.RegistrationBasic
[Nikon_MTP.Services]
Include = wpdmtp.inf
Needs = WPD.MTP.Services
[Nikon_MTP.CoInstallers]
Include = wpdmtp.inf
Needs = WPD.MTP.CoInstallers
[Nikon_MTP.Wdf]
Include = wpdmtp.inf
Needs = WPD.MTP.Wdf
UmdfServiceOrder=WpdMtpDriver
[Strings]
Nikon.DeviceDesc = "Nikon D90 MTP Device"
MfgName = "Nikon"
Provider = "Nikon"
要支持不同的设备更改或添加其他项目,请在 [Nikon] 部分下为您的设备使用正确的 PID 和 VID。您可以在设备管理器的“详细信息”选项卡上找到这些,方法是从下拉列表中选择“Hadrware Ids”。如果您的相机来自其他制造商,您可能还想更改所有对“Nikon”的引用。
在记事本中创建 INF 文件后,以适当的名称保存,例如 NikonD90.INF。然后:
现在在设备管理器中,您应该会看到相机设备已从“成像设备”中移出,现在显示在“可移植设备”下。此外,在驱动程序详细信息中,您应该会看到以下文件,表明正在使用通用 WPD MTP 类驱动程序(而不是之前的 PTP):
您现在应该能够使用 IPortableDeviceManager.GetDevices 成功枚举您的 MTP 设备,并使用所有其他 API 函数发送自定义 MTP 命令。查看MSDN posts by dimeby8了解详情。
上述解决方案允许您使用通用 API 构建应用程序,这些应用程序可以在 32 位或 64 位的 Windows XP 到 Windows 7 上运行,而无需更改代码。
关于c# - Windows XP 上 WPD/WIA 的替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2905921/
我想通过 IPortableDeviceValues 获取 WPD 上图像文件的宽度和高度。 根据Windows Dev Center每个类型为 WPD_CONTENT_TYPE_IMAGE 的对象(
以下 uid 是随机生成的还是我需要从某个地方找到它,如果是的话从哪里找到?来自 header stdafx.h // This method submits a ReadMeasurement re
编辑:请求了完整的源代码。下面是一个准系统实现,以复制该错误。 删除了内容枚举,但无论如何都会在第一个对象调用时发生崩溃。在这种情况下,WPD_DEVICE_OBJECT_ID 对象。 LINK TO
我正在为当前使用 Windows Image Acquisition (WIA) 的应用程序添加 Windows 可移植设备 (WPD) 支持。 WIA 通过 IWiaItem::DeviceDlg
我的 Android 应用程序生成一些文件,我需要将这些文件与我的主 PC 程序同步,反之亦然。我执行此操作的常用方法是使用 FTP 帐户,我的 Android 应用程序和我的 PC 程序都可以在其中
在我的项目中,我使用 Windows 可移植设备 (WPD) API 来枚举移动设备的内容。 WPD API Enumeration Guide .我能够枚举每个对象并查看它们的属性,如 API 编程
我需要枚举 MTP android 设备的内容并将文件从设备传输到 Windows PC。 按照此处找到的指南 Transferring Content from a Device to a PC我试
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
我想通过 MTP 将至少一个文件复制到 Windows Phone。按照本教程,我可以连接到手机并将文件从手机复制到计算机: WPD: Transferring Content但是我无法以相反的方式复
WPD在 Windows XP(如果重要的话是 SP1)上不能正常工作,即使 Microsoft states it does . WPD 问题: IPortableDeviceManager.Get
我找不到任何关于将 .wpd 文件(WPS SAS 表)导入 R 的内容。有谁知道如何在 R 中导入这些表? 我知道您可以使用外来和 Hmisc 库来导入 sas7bdat 文件,但到目前为止我还没有
我一直在尝试使用 WPD Apis 在 c# 中编写示例应用程序,以将图像文件传输到连接的 WPD 支持设备。我一直在关注THIS关联。我的问题是,每次我尝试传输文件时,我都会收到错误消息:值不在预期
我正在编写一个程序来自动执行一些在检测到可移动设备时必须完成的任务。最初仅使用文件流。当我意识到并非所有可移动设备都可以通过这种方式访问时,我开始使用 SHFileOperation,但现在我意识
我正在开发一个在 Windows 上运行的 PC C++ 应用程序。该应用程序应使用 MTP 与通过 USB 连接的安卓手机进行通信。本意是不挂载存储卡。我发现 Windows 有支持 MTP 的 W
我想编写一个应用程序,将 MP3 文件复制到 SanDisk Sansa M240。 SanDisk 没有驱动器盘符,使用 MTP 进行文件传输。我偶然发现了连接到设备的示例:http://blogs
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 9 年前。 Improve t
是否有任何可用于 VB.net 的库使我能够轻松访问 MTP 设备?我希望能够找出连接了哪些设备,列出它们的内容并在它们之间复制文件。 到目前为止,我所看到的一切(无论是在 Stack Overflo
问题已使用 NuGet 包 PortableDevices 进行测试,解决方案来自此处:Accessing an MTP device in Visual Basic .NET 我想从三星 Andro
我正在尝试通过电缆将 android 设备连接到(Windows 7 64 位)PC,然后以编程方式将一些文件从 android 检索到 pc。 (注意:我需要这个用于特定设备,Moverio BT-
我是一名优秀的程序员,十分优秀!