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

📄 vbhardwarecontroller.cls

📁 vb编制的获取硬件信息的类
💻 CLS
📖 第 1 页 / 共 3 页
字号:
Private GUID_DEVCLASS_FDC As GUID
Private GUID_DEVCLASS_GPS As GUID
Private GUID_DEVCLASS_HDC As GUID
Private GUID_DEVCLASS_IMAGE As GUID
Private GUID_DEVCLASS_INFRARED As GUID
Private GUID_DEVCLASS_KEYBOARD As GUID
Private GUID_DEVCLASS_LEGACYDRIVER As GUID
Private GUID_DEVCLASS_MEDIA As GUID
Private GUID_DEVCLASS_MODEM As GUID
Private GUID_DEVCLASS_MONITOR As GUID
Private GUID_DEVCLASS_MOUSE As GUID
Private GUID_DEVCLASS_MTD As GUID
Private GUID_DEVCLASS_MULTIFUNCTION As GUID
Private GUID_DEVCLASS_NET As GUID
Private GUID_DEVCLASS_NETCLIENT As GUID
Private GUID_DEVCLASS_NETSERVICE As GUID
Private GUID_DEVCLASS_NETTRANS As GUID
Private GUID_DEVCLASS_NODRIVER As GUID
Private GUID_DEVCLASS_PARALLE As GUID
Private GUID_DEVCLASS_PCMCIA As GUID
Private GUID_DEVCLASS_PORTS As GUID
Private GUID_DEVCLASS_PRINTER As GUID
Private GUID_DEVCLASS_PRINTERUPGRADE As GUID
Private GUID_DEVCLASS_SCSIADAPTER As GUID
Private GUID_DEVCLASS_SOUND As GUID
Private GUID_DEVCLASS_STILLIMAGE As GUID
Private GUID_DEVCLASS_SYSTEM As GUID
Private GUID_DEVCLASS_TAPEDRIVE As GUID
Private GUID_DEVCLASS_UNKNOWN As GUID
Private GUID_DEVCLASS_VOLUME As GUID

Private Const INVALID_HANDLE_VALUE As Long = -1
Private Const ERROR_INSUFFICIENT_BUFFER As Long = 122

Private Const FILE_READ_DATA = (&H1)                     '  file pipe
Private Const FILE_WRITE_DATA = (&H2)                    '  file pipe

Private Const FILE_DEVICE_BEEP                 As Long = &H1
Private Const FILE_DEVICE_CD_ROM               As Long = &H2
Private Const FILE_DEVICE_CD_ROM_FILE_SYSTEM   As Long = &H3
Private Const FILE_DEVICE_CONTROLLER           As Long = &H4
Private Const FILE_DEVICE_DATALINK             As Long = &H5
Private Const FILE_DEVICE_DFS                  As Long = &H6
Private Const FILE_DEVICE_DISK                 As Long = &H7
Private Const FILE_DEVICE_DISK_FILE_SYSTEM     As Long = &H8
Private Const FILE_DEVICE_FILE_SYSTEM          As Long = &H9
Private Const FILE_DEVICE_INPORT_PORT          As Long = &HA
Private Const FILE_DEVICE_KEYBOARD             As Long = &HB
Private Const FILE_DEVICE_MAILSLOT             As Long = &HC
Private Const FILE_DEVICE_MIDI_IN              As Long = &HD
Private Const FILE_DEVICE_MIDI_OUT             As Long = &HE
Private Const FILE_DEVICE_MOUSE                As Long = &HF
Private Const FILE_DEVICE_MULTI_UNC_PROVIDER   As Long = &H10
Private Const FILE_DEVICE_NAMED_PIPE           As Long = &H11
Private Const FILE_DEVICE_NETWORK              As Long = &H12
Private Const FILE_DEVICE_NETWORK_BROWSER      As Long = &H13
Private Const FILE_DEVICE_NETWORK_FILE_SYSTEM As Long = &H14
Private Const FILE_DEVICE_NULL                 As Long = &H15
Private Const FILE_DEVICE_PARALLEL_PORT        As Long = &H16
Private Const FILE_DEVICE_PHYSICAL_NETCARD     As Long = &H17
Private Const FILE_DEVICE_PRINTER              As Long = &H18
Private Const FILE_DEVICE_SCANNER              As Long = &H19
Private Const FILE_DEVICE_SERIAL_MOUSE_PORT    As Long = &H1A
Private Const FILE_DEVICE_SERIAL_PORT          As Long = &H1B
Private Const FILE_DEVICE_SCREEN               As Long = &H1C
Private Const FILE_DEVICE_SOUND                As Long = &H1D
Private Const FILE_DEVICE_STREAMS              As Long = &H1E
Private Const FILE_DEVICE_TAPE                 As Long = &H1F
Private Const FILE_DEVICE_TAPE_FILE_SYSTEM     As Long = &H20
Private Const FILE_DEVICE_TRANSPORT            As Long = &H21
Private Const FILE_DEVICE_UNKNOWN              As Long = &H22
Private Const FILE_DEVICE_VIDEO                As Long = &H23
Private Const FILE_DEVICE_VIRTUAL_DISK         As Long = &H24
Private Const FILE_DEVICE_WAVE_IN              As Long = &H25
Private Const FILE_DEVICE_WAVE_OUT             As Long = &H26
Private Const FILE_DEVICE_8042_PORT            As Long = &H27
Private Const FILE_DEVICE_NETWORK_REDIRECTOR   As Long = &H28
Private Const FILE_DEVICE_BATTERY              As Long = &H29
Private Const FILE_DEVICE_BUS_EXTENDER         As Long = &H2A
Private Const FILE_DEVICE_MODEM                As Long = &H2B
Private Const FILE_DEVICE_VDM                  As Long = &H2C
Private Const FILE_DEVICE_MASS_STORAGE         As Long = &H2D
Private Const FILE_DEVICE_SMB                  As Long = &H2E
Private Const FILE_DEVICE_KS                   As Long = &H2F
Private Const FILE_DEVICE_CHANGER              As Long = &H30
Private Const FILE_DEVICE_SMARTCARD            As Long = &H31
Private Const FILE_DEVICE_ACPI                 As Long = &H32
Private Const FILE_DEVICE_DVD                  As Long = &H33
Private Const FILE_DEVICE_FULLSCREEN_VIDEO     As Long = &H34
Private Const FILE_DEVICE_DFS_FILE_SYSTEM      As Long = &H35
Private Const FILE_DEVICE_DFS_VOLUME           As Long = &H36

