Partager via


structure MTP_COMMAND_DATA_IN (mtpext.h)

La structure MTP_COMMAND_DATA_IN contient des commandes personnalisées MTP (Media Transport Protocol) envoyées à l’appareil à l’aide de la méthode IWMDMDevice3 ::D eviceIoControl .

Syntaxe

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;

Membres

OpCode

Code d’opération.

NumParams

Nombre de paramètres passés.

Params[MTP_COMMAND_MAX_PARAMS]

Paramètres de la commande. MTP_COMMAND_MAX_PARAMS est une constante définie avec la valeur 5.

NextPhase

Indique si la commande a une phase de lecture de données, une phase d’écriture de données ou aucune phase de données. Les valeurs valides sont définies dans le tableau suivant.

CommandWriteDataSize

Taille des données de CommandWriteData[1], en octets.

CommandWriteData[1]

Facultatif, premier octet de données à écrire sur l’appareil si NextPhase est MTP_NEXTPHASE_WRITE_DATA.

Remarques

La mémoire tampon d’entrée doit contenir une structure MTP_COMMAND_DATA_IN correctement remplie. À la sortie, le pilote de périphérique remplit la structure MTP_COMMAND_DATA_OUT et l’enregistre dans la mémoire tampon de sortie. Par conséquent, toute requête doit avoir une mémoire tampon d’entrée d’au moins SIZEOF_REQUIRED_COMMAND_DATA_IN octets, qui est défini comme

#define SIZEOF_REQUIRED_COMMAND_DATA_IN (sizeof(MTP_COMMAND_DATA_IN)-1)

et une mémoire tampon de sortie d’au moins SIZEOF_REQUIRED_COMMAND_DATA_OUT octets, qui est définie comme

#define SIZEOF_REQUIRED_COMMAND_DATA_OUT (sizeof(MTP_COMMAND_DATA_OUT)-1)

Il est supposé que toutes les commandes sont autonomes, c’est-à-dire qu’elles peuvent être traitées entièrement en un seul appel. Cela a des implications sur les transferts de données longs, car la segmentation au sens traditionnel n’est pas prise en charge. (Par exemple, pour émettre une lecture de 3 mégaoctets, l’appelant doit s’assurer qu’il alloue une mémoire tampon de sortie de 3 Mo plus SIZEOF_REQUIRED_COMMAND_DATA_OUT octets.) Les transferts de données longs ne doivent pas être effectués avec cette méthode, mais plutôt par le biais d’API de transfert de données normales.

Configuration requise

Condition requise Valeur
En-tête mtpext.h

Voir aussi