Enumerating Windows Portable Devices in C#

后端 未结 6 1027
半阙折子戏
半阙折子戏 2020-12-14 04:09

I am attempting to enumerate connected portable devices on Windows using the Windows Portable Devices API and the PortableDeviceManager provided by this API.

I have

6条回答
  •  爱一瞬间的悲伤
    2020-12-14 04:53

    The one line of Power-shell script below un-mounts a USB cable attached Windows Portable Device (WPD) from the Windows Operating System (XP thru W8/2012)

    And just in case you have not yet started playing with Powershell, here is the equivalent VBScript (maybe be can port to C#):

    Set objWMIService = GetObject ("winmgmts:\\.\root\cimv2")
    Set colItems = objWMIService.ExecQuery ("Select * from Win32ext_WPD Where strFriendlyName = 'SAMSUNG-SGH-I747'")
    For Each objItem in colItems
    Set objWMIWPDStatic = objWMIService.Get("Win32ext_WPD")
    Set objInParam = objWMIWPDStatic.Methods_("EjectDevice").inParameters.SpawnInstance_()
    objInParam.Properties_.Item("strObjectDeviceId") =  objItem.strId
    Set objOutParams = objWMIService.ExecMethod("Win32ext_WPD", "EjectDevice", objInParam)
    Exit For
    Next
    

    Note change ‘SAMSUNG-SGH-I747′ to the phone/tablet name you see in Windows Explorer

    About Win32ext_WPD

    "Select * from Win32ext_WPD Where strFriendlyName = 'SAMSUNG-SGH-I747'"

    Not well document googleing, not found more 2 references.

    Maybe port to C# using:

    var oScope = new ManagementScope(@"\\" + MachineName + @"\root\cimv2");
    

    Reference:

    http://squadratechnologies.wordpress.com/2013/07/24/windows-powershellvbscript-to-un-mount-a-smart-phone-or-tablet/

提交回复
热议问题