MTP_COMMAND_DATA_OUT 结构 (mtpext.h)
MTP_COMMAND_DATA_OUT结构包含媒体传输协议 (MTP) 响应,设备驱动程序在退出对 IWMDMDevice3::D eviceIoControl 的调用时填充这些响应。
语法
typedef struct _MTP_COMMAND_DATA_OUT {
WORD ResponseCode;
DWORD NumParams;
DWORD Params[MTP_RESPONSE_MAX_PARAMS];
DWORD CommandReadDataSize;
BYTE CommandReadData[1];
} MTP_COMMAND_DATA_OUT, *PMTP_COMMAND_DATA_OUT;
成员
ResponseCode
响应代码。
NumParams
此响应的参数数。
Params[MTP_RESPONSE_MAX_PARAMS]
响应的参数。 MTP_RESPONSE_MAX_PARAMS 是一个定义的常量,值为 5。
CommandReadDataSize
CommandReadData[1] 的数据大小,以字节为单位。
CommandReadData[1]
可选,如果MTP_COMMAND_DATA_IN,则从设备读取的第一个字节数据 。NextPhase 是MTP_NEXTPHASE_READ_DATA。
注解
输入缓冲区应包含适当填充 MTP_COMMAND_DATA_IN 结构。 退出时,设备驱动程序将填写 MTP_COMMAND_DATA_OUT 结构并将其保存到输出缓冲区。 因此,任何请求的输入缓冲区必须至少为 SIZEOF_REQUIRED_COMMAND_DATA_IN 个字节,定义如下:
#define SIZEOF_REQUIRED_COMMAND_DATA_IN (sizeof(MTP_COMMAND_DATA_IN)-1)
任何请求还必须具有至少 SIZEOF_REQUIRED_COMMAND_DATA_OUT 字节的输出缓冲区,定义如下:
#define SIZEOF_REQUIRED_COMMAND_DATA_OUT (sizeof(MTP_COMMAND_DATA_OUT)-1)
假定所有命令都是自包含的,也就是说,可以在一次调用中完全处理它们。 这会影响长时间的数据传输,因为不支持传统意义上的分块。 (例如,若要发出 3 mb 的读取,调用方必须确保分配 3 MB 外加 SIZEOF_REQUIRED_COMMAND_DATA_OUT 字节的输出缓冲区。) 不应使用此方法完成长时间数据传输,而应通过普通数据传输 API 完成。
要求
要求 | 值 |
---|---|
Header | mtpext.h |