⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 p2k_usb_defines.h

📁 一款usb端口控制手机的程序
💻 H
字号:
#ifndef __NexTest_P2K_USB_DEFINES__
#define __NexTest_P2K_USB_DEFINES__

#define VC_EXTRALEAN		// Exclude rarely-used stuff from Windows headers

//#include <afxwin.h>         // MFC core and standard components
//#include <afxext.h>         // MFC extensions
//#include <afxtempl.h>         // MFC 
//#include <windows.h>
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <winioctl.h>
//#include <afxmt.h>


//---------------------------------------
// USB packet types
enum PCKTYPE
{
	PCK_DATA_CONTROL		= 0,
	PCK_DATA_ISOCHRONOUS	= 1,
	PCK_DATA_BULK			= 2,
	PCK_DATA_INTERRUPT		= 3,
	PCK_COMMAND
};

// USB descriptor type
enum DESCRTYPE
{
	// Device String Descriptor
	DESCR_DEVICE_MANUFACTURER	=0x0000,	// Device String Descriptor: Manufacturer
	DESCR_DEVICE_PRODUCT		=0x0001,	// Device String Descriptor: Product
	DESCR_DEVICE_SERIAL_NUMBER	=0x0002,	// Device String Descriptor: Serial Number
	DESCR_CONFIGURATION			=0x0100,	// Configuration String Descriptor
	DESCR_INTERFACE				=0x0200,	// Interface String Descriptor
	DESCR_DIRECT_STRING			=0x0300,	// Direct String
};
//---------------------------------------

//class CConfig
//{
//public:
//	CConfig(){m_lConfig=-1;m_bInterfaceNumber	= -1;m_sInterfaceName= "";}
//	virtual ~CConfig(){m_lConfig=-1;m_bInterfaceNumber	= -1;m_sInterfaceName= "";}
//	
//	long	m_lConfig;
//	BYTE	m_bInterfaceNumber;
//	CString	m_sInterfaceName;
//};
//typedef CArray<CConfig, CConfig&> CConfigArray;
//
//class CInterface
//{
//public:
//	CInterface(){m_sInterfaceName	= "";m_hInterface= NULL;}
//	virtual ~CInterface(){m_sInterfaceName	= "";m_hInterface= NULL;}
//
//	
//	CString	m_sInterfaceName;
//	HANDLE	m_hInterface;
//};
//typedef CArray<CInterface, CInterface&> CInterfaceArray;

//CConfigArray		m_ConfigArray;		// all interfaces in all configurations
//CInterfaceArray		m_InterfaceArray;	// interfaces and their handles (for current configuration)

//----------------------------------------------

//--------------------------------------------
#define USBWALLY_DEVICE_TYPE            0x8000
#define USBWALLY_MAKE_IOCTL(t,c)\
        (ULONG)CTL_CODE((t), 0x800+(c), METHOD_BUFFERED, FILE_ANY_ACCESS)

#define IOCTL_MOTUSB_GET_DRIVER_VERSION\
            USBWALLY_MAKE_IOCTL(USBWALLY_DEVICE_TYPE, 0)

#define IOCTL_MOTUSB_SET_CONFIGURATION\
            USBWALLY_MAKE_IOCTL(USBWALLY_DEVICE_TYPE, 1)

#define IOCTL_MOTUSB_GET_CONFIG_NUMBER\
            USBWALLY_MAKE_IOCTL(USBWALLY_DEVICE_TYPE, 2)

#define IOCTL_MOTUSB_GET_CONFIG_DESCRIPTOR\
            USBWALLY_MAKE_IOCTL(USBWALLY_DEVICE_TYPE, 3)

#define IOCTL_MOTUSB_GET_STRING_DESCRIPTOR\
            USBWALLY_MAKE_IOCTL(USBWALLY_DEVICE_TYPE, 4)

#define IOCTL_MOTUSB_CLASS_OR_VENDOR_REQUEST\
            USBWALLY_MAKE_IOCTL(USBWALLY_DEVICE_TYPE, 5)

#define IOCTL_MOTUSB_WRITE_ASYNC_DATA\
            USBWALLY_MAKE_IOCTL(USBWALLY_DEVICE_TYPE, 6)

#define IOCTL_MOTUSB_READ_ASYNC_DATA\
            USBWALLY_MAKE_IOCTL(USBWALLY_DEVICE_TYPE, 7)

#define IOCTL_MOTUSB_SELECT_ALTERNATE_SETTING\
            USBWALLY_MAKE_IOCTL   (USBWALLY_DEVICE_TYPE, 8)

