ResultClass

ASSOCIATORS OFステートメントのWHERE句の後に定義済みキーワードと値を指定できる。
ResultClassは、数ある関連インスタンスの中で、どのクラスのインスタンスだけを返すか絞り込める。

ASSOCIATORS OF ステートメント - Win32 apps | Microsoft Docs

SELECTなしに、いきなりASSOCIATORS OFいけるのか試してみる。
Win32_USBControllerのホストコントローラに関連するインスタンスを出してみる。

	// クエリの実行.
	std::wstring q = L"ASSOCIATORS OF{Win32_USBController.Name=\'";	// "ASSOCIATORS OF{Win32_USBController.Name=\'"をqにセット.
	q = q + L"Intel(R) USB 3.0 eXtensible Host Controller - 1.0 (Microsoft)";	// "Intel(R) USB 3.0 eXtensible Host Controller - 1.0 (Microsoft)"を連結.
	q = q + L"\'}";	// "\'}"を連結.
	BSTR strQueryLanguage = SysAllocString(L"WQL");	// SysAllocStringでstrQueryLanguageを"WQL"で初期化.
	BSTR strQuery = SysAllocString(q.c_str());	// SysAllocStringでstrQueryをq.c_str()で初期化.
	hr6 = pServices->ExecQuery(strQueryLanguage, strQuery, WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY, NULL, &pEnumerator);	// IWbemServices::ExecQueryでクエリ実行.
	if (FAILED(hr6)){	// FAILEDマクロで判定.

Nameを固定で指定する。

あれ?出ない・・・。
あれ?出ない・・・。

あれ?出ない・・・。
""指定したNameに当てはまるインスタンス"に関連したインスタンス"という単純な話ではないのか・・・。
DeviceIDならいけるのかなとおもったけど、固定だと見せにくいなあ・・・。

	// クエリの実行.
	std::wstring q = L"ASSOCIATORS OF{Win32_USBController.DeviceID=\'";	// "ASSOCIATORS OF{Win32_USBController.DeviceID=\'"をqにセット.
	q = q + argv[1];	// argv[1]を連結.
	q = q + L"\'}";	// "\'}"を連結.
	BSTR strQueryLanguage = SysAllocString(L"WQL");	// SysAllocStringでstrQueryLanguageを"WQL"で初期化.
	BSTR strQuery = SysAllocString(q.c_str());	// SysAllocStringでstrQueryをq.c_str()で初期化.
	hr6 = pServices->ExecQuery(strQueryLanguage, strQuery, WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY, NULL, &pEnumerator);	// IWbemServices::ExecQueryでクエリ実行.
	if (FAILED(hr6)){	// FAILEDマクロで判定.

引数で渡すことにした。

DeviceIDは、ダブルクォートで囲み、しかもエスケープの'\'によって二重になってるから1つにする。
DeviceIDは、ダブルクォートで囲み、しかもエスケープの'\'によって二重になってるから1つにする。

DeviceIDは、ダブルクォートで囲み、しかもエスケープの'\'によって二重になってるから1つにする。

成功した。Win32_PnPEntryはBLEとかいろんなデバイスがたくさん出てくる。
成功した。Win32_PnPEntryはBLEとかいろんなデバイスがたくさん出てくる。

成功した。
"DeviceIDに関連する"というところがキモなのかな・・・難しい・・・。
Win32_PnPEntryはBLEとかいろんなデバイスがたくさん出てくる。

Win32_USBHub
Win32_USBHub

Win32_USBHubや、

Win32_IRQResource
Win32_IRQResource

Win32_IRQResource、

Win32_DeviceMemoryAddress
Win32_DeviceMemoryAddress

Win32_DeviceMemoryAddress、

Win32_ComputerSystem
Win32_ComputerSystem

Win32_ComputerSystemなど、関連するあらゆるものが出てくる・・・。

ResultClassにWin32_USBHubを指定すると、

Win32_USBHubだけに絞り込める
Win32_USBHubだけに絞り込める

Win32_USBHubだけに絞り込める。

Sample/wmi/ASSOCIATORS_OF/ResultClass/src/ASSOCIATORS_OF at master · bg1bgst333/Sample · GitHub