estrutura MTP_COMMAND_DATA_IN (mtpext.h)

A estrutura MTP_COMMAND_DATA_IN contém comandos personalizados mtp que são enviados para o dispositivo usando o método IWMDMDevice3::D eviceIoControl .

Sintaxe

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;

Membros

OpCode

Código da operação.

NumParams

Número de parâmetros passados.

Params[MTP_COMMAND_MAX_PARAMS]

Parâmetros para o comando . MTP_COMMAND_MAX_PARAMS é uma constante definida com um valor de 5.

NextPhase

Indica se o comando tem uma fase de dados de leitura, uma fase de dados de gravação ou nenhuma fase de dados. Os valores válidos são definidos na tabela a seguir.

CommandWriteDataSize

Tamanho dos dados de CommandWriteData[1], em bytes.

CommandWriteData[1]

Opcional, primeiro byte de dados a serem gravados no dispositivo se NextPhase for MTP_NEXTPHASE_WRITE_DATA.

Comentários

Espera-se que o buffer de entrada contenha uma estrutura de MTP_COMMAND_DATA_IN preenchida adequadamente. Ao sair, o driver do dispositivo preencherá a estrutura MTP_COMMAND_DATA_OUT e a salvará no buffer de saída. Portanto, qualquer solicitação deve ter um buffer de entrada de pelo menos SIZEOF_REQUIRED_COMMAND_DATA_IN bytes, que é definido como

#define SIZEOF_REQUIRED_COMMAND_DATA_IN (sizeof(MTP_COMMAND_DATA_IN)-1)

e um buffer de saída de pelo menos SIZEOF_REQUIRED_COMMAND_DATA_OUT bytes, que é definido como

#define SIZEOF_REQUIRED_COMMAND_DATA_OUT (sizeof(MTP_COMMAND_DATA_OUT)-1)

Supõe-se que todos os comandos sejam independentes, ou seja, eles podem ser processados completamente em uma chamada. Isso tem implicações em transferências de dados longas, porque não há suporte para agrupamento no sentido tradicional. (Por exemplo, para emitir uma leitura para 3megabytes, o chamador teria que garantir que ele aloque um buffer de saída de 3 MB mais SIZEOF_REQUIRED_COMMAND_DATA_OUT bytes.) Transferências de dados longas não devem ser feitas com esse método, mas sim por meio de APIs normais de transferência de dados.

Requisitos

Requisito Valor
Cabeçalho mtpext.h

Confira também