例如,我正在尝试获取对 IPart 接口(interface)的引用以控制 Windows 音频音量级别,并且我正在使用 IDeviceTopology::GetPartById
函数来获取它。
这个函数接受一个 UINT。我尝试了 0 但一无所获,然后放弃并尝试递增 UINT 直到我可以获得引用。运气不好。
我得到了正确设备拓扑的引用。
我的 HRESULT 是 E_INVALIDARG
。
是否只是我的设备上没有可用的部件?
MSDN说要获取要传递到 GetPartById 的 ID,我应该调用 IAudioInputSelector::GetSelection
。不过,要使用 IAudioInputSelector,我需要已经有一个 IPart 对象的引用。
最佳答案
最简单的方法是枚举主机引脚并从所需的输入调用 GetSignalPath 到所需的输出,这将返回一个零件集合。
或者,如果您有一个拓扑对象,您可以调用 GetSubunit 或 GetConnector 来检索子单元或连接器(它们也是零件)。从每个连接器,您可以调用 GetConnectedTo(),这将返回连接器另一侧的部件。继续,您将能够遍历整个拓扑图并识别所有部分。
关于c++ - 无法获得对 IPart 的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4910324/