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