📄 testdlg.h
字号:
// TestDlg.h : header file
//
#if !defined(AFX_TESTDLG_H__4D455F7B_E393_446A_B2CE_34D4E814F67A__INCLUDED_)
#define AFX_TESTDLG_H__4D455F7B_E393_446A_B2CE_34D4E814F67A__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
/////////////////////////////////////////////////////////////////////////////
// CTestDlg dialog
typedef struct __usb_Dev_Descriptor__ {
UCHAR bLength;
UCHAR bDescriptorType;
USHORT bcdUSB;
UCHAR bDeviceClass;
UCHAR bDeviceSubClass;
UCHAR bDeviceProtocol;
UCHAR bMaxPacketSize0;
USHORT idVendor;
USHORT idProduct;
USHORT bcdDevice;
UCHAR iManufacturer;
UCHAR iProduct;
UCHAR iSerialNumber;
UCHAR bNumConfigurations;
} Usb_Device_Descriptor, *pUsb_Device_Descriptor;
typedef struct __usb_Config_Descriptor__ {
UCHAR bLength;
UCHAR bDescriptorType;
USHORT wTotalLength;
UCHAR bNumInterfaces;
UCHAR bConfigurationValue;
UCHAR iConfiguration;
UCHAR bmAttributes;
UCHAR MaxPower;
} Usb_Configuration_Descriptor, *pUsb_Configuration_Descriptor;
typedef struct _USB_INTERFACE_DESCRIPTOR {
UCHAR bLength;
UCHAR bDescriptorType;
UCHAR bInterfaceNumber;
UCHAR bAlternateSetting;
UCHAR bNumEndpoints;
UCHAR bInterfaceClass;
UCHAR bInterfaceSubClass;
UCHAR bInterfaceProtocol;
UCHAR iInterface;
} Usb_Interface_Descriptor, *pUsb_Interface_Descriptor;
typedef struct _USB_ENDPOINT_DESCRIPTOR {
UCHAR bLength;
UCHAR bDescriptorType;
UCHAR bEndpointAddress;
UCHAR bmAttributes;
USHORT wMaxPacketSize;
UCHAR bInterval;
} Usb_Endpoint_Descriptor, *pUsb_Endpoint_Descriptor;
typedef PVOID USBD_PIPE_HANDLE;
typedef PVOID USBD_CONFIGURATION_HANDLE;
typedef PVOID USBD_INTERFACE_HANDLE;
typedef enum _USBD_PIPE_TYPE {
UsbdPipeTypeControl,
UsbdPipeTypeIsochronous,
UsbdPipeTypeBulk,
UsbdPipeTypeInterrupt
} USBD_PIPE_TYPE;
typedef struct _USBD_PIPE_INFORMATION {
//
// OUTPUT
// These fields are filled in by USBD
//
USHORT MaximumPacketSize; // Maximum packet size for this pipe
UCHAR EndpointAddress; // 8 bit USB endpoint address (includes direction)
// taken from endpoint descriptor
UCHAR Interval; // Polling interval in ms if interrupt pipe
USBD_PIPE_TYPE PipeType; // PipeType identifies type of transfer valid for this pipe
USBD_PIPE_HANDLE PipeHandle;
//
// INPUT
// These fields are filled in by the client driver
//
ULONG MaximumTransferSize; // Maximum size for a single request
// in bytes.
ULONG PipeFlags;
} USBD_PIPE_INFORMATION, *PUSBD_PIPE_INFORMATION;
typedef struct _USBD_INTERFACE_INFORMATION {
USHORT Length; // Length of this structure, including
// all pipe information structures that
// follow.
//
// INPUT
//
// Interface number and Alternate setting this
// structure is associated with
//
UCHAR InterfaceNumber;
UCHAR AlternateSetting;
//
// OUTPUT
// These fields are filled in by USBD
//
UCHAR Class;
UCHAR SubClass;
UCHAR Protocol;
UCHAR Reserved;
USBD_INTERFACE_HANDLE InterfaceHandle;
ULONG NumberOfPipes;
//
// INPUT/OUPUT
// see PIPE_INFORMATION
USBD_PIPE_INFORMATION Pipes[0];
} USBD_INTERFACE_INFORMATION, *PUSBD_INTERFACE_INFORMATION;
//typedef LONG USBD_STATUS;
//收发线程参数
typedef struct _THREAD_CONTROL
{
HANDLE hThread;
HANDLE hDevice;
DWORD Ioctl;
PVOID InBuffer;
DWORD InBufferSize;
PVOID OutBuffer;
DWORD OutBufferSize;
DWORD BytesReturned;
HANDLE completionEvent;
BOOL status;
} THREAD_CONTROL, *PTHREAD_CONTROL;
//测试线程参数
class CTestDlg ;
struct CThreadParam {
HANDLE hThread;
CTestDlg* testDlg;
BOOLEAN bInThread;
BOOLEAN bUpdate;
/* ISO_TRANSFER_CONTROL IsoControl;
unsigned char * pcIoBuffer;*/
};
BOOL bOpenDriver (HANDLE * phDeviceHandle, PCHAR devname);
class CTestDlg : public CDialog
{
// Construction
public:
CTestDlg(CWnd* pParent = NULL); // standard constructor
// BOOL gStopTest;
CThreadParam m_BulkTest;//线程参数
// Dialog Data
//{{AFX_DATA(CTestDlg)
enum { IDD = IDD_TEST_DIALOG };
CButton m_btnStop;
CButton m_btnStart;
CString m_strName;
CString m_strOutput;
UINT m_nSize;
UINT m_nTestPass;
UINT m_nError;
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CTestDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
HICON m_hIcon;
// Generated message map functions
//{{AFX_MSG(CTestDlg)
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnBtnlist();
afx_msg void OnBtnclear();
afx_msg void OnBtnstop();
afx_msg void OnBtnstart();
afx_msg void OnTimer(UINT nIDEvent);
afx_msg void OnBtnspeed();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_TESTDLG_H__4D455F7B_E393_446A_B2CE_34D4E814F67A__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -