MTP --- 对象(object)

1. MTP对象模型

MTP将设备上的所有可访问资源(包括文件、文件夹、设备信息、存储分区等)都抽象为对象(Object),每个对象都有一个唯一的Object Handle(16位或32位无符号整数)。这种设计使得:

  • 文件和文件夹在协议层面具有统一的操作接口
  • 可以通过相同的机制(如GetObjectHandlesGetObjectInfo等命令)查询和操作

2. 文件和文件夹的区别

尽管都使用Object Handle,但文件和文件夹在MTP中有明确的类型标识:

  • 文件对象:
    • 类型码通常为0x0001(通用文件)或0x0002(关联文件,如缩略图)
    • 包含文件名、大小、修改时间等元数据
  • 文件夹对象:
    • 类型码为0x0003
    • 可包含子对象(文件或文件夹)
    • 支持层级结构(通过ParentObjectHandle字段表示父级)

3. 使用示例

先发送 prop_code:0xDC02 获取对象句柄的类型,如果是文件夹,返回 MTP_FORMAT_ASSOCIATION,如果是文件返回 MTP_FORMAT_UNDEFINED 或其他

再发送 prop_code:0xFFFF 获取对象句柄的所有信息

  

posted @ 2025-04-14 14:41  流水灯  阅读(24)  评论(0)    收藏  举报