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

另请参阅

IWMDMDevice3::D eviceIoControl

MTP_COMMAND_DATA_IN

结构