Не могу получить ссылку на IPart - PullRequest
0 голосов
/ 06 февраля 2011

Я пытаюсь получить ссылку на интерфейс IPart, например, для контроля уровня громкости звука в Windows, и я использую функцию IDeviceTopology::GetPartById, чтобы получить его.

Эта функция принимает UINT. Я попытался 0 и ничего не получил, затем сдался и просто попытался увеличить UINT, пока я не смогу получить ссылку. Не повезло.

У меня есть ссылка на правильную топологию устройства.

Мой HRESULT E_INVALIDARG.

Это просто тот случай, когда на моем устройстве нет доступных частей?

MSDN говорит, что для получения идентификатора для передачи в GetPartById я должен позвонить IAudioInputSelector::GetSelection. Чтобы использовать IAudioInputSelector, мне нужно иметь ссылку на объект IPart.

1 Ответ

1 голос
/ 06 февраля 2011

Самый простой способ - перечислить выводы узла и вызвать GetSignalPath из нужного ввода в требуемый вывод, который вернет вам набор деталей.

В качестве альтернативы, если у вас есть объект топологии, вы можетевызовите GetSubunit или GetConnector для извлечения субъединиц или соединителей (которые также являются частями).Из каждого соединителя вы можете вызвать GetConnectedTo (), который вернет деталь на другой стороне соединителя.Продолжайте, и вы сможете просмотреть весь график топологии и идентифицировать все части.

...