Win32_USBHubクラスは、USBデバイスの列挙に使うクラスの一種。
Win32\_USBHub class | Microsoft Docs
WMI タスク: コンピューターハードウェア - Win32 apps | Microsoft Docs
ただ、「USBハブの管理特性を表す」らしく、これが挿している全てのUSBデバイスを列挙するわけではなさそう。
USBハブとして機能するものだけなのかな。
Win32_USBHub.cppで、
NameとCaptionに日本語が混じるので、コンソールだとややこしいので、ShiftJISに変換して出力。
Surface Proの場合、何も挿していない時は、
CoCreateInstance OK! pLocator = 0x00790508 pLocator->ConnectServer OK! pServices = 0x00790208 CoSetProxyBlanket OK! pServices->ExecQuery OK! pEnumerator = 0x007a83e0 pEnumerator->Next OK! pClassObject = 0x007a86b0 pClassObject->Get OK! Name: USB ルート ハブ (USB 3.0) pClassObject->Get OK! Caption: USB ルート ハブ (USB 3.0)
USB ルート ハブだけ。
挿しているものではなくて、PC自身のルートハブデバイス。
手持ちのひとつ前のモデルのポータブルUSBHDDだと、
CoCreateInstance OK! pLocator = 0x00750628 pLocator->ConnectServer OK! pServices = 0x0074fcb8 CoSetProxyBlanket OK! pServices->ExecQuery OK! pEnumerator = 0x0075fa78 pEnumerator->Next OK! pClassObject = 0x00767a28 pClassObject->Get OK! Name: USB ルート ハブ (USB 3.0) pClassObject->Get OK! Caption: USB ルート ハブ (USB 3.0) pEnumerator->Next OK! pClassObject = 0x00767a28 pClassObject->Get OK! Name: USB 大容量記憶装置 pClassObject->Get OK! Caption: USB 大容量記憶装置
"USB 大容量記憶装置"という名前で、挿しているポータブルUSBHDDが追加された。
手持ちの最新のモデルのポータブルUSBHDDだと、
CoCreateInstance OK! pLocator = 0x007c0618 pLocator->ConnectServer OK! pServices = 0x007c0208 CoSetProxyBlanket OK! pServices->ExecQuery OK! pEnumerator = 0x007d7450 pEnumerator->Next OK! pClassObject = 0x007d8818 pClassObject->Get OK! Name: USB ルート ハブ (USB 3.0) pClassObject->Get OK! Caption: USB ルート ハブ (USB 3.0)
出てこない。
昔の違うタイプのポータブルUSBHDDでも、
CoCreateInstance OK! pLocator = 0x004f1fb8 pLocator->ConnectServer OK! pServices = 0x004f13b0 CoSetProxyBlanket OK! pServices->ExecQuery OK! pEnumerator = 0x004f6030 pEnumerator->Next OK! pClassObject = 0x0050eca0 pClassObject->Get OK! Name: USB ルート ハブ (USB 3.0) pClassObject->Get OK! Caption: USB ルート ハブ (USB 3.0)
出てこない。
この結果から、挿しているUSBデバイスの列挙にWin32_USBHubを使うのは好ましくないようだ。
Sample/wmi/Win32_USBHub/Win32_USBHub/src/Win32_USBHub at master · bg1bgst333/Sample · GitHub