ASSOCIATORS OFは、指定された条件のインスタンスに関連のあるインスタンスを列挙する。
ASSOCIATORS OF ステートメント - Win32 apps | Microsoft Docs
この「関連のある」という概念が難しいのだが、
例えば、あるDeviceIDを持つWin32_USBHubのインスタンスがあるとしたら、関連のあるインスタンスのうち1つはそのUSBデバイスが挿さっているPC側のWin32_USBControllerインスタンスである。
実はそれ以外にもあるけど、とりあえずやってみる。
ASSOCIATORS_OF.cppで、
SELECTで、Win32_USBHubのDeviceIDを取得したら、それを使って、
ASSOCIATORS OF{Win32_USBHub.DeviceID='ここに取得したDeviceID'}
こんな感じのクエリを指定して、また実行する。
そうすると、
1つ目は、
Win32_PnPEntity。
2つ目は、
Win32_USBController。
3つ目は、
Win32_ComputerSystem。
3つ目のWin32_ComputerSystemについては、今回あまり関係ないので除く。
2つ目のWin32_USBControllerが、Win32_USBHubが挿さっているPC側のUSBコントローラのことで、上で言ったやつ。
1つ目のWin32_PnPEntityが、すべてのUSBを含めたプラグアンドプレイデバイスが持っている(というかプラグアンドプレイデバイスを示す)インスタンス。
これまでWin32_USBHubで出てこないUSBデバイスがあったが、Win32_PnPEntityなら全て出てくる(はず)。
(MSDNだとDeviceIDをダブルクォートで囲ってるけど、実際はシングルクォートじゃないと失敗するみたいなので注意!)
Sample/wmi/ASSOCIATORS_OF/ASSOCIATORS_OF/src/ASSOCIATORS_OF at master · bg1bgst333/Sample · GitHub