Compartir a través de


estructura MTP_COMMAND_DATA_IN (mtpext.h)

La estructura de MTP_COMMAND_DATA_IN contiene comandos personalizados del Protocolo de transporte multimedia (MTP) que se envían al dispositivo mediante el método IWMDMDevice3::D eviceIoControl .

Sintaxis

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;

Miembros

OpCode

Código de operación.

NumParams

Número de parámetros pasados.

Params[MTP_COMMAND_MAX_PARAMS]

Parámetros para el comando. MTP_COMMAND_MAX_PARAMS es una constante definida con un valor de 5.

NextPhase

Indica si el comando tiene una fase de lectura de datos, una fase de datos de escritura o ninguna fase de datos. Los valores válidos se definen en la tabla siguiente.

CommandWriteDataSize

Tamaño de datos de CommandWriteData[1], en bytes.

CommandWriteData[1]

Opcional, primero byte de datos que se van a escribir en el dispositivo si NextPhase está MTP_NEXTPHASE_WRITE_DATA.

Comentarios

Se espera que el búfer de entrada contenga una estructura de MTP_COMMAND_DATA_IN rellenada correctamente. Al salir, el controlador de dispositivo rellenará la estructura de MTP_COMMAND_DATA_OUT y la guardará en el búfer de salida. Por lo tanto, cualquier solicitud debe tener un búfer de entrada de al menos SIZEOF_REQUIRED_COMMAND_DATA_IN bytes, que se define como

#define SIZEOF_REQUIRED_COMMAND_DATA_IN (sizeof(MTP_COMMAND_DATA_IN)-1)

y un búfer de salida de al menos SIZEOF_REQUIRED_COMMAND_DATA_OUT bytes, que se define como

#define SIZEOF_REQUIRED_COMMAND_DATA_OUT (sizeof(MTP_COMMAND_DATA_OUT)-1)

Se supone que todos los comandos son independientes, es decir, se pueden procesar completamente en una llamada. Esto tiene implicaciones en las transferencias de datos largas, ya que no se admite la fragmentación en el sentido tradicional. (Por ejemplo, para emitir una lectura para 3megabytes, el autor de la llamada tendría que asegurarse de que asigna un búfer de salida de 3 MB más SIZEOF_REQUIRED_COMMAND_DATA_OUT bytes). Las transferencias de datos largas no deben realizarse con este método, sino a través de las API normales de transferencia de datos.

Requisitos

Requisito Valor
Header mtpext.h

Consulte también