mirror of https://github.com/UMSKT/xpmgr.git
76 lines
2.5 KiB
C
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
|
|
|
|
|
|
|