#define IOCTL_MOTUSB_INTERFACE_DESCRIPTOR\
            USBWALLY_MAKE_IOCTL(USBWALLY_DEVICE_TYPE, 9)


    // Read GET_STRING_DESCRIPTOR_OUT data structure
typedef struct _GET_STRING_DESCRIPTOR_OUT_STRUCT {
    ULONG   dwTotalSize;         // Size of the string in bytes 
    UCHAR   StringData[1];       // Buffer space for the string data 
} GET_STRING_DESCRIPTOR_OUT_STRUCT, *PGET_STRING_DESCRIPTOR_OUT_STRUCT;

    // Read GET_DRIVER_VERSION data structure
typedef struct _GET_DRIVER_VERSION_STRUCT {
    UCHAR  bcdMajor;    // Current driver verson
    UCHAR  bcdMinor;    // 
} GET_DRIVER_VERSION_STRUCT, *PGET_DRIVER_VERSION_STRUCT;

    // Write SET_CONFIGURATION data structure
typedef struct _SET_CONFIGURATION_STRUCT {
    UCHAR  bConfigurationNum;   // Configuration number
} SET_CONFIGURATION_STRUCT, *PSET_CONFIGURATION_STRUCT;

    // Read GET_CONFIG_DESCRIPTOR_OUT data structure
typedef struct _GET_CONFIG_DESCRIPTOR_OUT_STRUCT {
    ULONG   dwTotalSize;         // Size of the Config descriptor in bytes
    UCHAR   DescriptorData[1];   // Buffer space for the descriptor data 
} GET_CONFIG_DESCRIPTOR_OUT_STRUCT, *PGET_CONFIG_DESCRIPTOR_OUT_STRUCT;

    // Write GET_CONFIG_DESCRIPTOR_IN data structure
typedef struct _GET_CONFIG_DESCRIPTOR_IN_STRUCT {
    UCHAR  bConfigurationNum;   // Configuration number
} GET_CONFIG_DESCRIPTOR_IN_STRUCT, *PGET_CONFIG_DESCRIPTOR_IN_STRUCT;

    // Write CLASS_OR_VENDOR_REQUEST_IN data structure
typedef struct _CLASS_OR_VENDOR_REQUEST_IN_STRUCT {
    UCHAR  bmRequestType;       // 
    UCHAR  bRequest;            // 
    USHORT wValue;              // 
    USHORT wIndex;              // 
    USHORT wLength;             // Size of data in bytes
	UCHAR  DataBuf[1];          // data 
} CLASS_OR_VENDOR_REQUEST_IN_STRUCT, *PCLASS_OR_VENDOR_REQUEST_IN_STRUCT;

    // Write CLASS_OR_VENDOR_REQUEST_IN data structure
typedef struct _CP2K_COMMAND_STRUCT {
    UCHAR  bmRequestType;       // 
    UCHAR  bRequest;            // 
    USHORT wValue;              // 
    USHORT wIndex;              // 
    USHORT wLength;             // Size of data in bytes

	USHORT wSequenceTag;         // 
	USHORT wOpcode;             // 
	USHORT wDataBufLen;     // 
	USHORT wReserved;           // 

	UCHAR  DataBuf[1];          // data 

   	//BYTE data[]={0x00,0x29, 0x00,0x36, 0x00,0x01, 0x00,0x00,   0x00};
} CP2K_COMMAND_STRUCT, *PCP2K_COMMAND_STRUCT;

    // Write GET_STRING_DESCRIPTOR_IN data structure
typedef struct _GET_STRING_DESCRIPTOR_IN_STRUCT {
    UCHAR  bDescriptorType;     // 0x00 = Device String Descriptor
                                // 0x01 = Configuration String Descriptor
                                // 0x02 = Interface String Descriptor
                                // 0x03 = Direct String
    UCHAR  bDescriptorSubType;  // 
                                // For Device String Descriptor (0x00)
                                //     0x00 = Manufacturer
                                //     0x01 = Product
                                //     0x02 = Serial Number
                                // For Configuration String Descriptor (0x01)
                                //     0xnn = Desired configuration number
                                // For Interface String Descriptor (0x02)
                                //     0xnn = Desired interface number
                                // For Direct String (0x03)
                                //     0xnn = Index in string descriptor array
} GET_STRING_DESCRIPTOR_IN_STRUCT, *PGET_STRING_DESCRIPTOR_IN_STRUCT;

    // Write CLASS_OR_VENDOR_REQUEST_OUT data structure
typedef struct _CLASS_OR_VENDOR_REQUEST_OUT_STRUCT {
    ULONG  dwLength;             // Size of data in bytes
    UCHAR  DataBuf[1];          // data 
} CLASS_OR_VENDOR_REQUEST_OUT_STRUCT, *PCLASS_OR_VENDOR_REQUEST_OUT_STRUCT;

    // Write READ_ASYNC_DATA_IN data structure
