Condividi tramite


struttura MTP_COMMAND_DATA_OUT (mtpext.h)

La struttura MTP_COMMAND_DATA_OUT contiene risposte MTP (Media Transport Protocol) compilate dal driver di dispositivo all'uscita da una chiamata a IWMDMDevice3::D eviceIoControl.

Sintassi

typedef struct _MTP_COMMAND_DATA_OUT {
  WORD  ResponseCode;
  DWORD NumParams;
  DWORD Params[MTP_RESPONSE_MAX_PARAMS];
  DWORD CommandReadDataSize;
  BYTE  CommandReadData[1];
} MTP_COMMAND_DATA_OUT, *PMTP_COMMAND_DATA_OUT;

Members

ResponseCode

Codice di risposta.

NumParams

Numero di parametri per questa risposta.

Params[MTP_RESPONSE_MAX_PARAMS]

Parametri della risposta. MTP_RESPONSE_MAX_PARAMS è una costante definita con un valore pari a 5.

CommandReadDataSize

Dimensioni dei dati di CommandReadData[1], in byte.

CommandReadData[1]

Facoltativo, primo byte di dati da leggere dal dispositivo se MTP_COMMAND_DATA_IN. NextPhase è MTP_NEXTPHASE_READ_DATA.

Commenti

Il buffer di input deve contenere una struttura MTP_COMMAND_DATA_IN compilata in modo appropriato. All'uscita, il driver di dispositivo compilerà la struttura MTP_COMMAND_DATA_OUT e la salverà nel buffer di output. Pertanto, qualsiasi richiesta deve avere un buffer di input di almeno SIZEOF_REQUIRED_COMMAND_DATA_IN byte, definito come segue:

#define SIZEOF_REQUIRED_COMMAND_DATA_IN (sizeof(MTP_COMMAND_DATA_IN)-1)

Qualsiasi richiesta deve avere anche un buffer di output di almeno SIZEOF_REQUIRED_COMMAND_DATA_OUT byte, definito come segue:

#define SIZEOF_REQUIRED_COMMAND_DATA_OUT (sizeof(MTP_COMMAND_DATA_OUT)-1)

Si presuppone che tutti i comandi siano autonomi, vale a dire che possono essere elaborati completamente in una sola chiamata. Ciò ha implicazioni sui trasferimenti di dati lunghi, perché la suddivisione in blocchi nel senso tradizionale non è supportata. Ad esempio, per eseguire una lettura per 3megabyte, il chiamante deve assicurarsi che allochi un buffer di output di 3 MB più SIZEOF_REQUIRED_COMMAND_DATA_OUT byte. I trasferimenti di dati lunghi non devono essere eseguiti con questo metodo, ma piuttosto tramite le NORMALI API di trasferimento dei dati.

Requisiti

Requisito Valore
Intestazione mtpext.h

Vedi anche

IWMDMDevice3::D eviceIoControl

MTP_COMMAND_DATA_IN

Strutture