MTP --- 对象(object)
1. MTP对象模型
MTP将设备上的所有可访问资源(包括文件、文件夹、设备信息、存储分区等)都抽象为对象(Object),每个对象都有一个唯一的Object Handle(16位或32位无符号整数)。这种设计使得:
- 文件和文件夹在协议层面具有统一的操作接口
- 可以通过相同的机制(如
GetObjectHandles、GetObjectInfo等命令)查询和操作
2. 文件和文件夹的区别
尽管都使用Object Handle,但文件和文件夹在MTP中有明确的类型标识:
- 文件对象:
- 类型码通常为
0x0001(通用文件)或0x0002(关联文件,如缩略图) - 包含文件名、大小、修改时间等元数据
- 类型码通常为
- 文件夹对象:
- 类型码为
0x0003 - 可包含子对象(文件或文件夹)
- 支持层级结构(通过
ParentObjectHandle字段表示父级)
- 类型码为
3. 使用示例
先发送 prop_code:0xDC02 获取对象句柄的类型,如果是文件夹,返回 MTP_FORMAT_ASSOCIATION,如果是文件返回 MTP_FORMAT_UNDEFINED 或其他
再发送 prop_code:0xFFFF 获取对象句柄的所有信息

浙公网安备 33010602011771号