MTP_COMMAND_DATA_IN 結構 (mtpext.h)
MTP_COMMAND_DATA_IN 結構包含媒體傳輸通訊 協定 (MTP) 使用 IWMDMDevice3::D eviceIoControl 方法傳送至裝置的自定義命令。
語法
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;
成員
OpCode
作業程序代碼。
NumParams
傳入的參數數目。
Params[MTP_COMMAND_MAX_PARAMS]
命令的參數。 MTP_COMMAND_MAX_PARAMS 是值為5的已定義常數。
NextPhase
指出命令是否有讀取數據階段、寫入數據階段或沒有數據階段。 下表定義有效的值。
CommandWriteDataSize
CommandWriteData[1]的數據大小,以位元組為單位。
CommandWriteData[1]
如果 NextPhase MTP_NEXTPHASE_WRITE_DATA,則為選擇性,要寫入裝置的第一個字節數據。
備註
輸入緩衝區應該包含適當填入 MTP_COMMAND_DATA_IN 結構。 結束時,設備驅動器會填寫 MTP_COMMAND_DATA_OUT 結構,並將它儲存到輸出緩衝區。 因此,任何要求都必須有至少SIZEOF_REQUIRED_COMMAND_DATA_IN個字節的輸入緩衝區,其定義為
#define SIZEOF_REQUIRED_COMMAND_DATA_IN (sizeof(MTP_COMMAND_DATA_IN)-1)
和至少SIZEOF_REQUIRED_COMMAND_DATA_OUT個字節的輸出緩衝區,定義為
#define SIZEOF_REQUIRED_COMMAND_DATA_OUT (sizeof(MTP_COMMAND_DATA_OUT)-1)
假設所有命令都是獨立的,也就是說,可以在一個呼叫中完全處理它們。 這會影響冗長的數據傳輸,因為不支援傳統意義中的區塊化。 (例如,若要發出 3megabytes 的讀取,呼叫端必須確保它配置 3 MB 的輸出緩衝區加上 SIZEOF_REQUIRED_COMMAND_DATA_OUT bytes。) 冗長的數據傳輸不應使用此方法完成,而是透過一般數據傳輸 API。
規格需求
需求 | 值 |
---|---|
標頭 | mtpext.h |