VB6.0与USB通信时,如果获取USB的插入或者拔出消息呀

VB6.0与USB通讯时,如果获取USB的插入或者拔出消息呀?
VB6.0与USB通讯时,如果获取USB的插入或者拔出消息呀? 知道的麻烦提示一下,谢谢啦。
------解决方案--------------------
Private Type DEV_BROADCAST_HDR
    dbch_size           As Long
    dbch_devicetype     As Long
    dbch_reserved       As Long
End Type

Private Type DEV_BROADCAST_VOLUME
    DBCV_Size           As Long
    DBCV_DeviceType     As Long
    DBCV_Reserved       As Long
    DBCV_UnitMask       As Long
    DBCV_Flags          As Integer
End Type

Public Type AUTO_RUN
    Flags As String
End Type

Private Declare Function CallWindowProc Lib "user32" _
    Alias "CallWindowProcA" _
   (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, _
     ByVal Msg As Long, ByVal wParam As Long, _
     ByVal lParam As Long) As Long

Private Declare Function SetWindowLong Lib "user32" _
   Alias "SetWindowLongA" _
  (ByVal hWnd As Long, ByVal nIndex As Long, _
   ByVal wNewWord As Long) As Long

Private Const GWL_WNDPROC                As Long = (-4)
Private Const DBT_DEVICEARRIVAL          As Long = 32768
Private Const DBT_DEVICEREMOVECOMPLETE   As Long = 32772
Private Const DBT_DEVTYP_VOLUME          As Long = &H2
Public Const WM_CLOSE                   As Long = &H10
Private Const WM_DEVICECHANGE            As Long = &H219

Public DeviceCallBack  As Long

Public Sub StartUSBWatch(ByVal hWnd As Long)
    DeviceCallBack = SetWindowLong(hWnd, GWL_WNDPROC, AddressOf OnDeviceChange)
End Sub

Public Sub StopUSBWatch(ByVal hWnd As Long)
    DeviceCallBack = SetWindowLong(hWnd, GWL_WNDPROC, DeviceCallBack)
End Sub

Public Function OnDeviceChange(ByVal hWnd As Long, _
    ByVal Msg As Long, _
    ByVal wParam As Long, _
    ByVal lParam As Long) As Long
    
    If Msg = WM_DEVICECHANGE Then
        If wParam = DBT_DEVICEARRIVAL Or wParam = DBT_DEVICEREMOVECOMPLETE Then