Bagikan melalui


struktur MTP_COMMAND_DATA_IN (mtpext.h)

Struktur MTP_COMMAND_DATA_IN berisi perintah kustom Protokol Transportasi Media (MTP) yang dikirim ke perangkat dengan menggunakan metode IWMDMDevice3::D eviceIoControl .

Sintaks

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;

Anggota

OpCode

Kode operasi.

NumParams

Jumlah parameter yang diteruskan.

Params[MTP_COMMAND_MAX_PARAMS]

Parameter ke perintah . MTP_COMMAND_MAX_PARAMS adalah konstanta yang ditentukan dengan nilai 5.

NextPhase

Menunjukkan apakah perintah memiliki fase data baca, fase data tulis, atau tanpa fase data. Nilai yang valid ditentukan dalam tabel berikut.

CommandWriteDataSize

Ukuran data CommandWriteData[1], dalam byte.

CommandWriteData[1]

Opsional, byte pertama data untuk menulis ke perangkat jika NextPhase MTP_NEXTPHASE_WRITE_DATA.

Keterangan

Buffer input diharapkan berisi struktur MTP_COMMAND_DATA_IN yang diisi dengan tepat. Saat keluar, driver perangkat akan mengisi struktur MTP_COMMAND_DATA_OUT dan menyimpannya ke buffer output. Oleh karena itu, setiap permintaan harus memiliki buffer input setidaknya SIZEOF_REQUIRED_COMMAND_DATA_IN byte, yang didefinisikan sebagai

#define SIZEOF_REQUIRED_COMMAND_DATA_IN (sizeof(MTP_COMMAND_DATA_IN)-1)

dan buffer output setidaknya SIZEOF_REQUIRED_COMMAND_DATA_OUT byte, yang didefinisikan sebagai

#define SIZEOF_REQUIRED_COMMAND_DATA_OUT (sizeof(MTP_COMMAND_DATA_OUT)-1)

Diasumsikan bahwa semua perintah mandiri, yaitu, mereka dapat diproses sepenuhnya dalam satu panggilan. Ini memiliki implikasi pada transfer data yang panjang, karena pemotongan dalam arti tradisional tidak didukung. (Misalnya, untuk mengeluarkan bacaan untuk 3megabyte, pemanggil harus memastikan bahwa ia mengalokasikan buffer output 3 MB plus SIZEOF_REQUIRED_COMMAND_DATA_OUT byte.) Transfer data yang panjang tidak boleh dilakukan dengan metode ini, melainkan melalui API transfer data normal.

Persyaratan

Persyaratan Nilai
Header mtpext.h

Lihat juga