windows-nt/Source/XPSP1/NT/public/ddk/inc/ptpusd.h
2020-09-26 16:20:57 +08:00

85 lines
2.6 KiB
C

/****************************************************************************
*
* (C) COPYRIGHT 2000, MICROSOFT CORP.
*
* FILE: ptpusd.h
*
* VERSION: 1.0
*
* DATE: 12/12/2000
*
* AUTHOR: Dave Parsons
*
* DESCRIPTION:
* Structures and constants needed to issue vendor-specific Picture
* Transfer Protocol (PIMA 15740 - digital still camera command
* protocol) commands through the WIA PTP driver.
*
*****************************************************************************/
//
// Pass this value in the dwEscapeCode argument of IWiaItemExtras::Escape
// to execute a PTP vendor command
//
const DWORD ESCAPE_PTP_CLEAR_STALLS = 0x0200;
const DWORD ESCAPE_PTP_VENDOR_COMMAND = 0x0100;
const DWORD ESCAPE_PTP_ADD_OBJ_CMD = 0x0010;
const DWORD ESCAPE_PTP_REM_OBJ_CMD = 0x0020;
const DWORD ESCAPE_PTP_ADD_OBJ_RESP = 0x0040;
const DWORD ESCAPE_PTP_REM_OBJ_RESP = 0x0080;
const DWORD ESCAPE_PTP_ADDREM_PARM1 = 0x0000;
const DWORD ESCAPE_PTP_ADDREM_PARM2 = 0x0001;
const DWORD ESCAPE_PTP_ADDREM_PARM3 = 0x0002;
const DWORD ESCAPE_PTP_ADDREM_PARM4 = 0x0003;
const DWORD ESCAPE_PTP_ADDREM_PARM5 = 0x0004;
//
// PTP command request
//
const DWORD PTP_MAX_PARAMS = 5;
#pragma pack(push, Old, 1)
typedef struct _PTP_VENDOR_DATA_IN
{
WORD OpCode; // Opcode
DWORD SessionId; // Session id
DWORD TransactionId; // Transaction id
DWORD Params[PTP_MAX_PARAMS]; // Parameters to the command
DWORD NumParams; // Number of parameters passed in
DWORD NextPhase; // Indicates whether to read data,
BYTE VendorWriteData[1]; // Optional first byte of data to
// write to the device
} PTP_VENDOR_DATA_IN, *PPTP_VENDOR_DATA_IN;
//
// PTP response block
//
typedef struct _PTP_VENDOR_DATA_OUT
{
WORD ResponseCode; // Response code
DWORD SessionId; // Session id
DWORD TransactionId; // Transaction id
DWORD Params[PTP_MAX_PARAMS]; // Parameters of the response
BYTE VendorReadData[1]; // Optional first byte of data to
// read from the device
} PTP_VENDOR_DATA_OUT, *PPTP_VENDOR_DATA_OUT;
#pragma pack(pop, Old)
//
// Handy structure size constants
//
const DWORD SIZEOF_REQUIRED_VENDOR_DATA_IN = sizeof(PTP_VENDOR_DATA_IN) - 1;
const DWORD SIZEOF_REQUIRED_VENDOR_DATA_OUT = sizeof(PTP_VENDOR_DATA_OUT) - 1;
//
// NextPhase constants
//
const DWORD PTP_NEXTPHASE_READ_DATA = 3;
const DWORD PTP_NEXTPHASE_WRITE_DATA = 4;
const DWORD PTP_NEXTPHASE_NO_DATA = 5;