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/win...ger-getdevices