全网最佳IP代理服务商-

4.8元解锁GTP.特价118/年


如果您从事外贸、海外视频博主、海外推广、海外广告投放,欢迎选择我们。
让您轻易使用国外主流的聊天软件、视频网站以及社交网络等等

国内苹果id怎苹果美国id充值限购怎么解封么改美国

本文中,我们将重点讨论为什么 iphone 没有像我们期望的使用 MTP 协议的设备那样提供一整套存储操作,还将研究 USB 接口类 / 子类和 WPD_DEVICE_PROTOCOL 属性之间不匹配的原因。为了回答这些问题,我们将了解如何创建 WPD 设备、如何 挂载 存储以及如何设置 WPD 属性。

考虑到 iPhone 中的 WPD 协议属性,我们期望有一组更丰富的选项来与设备交互,可以通过查看设备的接口描述符来快速回答为什么 iPhone 表现为 PTP 设备。

iPhone 和小米在 PTP 和 MTP 模式下的描述如下:iPhone 有多种配置,但无论选择哪一种,创建 WPD 的接口 PDO 总是包含类 6 和子类 1 的接口。

尽管已经回答了最大的问题,但仍然有一些细节,比如为什么 iPhone 不允许创建或复制任何东西到它,而另一方面,小米即使使用 PTP 也允许创建对象,所以对于喜欢深入了解事物的人来说,仅仅浏览界面描述是不够的。

从上面提到的三个二进制文件中,WpdMtpDr 是将在 WUDFHost 中运行的主要 WPD MTP 驱动程序。这是一个 UMDFv1 驱动程序,它将基于 COM 并用 C++ 编写,基于 WpdWudfSampleDriver,几乎就不需要逆转,但该驱动程序没有更新为使用 UMDFv2,因为 UMDFv1 几乎已经被弃用,并且几乎不支持新功能。

如上所述,入口点是 OnDeviceAdd 例程。在这个函数中,创建了 CDevice 对象,它将我们带到 CDevice::OnPrepareHardware 例程,在该例程中国内苹果id怎么改美国,通过调用 WpdBaseDriver::Initialize 来初始化 WpdBaseDriver。不幸的是,这是 Sample 代码和 WpdMtpDr 开始出现差异的部分。示例代码没有真正的设备可以通信,但在本文的示例中,WpdMtp.dll 的作用所在,充当 WpdMtpDr 和真正设备之间的粘合剂。MTP 核心库包含 CMtpDevice 类,它表示真实的设备。在 WpdBaseDriver 初始化期间,加载 MTP 核心库,并打开与设备的会话,如以下简化代码片段所示:

加载 MTP 核心模块后,触发初始化例程来检索 MTP DeviceInfo Dataset。这是发送到设备的初始 MTP 请求之一,DeviceInfo 结构在其返回时填充。值得注意的是,该结构包含关键信息,如模型、制造商和各种 MTP 版本标识符。这些信息在稍后设置 WPD 属性时起着至关重要的作用苹果美国id充值限购怎么解封

MTP 核心发送请求并将响应解析为 CDeviceInfo 结构,而 WpdMtpDr 利用缓存系统存储指向 WpdMtp 返回的类的 COM 指针。这种方法可以防止频繁地向设备重新发出 PTP/MTP 请求,从而优化 I/O 操作。

在 UM 中,WPD 应用程序通常使用 WPD API 构建 WPD 命令,WPD API 将序列化该 WPD 命令并将其打包到 IOCTL 请求中,这将到达驱动程序,驱动程序将反序列化命令并相应地采取行动。

当 WPD 驱动程序第一次尝试获取设备的 StorageInfo 时,该请求将通过 MTP 核心模块。该模块向设备发送 PTP/MTP 操作请求,并将结果 StorageInfo 数据集返回给驱动程序。

因此,如果看一下 iPhone 是如何响应这个请求的,将能够根据上面提到的三个字段来确定 Storage 对象的行为。

