none
WPD (Windows Portable Device) - what is a portable device technically? RRS feed

  • Question

  • Hello,

    My question is about WPD (Windows Portable Device) and what is a portable device technically.

    The method "IPortableDeviceManager::GetDevices" (*) retrieves a list of portable devices connected to the computer.
    It gets a caller-allocated array of string pointers that holds the Plug and Play names of all of the connected devices.

    Below is my question asked in various ways:
    - what is a portable device exactly (because, to me, it's a fuzzy notion)?
    - what are the features that a device must have to classify as a portable device?
    - at "low level" what does the "system" (the "GetDevices" method) look for in a device to be able to classify it as a portable device or not?
    - more practically and for example, what does:
    a device running the OS "Windows Embedded Handheld 6.5 Professional"
    and another device running the OS "Android v.6.0.1"
    have in common that both classifies them as portable devices that are detected by the "IPortableDeviceManager::GetDevices" method?

    Thank you and best regards.

    (*) https://docs.microsoft.com/en-us/windows/win32/api/portabledeviceapi/nf-portabledeviceapi-iportabledevicemanager-getdevices
    Wednesday, August 14, 2019 9:18 AM

All replies

  • No really. that doesn't help.
    Wednesday, August 14, 2019 1:17 PM
  • Since that google search answers your questions, what else do you need?

    I guess that I didn't answer your last question - more practically and for example, what does:
    a device running the OS "Windows Embedded Handheld 6.5 Professional" and another device running the OS "Android v.6.0.1" have in common that both classifies them as portable devices that are detected by the "IPortableDeviceManager::GetDevices" method?

    They both identify themselves to the computer in a way that is interpreted as a mobile device.  That has much to do with the connection method (i.e. USB, Bluetooth,...) and the defined identification protocol + information in the computer's INF files.


    Bruce Eitman
    Senior Enginer
    Bruce.Eitman AT Synopsys DOT com
    My BLOG http://geekswithblogs.net/bruceeitman
    I work for
    Synopsys

    Wednesday, August 14, 2019 2:29 PM
    Moderator
  • Hi LEA,

    When you ask in this forum, we would answer in the context of a Smart Device as Bruce states, a Windows Embedded Compact device that is not connected to a wall.  However, a portable device can really be anything that is not tethered.  A tablet or laptop are definitely portable.  Back in the day, there were PC's similar to a sewing machine that were also considered portable.

    So more context to your question would help get you a more precise answer.  Specific to "WPD" check out https://docs.microsoft.com/en-us/windows/win32/windows-portable-devices which states "WPD provides a flexible, robust way for computers to communicate with music players, storage devices, mobile phones, cameras, and many other types of connected devices"

    Sincerely,

    IoTGirl 


    Wednesday, August 14, 2019 4:21 PM
    Moderator
  • Thank you.
    That's more the kind of answer I was expecting (but [my] questions are not always very clear...)

    > the connection method (i.e. USB, Bluetooth, ...)
    For the moment, I am interested in "MTP with USB Transport".

    > the defined identification protocol
    I don't know what you are talking about, maybe it's related to Bluetooth.
    With USB, is this notion relevant?

    > information in the computer's INF files
    In an ".inf" file, what precisely tells the program (for example a method such as "IPortableDeviceManager::GetDevices") that the device it is dealing with is a portable device? (Sorry if this question is poorly formulated).
    For example, "wpdmtp.inf" is the ".inf" I have for and Android device connected to my computer via a USB cable and "oem27.inf" is the ".inf" I have for a Windows Mobile device connected to my computer via a USB cable too.
    What info in these files inform that they are portable devices in the sense of the WPD API?

    I understand these might be technical questions for which there is no real "public" answer.
    But if there is, I would be very glad to understand better what's under the wood.
    For example, I am sure people who write ".inf" files for their devices (like OEMs) know what to put in these ".inf" files to advertise their devices as portable devices in the sense of the WPD API.

    Thank you for your help.
    Best regards.

    Wednesday, August 14, 2019 4:44 PM
  • With USB, is this notion relevant? Absolutly

    INF files tell the operating system how to load drivers.  The protocol that is used when a device attaches/connects to a computer is used to determine which driver to load.  That in turn tells the OS what the device is - like portable device.

    Let's back up - you seem to have determined how to solve your problem.  You seem to now to be asking about your solution.  Instead, tell us about your problem - what are you trying to solve?  That is, please put your questions in context.  We can better answer them if you do that.


    Bruce Eitman
    Senior Enginer
    Bruce.Eitman AT Synopsys DOT com
    My BLOG http://geekswithblogs.net/bruceeitman
    I work for
    Synopsys


    Wednesday, August 14, 2019 5:14 PM
    Moderator
  • Thank you for your answer which made me realize I was missing too many elements to ask my questions properly.
    So I need to study more and I have some tracks for that.

    I noticed that there actually is a section "Portable Devices" in the "Device Manager"
    and that the devices that are listed in that section are the ones I get when I use the "IPortableDeviceManager::GetDevices" method.

    As you asked, below is what I'm trying to do:
    I would like to propose the list of the portable devices that are connected to a PC so that a user can select one of them to copy files to or from it.
    The portable device I need the user to choose for my specific purpose is a PDA-smartphone-like device, not a USB key for instance.
    I noticed that a USB key I plugged in is considered as a portable device.
    So, that's what I am trying to clarify.
    I have nothing else around different to plug in but I am wondering what kind of other devices can be considered as portable devices by the Windows OS.

    So I am wondering what these devices have in common technically to all classify as portable devices.

    Also the USB key doesn't have a WPD_OBJECT_NAME instead, it has a WPD_DEVICE_FRIENDLY_NAME.
    Whereas an Android device has a WPD_OBJECT_NAME and no WPD_DEVICE_FRIENDLY_NAME.
    So, to present a user-friendly list to the user, one needs to take that info. into account.

    Best regards.
    Thursday, August 15, 2019 4:32 PM