Private Const METHOD_BUFFERED                  As Long = 0
Private Const METHOD_IN_DIRECT                 As Long = 1
Private Const METHOD_OUT_DIRECT                As Long = 2
Private Const METHOD_NEITHER                   As Long = 3

Private Const FILE_ANY_ACCESS                  As Long = 0
Private Const FILE_READ_ACCESS                 As Long = FILE_READ_DATA  '/* file & pipe */
Private Const FILE_WRITE_ACCESS                As Long = FILE_WRITE_DATA '/* file & pipe */

Private Const IOCTL_STORAGE_BASE As Long = FILE_DEVICE_MASS_STORAGE

Private Enum STORAGE_BUS_TYPE
    BusTypeUnknown = 0
    BusTypeScsi
    BusTypeAtapi
    BusTypeAta
    BusType1394
    BusTypeSsa
    BusTypeFibre
    BusTypeUsb
    BusTypeRAID
    BusTypeMaxReserved = &H7F
End Enum

Private Enum STORAGE_QUERY_TYPE
    PropertyStandardQuery = 0
    PropertyExistsQuery
    PropertyMaskQuery
    PropertyQueryMaxDefined
End Enum

Private Enum STORAGE_PROPERTY_ID
    StorageDeviceProperty = 0
    StorageAdapterProperty
End Enum

Private Type STORAGE_PROPERTY_QUERY
    PropertyId As STORAGE_PROPERTY_ID
    QueryType As STORAGE_QUERY_TYPE
    AdditionalParameters(0) As Byte
End Type

Private Type STORAGE_DEVICE_DESCRIPTOR
    Version As Long
    Size As Long
    DeviceType As Byte
    DeviceTypeModifier As Byte
    RemovableMedia As Byte
    CommandQueueing As Byte
    VendorIdOffset As Long
    ProductIdOffset As Long
    ProductRevisionOffset As Long
    SerialNumberOffset As Long
    BusType As STORAGE_BUS_TYPE
    RawPropertiesLength As Long
    RawDeviceProperties(0) As Byte
End Type

Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function DeviceIoControl Lib "kernel32" (ByVal hDevice As Long, ByVal dwIoControlCode As Long, lpInBuffer As Any, ByVal nInBufferSize As Long, lpOutBuffer As Any, ByVal nOutBufferSize As Long, lpBytesReturned As Long, lpOverlapped As OVERLAPPED) As Long

Private Const DRIVE_CDROM = 5
Private Const DRIVE_FIXED = 3
Private Const DRIVE_RAMDISK = 6
Private Const DRIVE_REMOTE = 4
Private Const DRIVE_REMOVABLE = 2

