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

📄 mfc_usbviewdlg.h

📁 USB容量获取用DeviceIoControl得到U盘物理参数!
💻 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 + -