import "unknwn.idl"; // // PTP command request // const DWORD VENDOR_COMMAND_NUMPARAMS_MAX = 5; typedef struct _VENDOR_COMMAND { WORD OpCode; // the opcode DWORD SessionId; // the session id DWORD TransactionId; // the transaction id DWORD Params[VENDOR_COMMAND_NUMPARAMS_MAX]; // parameters }VENDOR_COMMAND, *PVENDOR_COMMAND; // // PTP response block // const DWORD VENDOR_RESPONSE_NUMPARAMS_MAX = 5; typedef struct _VENDOR_RESPONSE { WORD ResponseCode; // response code DWORD SessionId; // the session id DWORD TransactionId; // the transaction id DWORD Params[VENDOR_RESPONSE_NUMPARAMS_MAX]; // parameters }VENDOR_RESPONSE, *PVENDOR_RESPONSE; // // NextPhase constants // const int VENDORCOMMAND_READ_DATA = 3; const int VENDORCOMMAND_WRITE_DATA = 4; const int VENDORCOMMAND_NO_DATA = 5; // // IWiaPtpVendorExt definition // [ object, uuid(D5F0C4B7-7981-4d92-BC1A-D3686BDF2045), helpstring("PTP vendor access"), ] interface IWiaPtpVendorExt : IUnknown { [local] HRESULT VendorCommand( [in] VENDOR_COMMAND *pCommand, [out] VENDOR_RESPONSE *pResponse, [in, out] unsigned int *pReadDataSize, [out, size_is(*pReadDataSize)] unsigned char *pReadData, [in] unsigned int WriteDataSize, [in, size_is(WriteDataSize)] unsigned char *pWriteData, [in] unsigned int NumCommandParams, [in] int NextPhase ); };