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

📄 usbviewdlg.h

📁 使用visual c++实现的usbview
💻 H
字号:
// UsbviewDlg.h : header file
//

#if !defined(AFX_USBVIEWDLG_H__D06FF29A_96FF_40F3_AB54_19E656A727CE__INCLUDED_)
#define AFX_USBVIEWDLG_H__D06FF29A_96FF_40F3_AB54_19E656A727CE__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

/////////////////////////////////////////////////////////////////////////////
//新加头文件
#include "WinCtrl.h"
#include "usbdesc.h"
#include <windows.h>
#include <basetyps.h>
#include <windowsx.h>
#include <initguid.h>
#include <devioctl.h>
#include <dbt.h>
#include <stdio.h>
#include <commctrl.h>
//#include <usbiodef.h>
#include <usbioctl.h>
#include <winioctl.h>
#include <cfgmgr32.h>
#include <setupapi.h>
/////////////////////////////////////////////////////////////////////////////
typedef struct _STRING_DESCRIPTOR_NODE
{
    struct _STRING_DESCRIPTOR_NODE *Next;
    UCHAR                           DescriptorIndex;
    USHORT                          LanguageID;
    USB_STRING_DESCRIPTOR           StringDescriptor[0];
} STRING_DESCRIPTOR_NODE, *PSTRING_DESCRIPTOR_NODE;

typedef struct
{
    PUSB_NODE_INFORMATION               HubInfo;        // NULL if not a HUB
    PCHAR                               HubName;        // NULL if not a HUB
    PUSB_NODE_CONNECTION_INFORMATION    ConnectionInfo; // NULL if root HUB
    PUSB_DESCRIPTOR_REQUEST             ConfigDesc;     // NULL if root HUB
    PSTRING_DESCRIPTOR_NODE             StringDescs;
} USBDEVICEINFO, *PUSBDEVICEINFO;

typedef struct _TERMTYPE
{
    USHORT TermTypeCode;
    PCHAR  TermTypeName;
} TERMTYPE, *PTERMTYPE;

typedef struct _FORMATTYPE
{
    USHORT FormatTypeCode;
    PCHAR  FormatTypeName;
} FORMATTYPE, *PFORMATTYPE;
/////////////////////////////////////////////////////////////////////////////
// CUsbviewDlg dialog

class CUsbviewDlg : public CWinCtrl
{
// Construction
public:
	CUsbviewDlg(CWnd* pParent = NULL);	// standard constructor

// Dialog Data
	//{{AFX_DATA(CUsbviewDlg)
	enum { IDD = IDD_USBVIEW_DIALOG };
	CTreeCtrl	m_tree;
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CUsbviewDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	HICON m_hIcon;
	//自定义变量
    HTREEITEM m_hRoot;
	bool bAutoRefresh;
	bool bConfigDesc;
	//自定义函数	
	void EnumerateHostControllers(HTREEITEM hTreeItem);
	VOID EnumerateHostController(HTREEITEM hTreeParent,HANDLE hHCDev,PCHAR leafName);
	PCHAR GetHCDDriverKeyName(HANDLE  HCD);
	PCHAR WideStrToMultiStr(PWCHAR WideStr);
	PCHAR DriverNameToDeviceDesc(PCHAR DriverName);
	PCHAR GetRootHubName(HANDLE HostController);
	VOID EnumerateHub(HTREEITEM hTreeParent,PCHAR HubName,
		PUSB_NODE_CONNECTION_INFORMATION ConnectionInfo,
		PUSB_DESCRIPTOR_REQUEST ConfigDesc,
		PSTRING_DESCRIPTOR_NODE StringDescs,PCHAR DeviceDesc);
	VOID EnumerateHubPorts(HTREEITEM  hTreeParent,HANDLE hHubDevice,ULONG NumPorts);
	PCHAR GetDriverKeyName (HANDLE Hub,ULONG ConnectionIndex);
	PUSB_DESCRIPTOR_REQUEST GetConfigDescriptor(
		HANDLE hHubDevice,
		ULONG ConnectionIndex,
		UCHAR DescriptorIndex);

	BOOL AreThereStringDescriptors(PUSB_DEVICE_DESCRIPTOR DeviceDesc,
							   PUSB_CONFIGURATION_DESCRIPTOR ConfigDesc);

	PSTRING_DESCRIPTOR_NODE GetAllStringDescriptors (
		HANDLE                          hHubDevice,
		ULONG                           ConnectionIndex,
		PUSB_DEVICE_DESCRIPTOR          DeviceDesc,
		PUSB_CONFIGURATION_DESCRIPTOR   ConfigDesc);
	
	PSTRING_DESCRIPTOR_NODE GetStringDescriptor (
		HANDLE  hHubDevice,ULONG   ConnectionIndex,
		UCHAR   DescriptorIndex,USHORT  LanguageID);
	
	PSTRING_DESCRIPTOR_NODE GetStringDescriptors (
		HANDLE  hHubDevice,ULONG   ConnectionIndex,
		UCHAR   DescriptorIndex,ULONG   NumLanguageIDs,
		USHORT  *LanguageIDs,PSTRING_DESCRIPTOR_NODE StringDescNodeTail);
	