我们可以从上图得到以下信息:存储类型 == 固定 RAM,这是相当标准的移动设备。文件系统类型 == DCF, DCF 代表 Camera FS 的设计规则,你可以会从著名的 DCIM 根目录中认出它。DCF 标准定义了在目录和文件上设置只读属性的选项。访问能力 == 只读,不能删除对象,这是致命的。这将定义对 Storage 对象的访问限制,操作系统将遵守这些限制。例如,这将影响 iPhone 的上下文菜单中显示的选项。

国内苹果id怎苹果美国id充值限购怎么解封么改美国

这就是为什么 iPhone 上的文件选项如此有限。为了便于比较,下图显示了使用 PTP 插入小米设备时的 StorageInfo 数据集。

事实证明,这就是为什么即使使用 PTP 协议连接,也能够在小米设备上创建对象的原因。然而,值得注意的是小米的 MTP 响应器似乎有问题,无论在设备上选择 PTP 还是 MTP,在响应 GetStorageInfo 请求时都会返回相同的 Dataset,至少在红米 Note 8 模型上是这样。

这样,我们就可以更清楚地理解 Apple 设备的运行方式,以及如何为设备配置 WPD 属性。

接下来总结一下,当我们在主机上安装 iTunes 时会发生什么,以及它是如何实现诸如从设备复制文件之类的操作的。

如上所述,由于 Storage 对象中的限制,WPD API 将仅在 iPhone 上提供有限的操作子集,然而,当安装 iTunes 后,它增加了一个不同的层,可以更全面地访问设备。

正如我们在 AppleLowerFilter 中看到的,一旦 iTunes 被安装,它将允许设备选择一个不同的 USB 配置描述符。没有 iTunes,我们被限制在配置 1,另一方面,一旦 iTunes 被默认安装,选择的配置将是 3。以下是这两种配置及其接口:

这两个驱动程序将成为被苹果公司称为 苹果移动设备 USB 设备 设备的一部分,该设备使用专有协议而不是 MTP 或 PTP 与 iPhone 进行通信苹果美国id充值限购怎么解封,可以通过查看 libimobiledevice 的源代码来了解有关该协议的更多信息。一旦驱动程序安装并运行,iTunes 本身就会使用标准 WPD API 调用和定制的苹果特定命令的组合与 iPhone 进行通信。这使得 iTunes 能够提供从设备中复制文件、管理应用程序和备份以及更新设备固件等功能。

下图提供了 iPhone 的整个设备堆栈的简化概述,包括安装 iTunes 和创建 AppleUsbMux 设备的场景:

在本文中,我们探讨了苹果的 USB 低级过滤器是如何在 Windows 设备上工作的,以及它在提供不同体验方面的作用,还深入研究了 Windows 便携式设备 ( WPD ) 和用户模式驱动程序框架 ( UMDF ) 等主题,以更好地理解苹果设备堆栈的内部工作原理。

我们谈到 WPD 设备是如何初始化和设置的,这帮助我们了解了为什么 WPD 设备协议属性和 Apple 设备中接口描述符定义的类之间存在不匹配。我们还研究了 WPD 设备的 Storage 对象是如何设置的,以及它如何在不使用第三方软件的情况下在 iPhone 上操作的限制中发挥作用。最后,我们简要讨论了安装 iTunes 对苹果移动设备栈的影响,以及 iTunes 如何妥善管理设备内容。

苹果希望保护某些信息,限制与 iPhone 存储交互的现成选项,但如果有一个更混合的解决方案,用户可以在一定的限制下拥有更大的灵活性。虽然 iTunes 为管理 iPhone 内容提供了一个强大的解决方案,但有时安装第三方软件可能不是一个选择。然而,随着 iTunes 最近作为微软商店应用程序的发布,这种限制可能会减少。国内苹果id怎苹果美国id充值限购怎么解封么改美国

THE END
喜欢就支持一下吧
Everyone has its disadvantage just like the god bites the apple. the bigger disadvantage you have, the more the god appreciate it.
每个人都会有缺陷,就像被上帝咬过的苹果,有的人缺陷比较大,正是因为上帝特别喜欢他的芬芳
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称