(mtpext.h) MTP_COMMAND_DATA_IN 结构
MTP_COMMAND_DATA_IN 结构包含媒体传输协议 (MTP) 使用 IWMDMDevice3::D eviceIoControl 方法发送到设备的自定义命令。
语法
typedef struct _MTP_COMMAND_DATA_IN {
WORD OpCode;
DWORD NumParams;
DWORD Params[MTP_COMMAND_MAX_PARAMS];
DWORD NextPhase;
DWORD CommandWriteDataSize;
BYTE CommandWriteData[1];
} MTP_COMMAND_DATA_IN, *PMTP_COMMAND_DATA_IN;
成员
OpCode
操作代码。
NumParams
传入的参数数。
Params[MTP_COMMAND_MAX_PARAMS]
命令的参数。 MTP_COMMAND_MAX_PARAMS 是一个定义的常量,值为 5。
NextPhase
指示命令是具有读取数据阶段、写入数据阶段还是无数据阶段。 下表中定义了有效值。
CommandWriteDataSize
CommandWriteData[1]的数据大小,以字节为单位。
CommandWriteData[1]
如果 下一个MTP_NEXTPHASE_WRITE_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)
假定所有命令都是自包含的,也就是说,可以在一次调用中完全处理它们。 这会影响长时间的数据传输,因为不支持传统意义上的分块。 (例如,若要发出 3megabytes 的读取,调用方必须确保分配 3 MB 外加SIZEOF_REQUIRED_COMMAND_DATA_OUT字节的输出缓冲区。) 长数据传输不应使用此方法完成,而应通过普通数据传输 API 完成。
要求
要求 | 值 |
---|---|
Header | mtpext.h |