Private Const GENERIC_READ = &H80000000

Private Const FILE_SHARE_READ = &H1
Private Const FILE_SHARE_WRITE = &H2
Private Const OPEN_EXISTING = 3

Private Type SECURITY_ATTRIBUTES
        nLength As Long
        lpSecurityDescriptor As Long
        bInheritHandle As Long
End Type

Private Type OVERLAPPED
        Internal As Long
        InternalHigh As Long
        offset As Long
        OffsetHigh As Long
        hEvent As Long
End Type

Private Declare Function GetLogicalDrives Lib "kernel32" () As Long

'**************************************************************************
'*                                暴露的接口                              *
'**************************************************************************
Public Event EnumDevicesProc(ByVal lIndex As Long, ByVal sDeviceName As String, ByVal sDeviceClassName As String, ByVal sDeviceFriendlyName As String, ByVal sDeviceEnumeratorName As String, ByVal sDeviceClassGuid As String)

Public Function EnumDevices(Optional lClassName As Long, Optional fEnumerateInterfaces As Boolean = False) As Boolean
    On Error GoTo Error_Handler
    Dim hDevInfo As Long
    If fEnumerateInterfaces Then
    Else
        hDevInfo = SetupDiGetClassDevs(0, 0, 0, DIGCF_PRESENT + DIGCF_ALLCLASSES)
        If hDevInfo <> INVALID_HANDLE_VALUE Then
            Dim DeviceInfoData  As SP_DEVINFO_DATA
            Dim i As Long
            Dim bDevInfo() As Byte
            Dim sDeviceDescription As String, sDeviceClassName As String, sDeviceEnumeratorName As String, sDeviceFriendlyName As String, sDeviceClassGuid As String
            DeviceInfoData.cbSize = Len(DeviceInfoData)
            i = 0
            Do While (SetupDiEnumDeviceInfo(hDevInfo, i, DeviceInfoData) <> 0)
                sDeviceDescription = ""
                sDeviceClassName = ""
                sDeviceEnumeratorName = ""
                sDeviceFriendlyName = ""
                sDeviceClassGuid = ""
                
                If GetDeviceRegInfo(hDevInfo, DeviceInfoData, SPDRP_DEVICEDESC, bDevInfo()) Then
                    sDeviceDescription = StrConv(bDevInfo, vbUnicode)
                End If
                
                If GetDeviceRegInfo(hDevInfo, DeviceInfoData, SPDRP_CLASS, bDevInfo()) Then
                    sDeviceClassName = StrConv(bDevInfo, vbUnicode)
                End If
                                
                If GetDeviceRegInfo(hDevInfo, DeviceInfoData, SPDRP_ENUMERATOR_NAME, bDevInfo()) Then
                    sDeviceEnumeratorName = StrConv(bDevInfo, vbUnicode)
                End If
                                                
                If GetDeviceRegInfo(hDevInfo, DeviceInfoData, SPDRP_FRIENDLYNAME, bDevInfo()) Then
                    sDeviceFriendlyName = StrConv(bDevInfo, vbUnicode)
                End If
                                                
                If GetDeviceRegInfo(hDevInfo, DeviceInfoData, SPDRP_CLASSGUID, bDevInfo()) Then
                    sDeviceClassGuid = StrConv(bDevInfo, vbUnicode)
                End If
                                                
                RaiseEvent EnumDevicesProc(i, sDeviceDescription, sDeviceClassName, sDeviceFriendlyName, sDeviceEnumeratorName, sDeviceClassGuid)
                
                i = i + 1
            Loop
                        
            Call SetupDiDestroyDeviceInfoList(hDevInfo)
        End If
    End If
    Exit Function
Error_Handler:
End Function

Public Function SetDeviceState(ByVal lDeviceIndex As Long, ByVal sDeviceClassGuid As String, Optional ByVal fEnabled As Boolean = True) As Boolean
    Dim hDevInfo As Long
    hDevInfo = SetupDiGetClassDevs(0, 0, 0, DIGCF_PRESENT + DIGCF_ALLCLASSES)
    If hDevInfo <> INVALID_HANDLE_VALUE Then
        Dim DeviceInfoData  As SP_DEVINFO_DATA
        Dim bDevInfo() As Byte
        
        DeviceInfoData.cbSize = Len(DeviceInfoData)
        If SetupDiEnumDeviceInfo(hDevInfo, lDeviceIndex, DeviceInfoData) <> 0 Then

⌨️ 快捷键说明

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