структура MTP_COMMAND_DATA_IN (mtpext.h)

Структура 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]

Необязательный, первый байт данных для записи на устройство, если nextPhase является 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)

Предполагается, что все команды являются автономными, то есть могут обрабатываться полностью в одном вызове. Это влияет на длительную передачу данных, так как фрагментирование в традиционном смысле не поддерживается. (Например, чтобы выполнить чтение в течение 3мегабайт, вызывающему объекту необходимо обеспечить выделение выходного буфера размером 3 МБ плюс SIZEOF_REQUIRED_COMMAND_DATA_OUT байт.) Длительную передачу данных следует выполнять не с помощью этого метода, а с помощью обычных API-интерфейсов передачи данных.

Требования

Требование Значение
Заголовок mtpext.h

См. также раздел