MTP_COMMAND_DATA_IN-Struktur (mtpext.h)

Die MTP_COMMAND_DATA_IN-Struktur enthält benutzerdefinierte MTP-Befehle (Media Transport Protocol), die mithilfe der IWMDMMDevice3::D eviceIoControl-Methode an das Gerät gesendet werden.

Syntax

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;

Member

OpCode

Vorgangscode.

NumParams

Anzahl der übergebenen Parameter.

Params[MTP_COMMAND_MAX_PARAMS]

Parameter für den Befehl. MTP_COMMAND_MAX_PARAMS ist eine definierte Konstante mit dem Wert 5.

NextPhase

Gibt an, ob der Befehl über eine Datenlesephase, eine Schreibdatenphase oder keine Datenphase verfügt. Die gültigen Werte werden in der folgenden Tabelle definiert.

CommandWriteDataSize

Die Datengröße von CommandWriteData[1] in Bytes.

CommandWriteData[1]

Optional, erstes Byte von Daten, die auf das Gerät geschrieben werden sollen, wenn NextPhase MTP_NEXTPHASE_WRITE_DATA ist.

Hinweise

Es wird erwartet, dass der Eingabepuffer eine entsprechend ausgefüllte MTP_COMMAND_DATA_IN Struktur enthält. Beim Beenden füllt der Gerätetreiber die MTP_COMMAND_DATA_OUT-Struktur aus und speichert sie im Ausgabepuffer. Daher muss jede Anforderung über einen Eingabepuffer von mindestens SIZEOF_REQUIRED_COMMAND_DATA_IN Bytes verfügen, der als definiert ist

#define SIZEOF_REQUIRED_COMMAND_DATA_IN (sizeof(MTP_COMMAND_DATA_IN)-1)

und einen Ausgabepuffer von mindestens SIZEOF_REQUIRED_COMMAND_DATA_OUT Bytes, der als definiert ist

#define SIZEOF_REQUIRED_COMMAND_DATA_OUT (sizeof(MTP_COMMAND_DATA_OUT)-1)

Es wird davon ausgegangen, dass alle Befehle eigenständig sind, d. h. sie können vollständig in einem Aufruf verarbeitet werden. Dies hat Auswirkungen auf langwierige Datenübertragungen, da die Blockerstellung im herkömmlichen Sinne nicht unterstützt wird. (Um beispielsweise einen Lesevorgang für 3 Mb auszugeben, muss der Aufrufer sicherstellen, dass er einen Ausgabepuffer von 3 MB plus SIZEOF_REQUIRED_COMMAND_DATA_OUT Bytes zuweist.) Langwierige Datenübertragungen sollten nicht mit dieser Methode erfolgen, sondern über normale Datenübertragungs-APIs.

Anforderungen

Anforderung Wert
Header mtpext.h

Weitere Informationen