Метод IMMDeviceEnumerator::GetDevice (mmdeviceapi.h)

Метод GetDevice извлекает устройство конечной точки звука, которое определяется строкой идентификатора конечной точки.

Синтаксис

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

Parameters

[in] pwstrId

Указатель на строку, содержащую идентификатор конечной точки. Вызывающий объект обычно получает эту строку из метода IMMDevice::GetId или одного из методов в интерфейсе IMMNotificationClient .

Начиная с Windows 11 версии 24H2 (сборка 26100), вызывающий объект также может передавать строку, полученную из свойства PKEY_AudioEndpoint_StableId в звуковой конечной точке, чтобы получить конечную точку звука с соответствующим стабильным Идентификатором.

[out] ppDevice

Указатель на переменную указателя, в которую метод записывает адрес интерфейса IMMDevice для указанного устройства. С помощью этого метода вызывающий объект получает подсчитываемую ссылку на интерфейс. Вызывающий объект отвечает за освобождение интерфейса, если он больше не нужен, вызывая метод выпуска интерфейса. Если вызов GetDevice завершается ошибкой, *ppDevice имеет значение NULL.

Возвращаемое значение

Если метод завершается успешно, возвращает значение S_OK. В случае сбоя возможные коды возврата включаются, но не ограничиваются значениями, приведенными в следующей таблице.

Код возврата Description
E_POINTER
Параметр pwstrId или ppDevice имеет значение NULL.
E_NOTFOUND
Идентификатор устройства не определяет звуковое устройство, которое находится в этой системе.
E_OUTOFMEMORY
Вне памяти.

Замечания

Если две программы выполняются в двух разных процессах и должны получить доступ к одному и тому же устройству аудио конечной точки, одна программа не может просто передать интерфейс IMMDevice устройства в другую программу. Однако программы могут получить доступ к тому же устройству, выполнив следующие действия.

  1. Первая программа вызывает метод IMMDevice::GetId в первом процессе, чтобы получить строку идентификатора конечной точки, которая идентифицирует устройство.
  2. Первая программа передает строку идентификатора конечной точки через границу процесса второй программе.
  3. Чтобы получить ссылку на интерфейс IMMDevice устройства во втором процессе, вторая программа вызывает GetDevice со строкой идентификатора конечной точки.
Дополнительные сведения о методе GetDevice см. в следующих разделах: Примеры кода, использующие метод GetDevice , см. в следующих разделах:

Requirements

Требование Ценность
Минимальный поддерживаемый клиент Windows Vista [только классические приложения]
минимальный поддерживаемый сервер Windows Server 2008 [только классические приложения]
целевая платформа Windows
Header mmdeviceapi.h

См. также

Интерфейс IMMDevice

IMMDevice::GetId

Интерфейс IMMDeviceEnumerator

Интерфейс IMMNotificationClient