	PCHAR GetExternalHubName(HANDLE Hub,ULONG ConnectionIndex);
	
	HTREEITEM AddLeaf(HTREEITEM hTreeParent,LPARAM lParam,LPTSTR lpszText,...);
	VOID UpdateEditControl(HTREEITEM hTreeItem);
	BOOL CreateTextBuffer();
	BOOL ResetTextBuffer();
	VOID __cdecl AppendTextBuffer(LPCTSTR lpFormat,...);
	VOID DisplayHubInfo(PUSB_HUB_INFORMATION HubInfo);
	VOID DisplayConnectionInfo(
		PUSB_NODE_CONNECTION_INFORMATION    ConnectInfo,
		PSTRING_DESCRIPTOR_NODE             StringDescs);
	PCHAR GetVendorString (USHORT idVendor);
	VOID DisplayStringDescriptor(
		UCHAR                       Index,
		PSTRING_DESCRIPTOR_NODE     StringDescs);
	VOID DisplayPipeInfo(ULONG NumPipes,USB_PIPE_INFO *PipeInfo);
	VOID DisplayEndpointDescriptor(PUSB_ENDPOINT_DESCRIPTOR EndpointDesc);
	
	VOID DisplayConfigDesc(
		PUSB_CONFIGURATION_DESCRIPTOR   ConfigDesc,
		PSTRING_DESCRIPTOR_NODE         StringDescs);
	
	VOID DisplayConfigurationDescriptor(
		PUSB_CONFIGURATION_DESCRIPTOR   ConfigDesc,
		PSTRING_DESCRIPTOR_NODE         StringDescs);
	
	VOID DisplayInterfaceDescriptor(
		PUSB_INTERFACE_DESCRIPTOR   InterfaceDesc,
		PSTRING_DESCRIPTOR_NODE     StringDescs);
	
	VOID DisplayHidDescriptor(PUSB_HID_DESCRIPTOR  HidDesc);
	BOOL CreateIcon();
	//*****************************************************************************
	BOOL DisplayACHeader(PUSB_AUDIO_AC_INTERFACE_HEADER_DESCRIPTOR HeaderDesc);
	BOOL DisplayACInputTerminal(PUSB_AUDIO_INPUT_TERMINAL_DESCRIPTOR ITDesc);
	BOOL DisplayACOutputTerminal(PUSB_AUDIO_OUTPUT_TERMINAL_DESCRIPTOR OTDesc);
	BOOL DisplayACMixerUnit(PUSB_AUDIO_MIXER_UNIT_DESCRIPTOR MixerDesc);
	BOOL DisplayACSelectorUnit(PUSB_AUDIO_SELECTOR_UNIT_DESCRIPTOR SelectorDesc);
	BOOL DisplayACFeatureUnit(PUSB_AUDIO_FEATURE_UNIT_DESCRIPTOR FeatureDesc);
	BOOL DisplayACProcessingUnit(PUSB_AUDIO_PROCESSING_UNIT_DESCRIPTOR ProcessingDesc);
	BOOL DisplayACExtensionUnit(PUSB_AUDIO_EXTENSION_UNIT_DESCRIPTOR ExtensionDesc);
	BOOL DisplayASGeneral(PUSB_AUDIO_GENERAL_DESCRIPTOR GeneralDesc);
	BOOL DisplayCSEndpoint(PUSB_AUDIO_ENDPOINT_DESCRIPTOR EndpointDesc);
	BOOL DisplayASFormatType(PUSB_AUDIO_COMMON_FORMAT_DESCRIPTOR FormatDesc);
	BOOL DisplayASFormatSpecific(PUSB_AUDIO_COMMON_DESCRIPTOR CommonDesc);
	VOID DisplayBytes(PUCHAR Data,USHORT Len);
	PCHAR TermTypeCodeToName(USHORT TermTypeCode);
	PCHAR FormatTypeCodeToName(USHORT FormatTypeCode);
	BOOL DisplayAudioDescriptor(
		PUSB_AUDIO_COMMON_DESCRIPTOR CommonDesc,
		UCHAR                        bInterfaceSubClass);
	
	VOID DisplayUnknownDescriptor(PUSB_COMMON_DESCRIPTOR CommonDesc);
	//*****************************************************************************
	
	// Generated message map functions
	//{{AFX_MSG(CUsbviewDlg)
	virtual BOOL OnInitDialog();
	afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	afx_msg void OnRefresh();
	afx_msg void OnSelchangedTree(NMHDR* pNMHDR, LRESULT* pResult);
	afx_msg void OnSize(UINT nType, int cx, int cy);
	afx_msg void OnAutorefresh();
	afx_msg void OnConfigDescriptor();
	afx_msg BOOL OnDeviceChange(UINT nEventType,DWORD dwData);
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_USBVIEWDLG_H__D06FF29A_96FF_40F3_AB54_19E656A727CE__INCLUDED_)

⌨️ 快捷键说明

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