📄 mfc_usbviewdlg.h
字号:
// MFC_USBViewDlg.h : header file
//
#if !defined(AFX_MFC_USBVIEWDLG_H__6005136B_FF1E_4964_8CDB_BFBB418BFACB__INCLUDED_)
#define AFX_MFC_USBVIEWDLG_H__6005136B_FF1E_4964_8CDB_BFBB418BFACB__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <usbioctl.h>
/////////////////////////////////////////////////////////////////////////////
// CMFC_USBViewDlg dialog
// 接口描述符
typedef struct _USB_INTERFACE_DESCRIPTOR2 {
UCHAR bLength; // 偏移量 0, 大小 1,长度
UCHAR bDescriptorType; // 偏移量 1, 大小 1,描述符类型
UCHAR bInterfaceNumber; // 偏移量 2, 大小 1,接口数
UCHAR bAlternateSetting; // 偏移量 3, 大小 1,改变设置
UCHAR bNumEndpoints; // 偏移量 4, 大小 1,终端数
UCHAR bInterfaceClass; // 偏移量 5, 大小 1,接口类
UCHAR bInterfaceSubClass; // 偏移量 6, 大小 1,接口子类
UCHAR bInterfaceProtocol; // 偏移量 7, 大小 1,接口协议
UCHAR iInterface; // 偏移量 8, 大小 1,接口
USHORT wNumClasses; // 偏移量 9, 大小 2,类数
} USB_INTERFACE_DESCRIPTOR2, *PUSB_INTERFACE_DESCRIPTOR2;
// 字符串描述符节点结构体
typedef struct _STRING_DESCRIPTOR_NODE
{
struct _STRING_DESCRIPTOR_NODE *Next; //结构体指针
UCHAR DescriptorIndex; //描述符索引
USHORT LanguageID; //语言ID
USB_STRING_DESCRIPTOR StringDescriptor[0]; //字符串描述符结构数组
} STRING_DESCRIPTOR_NODE, *PSTRING_DESCRIPTOR_NODE;
// 和TreeView项目的结构assocated经过lParam.当一个项目被选择的时候,
// lParam被取回和结构它它指出哪一用来显示编辑控制的数据
typedef struct
{
PUSB_NODE_INFORMATION HubInfo; // 目录信息,如果不是一个目录将为空
PCHAR HubName; // 目录名,如果不是一个目录将为空
PUSB_NODE_CONNECTION_INFORMATION ConnectionInfo; // 连接信息,如果是一个跟目录将为空
PUSB_DESCRIPTOR_REQUEST ConfigDesc; // 配置,如果是一个跟目录将为空
PSTRING_DESCRIPTOR_NODE StringDescs; // 字符串
} USBDEVICEINFO, *PUSBDEVICEINFO;//USB设备信息结构体
class CMFC_USBViewDlg : public CDialog
{
// Construction
public:
void DestroyTextBuffer();
PCHAR GetVendorString(USHORT idVendor);
//void __cdecl AppendTextBuffer(LPCTSTR lpFormat,...);
void DisplayStringDescriptor(UCHAR Index,PSTRING_DESCRIPTOR_NODE StringDescs);
void DisplayConnectionInfo(PUSB_NODE_CONNECTION_INFORMATION ConnectInfo,PSTRING_DESCRIPTOR_NODE StringDescs);
CString m_strNodeName;
CString m_strUsbInfo;
int m_iNodeValue;
HTREEITEM subRoot1,subRoot2,subRoot3,subRoot4;
PCHAR GetExternalHubName(HANDLE Hub,ULONG ConnectionIndex);
PSTRING_DESCRIPTOR_NODE GetStringDescriptors(HANDLE hHubDevice,ULONG ConnectionIndex,UCHAR DescriptorIndex,ULONG NumLanguageIDs,USHORT *LanguageIDs,PSTRING_DESCRIPTOR_NODE StringDescNodeTail);
PSTRING_DESCRIPTOR_NODE GetStringDescriptor(HANDLE hHubDevice,ULONG ConnectionIndex,UCHAR DescriptorIndex,USHORT LanguageID);
PSTRING_DESCRIPTOR_NODE GetAllStringDescriptors(HANDLE hHubDevice,ULONG ConnectionIndex,PUSB_DEVICE_DESCRIPTOR DeviceDesc,PUSB_CONFIGURATION_DESCRIPTOR ConfigDesc);
BOOL AreThereStringDescriptors(PUSB_DEVICE_DESCRIPTOR DeviceDesc,PUSB_CONFIGURATION_DESCRIPTOR ConfigDesc);
PUSB_DESCRIPTOR_REQUEST GetConfigDescriptor(HANDLE hHubDevice,ULONG ConnectionIndex,UCHAR DescriptorIndex);
PCHAR GetDriverKeyName(HANDLE Hub,ULONG ConnectionIndex);
BOOL m_bDoConfigDesc;
void EnumerateHubPorts(HANDLE hHubDevice,ULONG NumPorts);
void EnumerateHub(PCHAR HubName,
PUSB_NODE_CONNECTION_INFORMATION ConnectionInfo,
PUSB_DESCRIPTOR_REQUEST ConfigDesc,
PSTRING_DESCRIPTOR_NODE StringDescs,
PCHAR DeviceDesc);
PCHAR GetRootHubName(HANDLE HostController);
PCHAR DriverNameToDeviceDesc (PCHAR DriverName);
PCHAR WideStrToMultiStr(PWCHAR WideStr);
PCHAR GetHCDDriverKeyName(HANDLE HCD);
ULONG m_TotalDevicesConnected;
void EnumerateHostControllers(ULONG *DevicesConnected);
int m_TotalHubs;
void OOPS();
void RefreshTree();
CMFC_USBViewDlg(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(CMFC_USBViewDlg)
enum { IDD = IDD_MFC_USBVIEW_DIALOG };
CTreeCtrl m_MyTree;
CListBox m_MyList;
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CMFC_USBViewDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
HICON m_hIcon;
// Generated message map functions
//{{AFX_MSG(CMFC_USBViewDlg)
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_MFC_USBVIEWDLG_H__6005136B_FF1E_4964_8CDB_BFBB418BFACB__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -