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

📄 displayhid.frm

📁 PC端的USB主机源代码
💻 FRM
字号:
VERSION 5.00
Begin VB.Form DisplayWindow 
   BackColor       =   &H00FF8080&
   Caption         =   "USB Design By Example: Display HID Devices"
   ClientHeight    =   5595
   ClientLeft      =   3000
   ClientTop       =   2145
   ClientWidth     =   8475
   FillStyle       =   0  'Solid
   ForeColor       =   &H8000000E&
   LinkTopic       =   "Form1"
   NegotiateMenus  =   0   'False
   OLEDropMode     =   1  'Manual
   ScaleHeight     =   5874.016
   ScaleMode       =   0  'User
   ScaleWidth      =   8475
   ShowInTaskbar   =   0   'False
   Begin VB.ListBox Display 
      BeginProperty Font 
         Name            =   "Courier New"
         Size            =   8.25
         Charset         =   0
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   5310
      Left            =   240
      TabIndex        =   0
      Top             =   120
      Width           =   7935
   End
End
Attribute VB_Name = "DisplayWindow"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Private Sub Form_Load()
'   Look for HID Devices.
'
'   Declare the data structures used
Dim HidGuid As Guid
Dim DeviceInterfaceData As Device_Interface_Data
Dim FunctionClassDeviceData As Device_Interface_Detail
Dim ThisHIDdevice As HidD_Attributes
Dim Buffer(100) As Byte
Dim Success As Boolean

'   First, get my class identifier
Call HidD_GetHidGuid(HidGuid.Data(0))
'
'   Get a handle for the Plug and Play node and request currently active HID devices
PnPHandle& = SetupDiGetClassDevs(HidGuid.Data(0), 0, 0, &H12)
If (PnPHandle& = -1) Then ErrorExit ("Could not attach to PnP node")
'
'   Lets look for a maximum of 20 HID devices
For HIDdevice& = 0 To 19
    DeviceInterfaceData.cbsize = 28 'Length of data structure in bytes
'   Is there a HID device at this table entry
    If SetupDiEnumDeviceInterfaces(PnPHandle&, 0, HidGuid.Data(0), HIDdevice&, DeviceInterfaceData.cbsize) Then
'   There is a device here, get it's name
        FunctionClassDeviceData.cbsize = 5
        Success = SetupDiGetDeviceInterfaceDetail(PnPHandle&, DeviceInterfaceData.cbsize, _
           FunctionClassDeviceData.cbsize, UBound(FunctionClassDeviceData.DataPath), BytesReturned&, 0)
        If (Success = 0) Then ErrorExit ("Could not find the system name for this HID device")
' Convert C string to Visual Basic String
        HidName$ = "": i& = 0:
        Do While FunctionClassDeviceData.DataPath(i&) <> 0
            HidName$ = HidName$ & Chr(FunctionClassDeviceData.DataPath(i&)): i& = i& + 1: Loop
' Can now open this HID device
        HidHandle& = CreateFile(HidName$, &HC0000000, 3, 0, 3, 0, 0)
        If (HidHandle& = -1) Then ErrorExit ("Could not open HID device")
' Get VID and PID for display
        Success = HidD_GetAttributes(HidHandle&, ThisHIDdevice.cbsize)
        temp$ = " VID = " & TwoHexCharacters$(ThisHIDdevice.VendorID(1)) & TwoHexCharacters$(ThisHIDdevice.VendorID(0))
' Get Manufacturers name if present
        If HidD_GetManufacturerString(HidHandle&, AddressFor(Buffer(0)), UBound(Buffer)) Then
            temp$ = temp$ & " '": i& = 0
            Do While Buffer(i&) <> 0: temp$ = temp$ & Chr(Buffer(i&)): i& = i& + 2: Loop
            temp$ = temp$ & "'"
            End If
        temp$ = temp$ & ", PID = " & TwoHexCharacters$(ThisHIDdevice.ProductID(1)) & TwoHexCharacters$(ThisHIDdevice.ProductID(0))
' Get Product name if present
        If HidD_GetProductString(HidHandle&, AddressFor(Buffer(0)), UBound(Buffer)) Then
            temp$ = temp$ & " '": i& = 0
            Do While Buffer(i&) <> 0: temp$ = temp$ & Chr(Buffer(i&)): i& = i& + 2: Loop
            temp$ = temp$ & "'"
            End If
' Add entry to Listbox
        Display.AddItem temp$
        Call CloseHandle(HidHandle&)
        End If 'SetupDiEnumDeviceInterfaces
    Next HIDdevice&
Call CloseHandle(PnPHandle&)
End Sub

⌨️ 快捷键说明

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