typedef struct _READ_ASYNC_DATA_IN_STRUCT {
    UCHAR  bTransferType;       // 0x00 = Control
                                // 0x01 = Isochronous
                                // 0x02 = Bulk
                                // 0x03 = Interrupt
    ULONG  dwLength;            // Length of the buffer to read in bytes 
} READ_ASYNC_DATA_IN_STRUCT, *PREAD_ASYNC_DATA_IN_STRUCT;

    // Read READ_ASYNC_DATA data structure
typedef struct _READ_ASYNC_DATA_OUT_STRUCT {
    ULONG  dwLength;            // Length of the buffer to write 
    UCHAR  DataBuf[1];          // data 
} READ_ASYNC_DATA_OUT_STRUCT, *PREAD_ASYNC_DATA_OUT_STRUCT;

// POLL_RESPONSE_DATA_PACKET data structure (max 12 bytes)
typedef struct _POLL_RESPONSE_DATA_PACKET {
    ULONG	dwLength;           // Size of following data in bytes
    BYTE	nStatus;            // Status Byte
	BYTE	nMessages;			// number of messages (max 3)
	WORD	nSizeMsg1;			// size of message buffered in phone
	WORD	nSizeMsg2;			// size of message buffered in phone
	WORD	nSizeMsg3;			// size of message buffered in phone
} POLL_RESPONSE_DATA_PACKET, *PPOLL_RESPONSE_DATA_PACKET;

// QUEUED_MESSAGE_RESPONSE_DATA_PACKET data structure
typedef struct _QUEUED_MESSAGE_RESPONSE_DATA_PACKET {
    ULONG	dwLength;           // Size of following data in bytes
	BYTE	nMessages;			// number of messages returned in this data stage
	BYTE	nQueuedMsgs;		// number of messages still queued in phone
	WORD	nQueuedBytes;		// total number of bytes queued in phone
	WORD	nSizeMsg1;			// size of message 1 buffered in phone
    BYTE	message1[1];        // message 1 
} QUEUED_MESSAGE_RESPONSE_DATA_PACKET, *PQUEUED_MESSAGE_RESPONSE_DATA_PACKET;

// ACCESSORY_MESSAGE_RESPONSE_DATA_PACKET data structure
typedef struct _ACCESSORY_MESSAGE_RESPONSE_DATA_PACKET {
    BYTE	message[512];        // message 
} ACCESSORY_MESSAGE_RESPONSE_DATA_PACKET, *PACCESSORY_MESSAGE_RESPONSE_DATA_PACKET;

typedef struct _WRITE_ASYNC_DATA_STRUCT {
    UCHAR  bTransferType;       // 0x00 = Control
                                // 0x01 = Isochronous
                                // 0x02 = Bulk
                                // 0x03 = Interrupt
    ULONG  dwLength;            // Length of the buffer to write in bytes
    UCHAR  DataBuf[1];          // data 
} WRITE_ASYNC_DATA_STRUCT, *PWRITE_ASYNC_DATA_STRUCT;


typedef struct GET_INTERFACE_DESCRIPTOR_OUT_STRUCT {
    ULONG   dwTotalSize;         // Size of the string in bytes 
    UCHAR   StringData[1];       // Buffer space for the string data 
} GET_INTERFACE_DESCRIPTOR_OUT_STRUCT, *PGET_INTERFACE_DESCRIPTOR_OUT_STRUCT;


typedef struct GET_INTERFACE_DESCRIPTOR_IN_STRUCT {
	UCHAR	bLength;
	UCHAR	bDescriptorType;
	UCHAR	bInterfaceNumber;
	UCHAR	bAlternateSetting;
	UCHAR	bNumEndpoints;
	UCHAR	bInterfaceClass;
	UCHAR	bInterfaceSubClass;
	UCHAR	bInterfaceProtocol;
	UCHAR	iInterface;
	ULONG  dwTotalSize ;

} GET_INTERFACE_DESCRIPTOR_IN_STRUCT, *PGET_INTERFACE_DESCRIPTOR_IN_STRUCT; 

struct MSD_CMD_FORMAT
{
	UCHAR ucOpCode;
	UCHAR ucLogUnitNum;
	UCHAR ucReserve1;
	UCHAR ucReserve2;
	UCHAR ucReserve3;
	UCHAR ucReserve4;
	UCHAR ucReserve5;
	UCHAR ucReserve6;
	UCHAR ucReserve7;
	UCHAR ucReserve8;
	UCHAR ucTargetMode;
	UCHAR ucControl;
};



#endif //__NexTest_CUsbPort__

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -