IMMDeviceEnumerator::GetDevice 方法 (mmdeviceapi.h)

GetDevice 方法检索由终结点 ID 字符串标识的音频终结点设备。

Syntax

HRESULT GetDevice(
  [in]  LPCWSTR   pwstrId,
  [out] IMMDevice **ppDevice
);

Parameters

[in] pwstrId

指向包含终结点 ID 的字符串的指针。 调用方通常从 IMMDevice::GetId 方法或 IMMNotificationClient 接口中的某个方法获取此字符串。

从 Windows 11版本 24H2(内部版本 26100)开始,调用方还可以传入从音频终结点上的 PKEY_AudioEndpoint_StableId 属性获取的字符串,以检索具有匹配 StableId 的音频终结点。

[out] ppDevice

指向指针变量的指针变量,该方法将指定设备的 IMMDevice 接口的地址写入其中。 通过此方法,调用方获取对接口的计数引用。 调用方负责通过调用接口的 Release 方法,在不再需要接口时释放接口。 如果 GetDevice 调用失败, *ppDeviceNULL

返回值

如果此方法成功,则返回 S_OK。 如果失败,则可能的返回代码包括但不限于下表中显示的值。

返回代码 Description
E_POINTER
参数 pwstrIdppDeviceNULL
E_NOTFOUND
设备 ID 不标识此系统中的音频设备。
E_OUTOFMEMORY
内存不足。

注解

如果两个程序在两个不同的进程中运行,并且两者都需要访问相同的音频终结点设备,则一个程序不能简单地将设备的 IMMDevice 接口传递给另一个程序。 但是,程序可以按照以下步骤访问同一设备:

  1. 第一个程序在第一个进程中调用 IMMDevice::GetId 方法,以获取标识设备的终结点 ID 字符串。
  2. 第一个程序将终结点 ID 字符串跨进程边界传递到第二个程序。
  3. 若要在第二个进程中获取对设备的 IMMDevice 接口的引用,第二个程序使用终结点 ID 字符串调用 GetDevice
有关 GetDevice 方法的详细信息,请参阅以下主题: 有关使用 GetDevice 方法的代码示例,请参阅以下主题:

Requirements

Requirement 价值
最低支持的客户端 Windows Vista [仅限桌面应用]
支持的最低服务器 Windows Server 2008 [仅限桌面应用]
目标平台 Windows操作系统
标头 mmdeviceapi.h

另见

IMMDevice 接口

IMMDevice::GetId

IMMDeviceEnumerator 接口

IMMNotificationClient 接口