xpmgr/BuildTools/Include/mtpext.h

76 lines
2.5 KiB
C

/****************************************************************************
*
* (C) COPYRIGHT 2004, MICROSOFT CORP.
*
* VERSION: 1.0
*
* DESCRIPTION:
* Structures and constants needed to issue vendor-specific Media Transfer
* Protocol (MTP) commands through DeviceIOControl mechanism.
*
*****************************************************************************/
#pragma once
//
// Pass this value in the dwIoControlCode argument of IWMDMDevice3::DeviceIoControl
// to execute a direct MTP command
//
#define IOCTL_MTP_CUSTOM_COMMAND 0x3150544d
//
// MTP command request
//
const DWORD MTP_COMMAND_MAX_PARAMS = 5;
const DWORD MTP_RESPONSE_MAX_PARAMS = 5;
//
// MTP response codes
//
const WORD MTP_RESPONSE_OK = 0x2001;
#pragma pack(push, Old, 1)
typedef struct _MTP_COMMAND_DATA_IN
{
WORD OpCode; // Opcode
DWORD NumParams; // Number of parameters passed in
DWORD Params[MTP_COMMAND_MAX_PARAMS]; // Parameters to the command
DWORD NextPhase; // Indicates whether the command has a read data,
// write data, or no data phase.
DWORD CommandWriteDataSize; // Number of bytes contained in CommandWriteData.
BYTE CommandWriteData[1]; // Optional first byte of data to
// write to the device if NextPhase is MTP_NEXTPHASE_WRITE_DATA
} MTP_COMMAND_DATA_IN, *PMTP_COMMAND_DATA_IN;
//
// MTP response block
//
typedef struct _MTP_COMMAND_DATA_OUT
{
WORD ResponseCode; // Response code
DWORD NumParams; // Number of parameters for this response
DWORD Params[MTP_RESPONSE_MAX_PARAMS]; // Parameters of the response
DWORD CommandReadDataSize; // Number of bytes contained in CommandReadData.
BYTE CommandReadData[1]; // Optional first byte of data to
// read from the device if
// MTP_COMMAND_DATA_IN::NextPhase was MTP_NEXTPHASE_READ_DATA
} MTP_COMMAND_DATA_OUT, *PMTP_COMMAND_DATA_OUT;
#pragma pack(pop, Old)
//
// Handy structure size constants
//
#define SIZEOF_REQUIRED_COMMAND_DATA_IN (sizeof(MTP_COMMAND_DATA_IN) - 1)
#define SIZEOF_REQUIRED_COMMAND_DATA_OUT (sizeof(MTP_COMMAND_DATA_OUT) - 1)
//
// NextPhase constants
//
#define MTP_NEXTPHASE_READ_DATA 1
#define MTP_NEXTPHASE_WRITE_DATA 2
#define MTP_NEXTPHASE_NO_DATA 3