USBメモリのシリアル取得について

    Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
        Select Case m.Msg
            Case WM_DEVICECHANGE
                Select Case m.WParam.ToInt32
                    Case DBT.DBT_DEVICEARRIVAL
                        Dim t As New Thread(New ThreadStart(AddressOf worker))
                        t.Start()
                    Case DBT.DBT_DEVICEREMOVECOMPLETE
                End Select
            Case Else
        End Select
        MyBase.WndProc(m)
    End Sub

    Sub worker()
        Try
            Dim Licences() As String = {"XXXXXXX", "XXXXXXX"} '指定したシリアル
            Dim searcher As New ManagementObjectSearcher( _
                "rootCIMV2", _
                "SELECT * FROM Win32_DiskDrive where InterfaceType='USB'")
            For Each queryObj As ManagementObject In searcher.Get()
                Find_Flg = False
                For i As Int16 = 0 To Licences.Length - 1
                    If Licences(i) <> queryObj("PNPDeviceID") Then 'シリアルが一致しない場合
                       '省略・・・・ 
                       Eject(queryObj("DeviceID")) 'CM_Request_Device_Ejectにて取り外し
                    End If
                Next
            Next
        Catch err As ManagementException
            MessageBox.Show("An error occurred while querying for WMI data: " & err.Message)
        End Try
    End Sub

http://dobon.net/vb/bbs/log3-45/27263.html

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です