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

📄 search_usb.h

📁 开发usb固件时
💻 H
字号:
// Search_USB.h: interface for the Search_USB class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_SEARCH_USB_H__A231472F_D524_4AA5_B960_45FBD5594E88__INCLUDED_)
#define AFX_SEARCH_USB_H__A231472F_D524_4AA5_B960_45FBD5594E88__INCLUDED_

//需要库文件  MSVCRTD.DLL
#include "winioctl.h"
#include "usbioctl.h"//usb100.h,usbiodef.h

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

class Search_USB  
{
public:
	Search_USB();
	virtual ~Search_USB();

public:
	DWORD Search(CStringArray* pArrayUSB);

private:
	bool DEBUG; // Set to true to enable DEBUG messages 
	SECURITY_ATTRIBUTES SA;  // Needed for Win2000

	// Define all stuctures using UCHAR or BOOLEAN so that the variables are not 'aligned' by the compiler
	typedef struct DESCRIPTOR_REQUEST {
		ULONG ConnectionIndex;
		struct {
			UCHAR bmRequest;
			UCHAR bRequest;
			UCHAR wValue[2];
			UCHAR wIndex[2];
			UCHAR wLength[2];
		} SetupPacket;
		UCHAR Data[2048];
	};	

	typedef struct DEVICE_DESCRIPTOR {
		UCHAR bLength;
		UCHAR bDescriptorType;
		UCHAR bcdUSB[2];
		UCHAR bDeviceClass;
		UCHAR bDeviceSubClass;
		UCHAR bDeviceProtocol;
		UCHAR bMaxPacketSize0;
		UCHAR idVendor[2];
		UCHAR idProduct[2];
		UCHAR bcdDevice[2];
		UCHAR iManufacturer;
		UCHAR iProduct;
		UCHAR iSerialNumber;
		UCHAR bNumConfigurations;
	};

	typedef struct HUB_DESCRIPTOR {
		UCHAR bDescriptorLength;
		UCHAR bDescriptorType;
		UCHAR bNumberOfPorts;
		UCHAR wHubCharacteristics[2];
		UCHAR bPowerOnToPowerGood;
		UCHAR bHubControlCurrent;
		UCHAR bRemoveAndPowerMask[64];      
	};

	typedef struct NODE_INFORMATION {
		USB_HUB_NODE NodeType;
		HUB_DESCRIPTOR HubDescriptor;
		BOOLEAN HubIsBusPowered;
	}; 

	typedef struct NODE_CONNECTION_INFORMATION {
		ULONG ConnectionIndex;
		DEVICE_DESCRIPTOR DeviceDescriptor;
		UCHAR CurrentConfigurationValue;
		BOOLEAN LowSpeed;
		BOOLEAN DeviceIsHub;
		UCHAR DeviceAddress[2];
		UCHAR NumberOfOpenPipes[4];
		UCHAR ConnectionStatus[4];
		USB_PIPE_INFO PipeList[32];
	};


private:
	USHORT Get_StringDescriptor (HANDLE HubHandle, ULONG PortIndex, USHORT LanguageID, UCHAR Index, CStringArray* pArrayUSB);
	USHORT Get_DeviceDescriptor (HANDLE HubHandle, ULONG PortIndex, USHORT LanguageID, PUCHAR BufferPtr, CStringArray* pArrayUSB);
	USHORT Get_ConfigurationDescriptor(HANDLE HubHandle, ULONG PortIndex, USHORT LanguageID, CStringArray* pArrayUSB);
	void Get_PortData(HANDLE HubHandle, UCHAR PortCount, int HubDepth, CStringArray* pArrayUSB);
	DWORD Enumerate_Host_Controller(HANDLE hHostControllerHandle, CStringArray* pArrayUSB);
};

#endif // !defined(AFX_SEARCH_USB_H__A231472F_D524_4AA5_B960_45FBD5594E88__INCLUDED_)

⌨️ 快捷键说明

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