Интерфейс IKsJackDescription (devicetopology.h)
Интерфейс IKsJackDescription предоставляет сведения о разъемах или внутренних соединителях, которые обеспечивают физическое соединение между устройством на звуковом адаптере и внешним или внутренним устройством конечной точки (например, микрофоном или проигрывателем компакт-дисков). Клиент получает ссылку на интерфейс IKsJackDescription части, вызывая метод IPart::Activate с параметром refiid , равным REFIID IID_IKsJackDescription. Вызов IPart::Activate завершается успешно, только если часть поддерживает интерфейс IKsJackDescription . Этот интерфейс поддерживает только объект part, представляющий соединитель с Physical_External или Physical_Internal типом подключения.
Большинство драйверов аудиоадаптера Windows поддерживают модель драйвера Windows (WDM) и используют свойства потоковой передачи ядра (KS) для представления параметров описания оборудования в соединителях (называемых контактами KS). Интерфейс IKsJackDescription обеспечивает удобный доступ к свойству KSPROPERTY_JACK_DESCRIPTION соединителя к устройству конечной точки. Дополнительные сведения о свойствах KS и контактах KS см. в документации по Windows DDK.
Наследование
Интерфейс IKsJackDescription наследуется от интерфейса IUnknown . IKsJackDescription также содержит следующие типы элементов:
Методы
Интерфейс IKsJackDescription содержит следующие методы.
IKsJackDescription::GetJackCount Метод GetJackCount получает количество разъемов, необходимых для подключения к устройству конечной точки аудио. |
IKsJackDescription::GetJackDescription Метод GetJackDescription получает описание аудиоразъема. |
Комментарии
Если устройство конечной точки аудио поддерживает интерфейс IKsJackDescription , на панели управления мультимедиа Windows Mmsys.cpl отображаются сведения о разъеме. Чтобы просмотреть сведения о разъеме, выполните следующие действия.
-
Чтобы запустить Mmsys.cpl, откройте окно командной строки и введите следующую команду:
mmsys.cplуправления
Кроме того, можно запустить Mmsys.cpl, щелкнув правой кнопкой мыши значок динамика в области уведомлений, расположенной в правой части панели задач, и выбрав пункты Устройства воспроизведения или Устройства записи.
- Когда откроется окно Mmsys.cpl, выберите устройство из списка устройств воспроизведения или списка записывающих устройств и нажмите кнопку Свойства.
- Когда откроется окно свойств, щелкните Общие. Если на странице выбранного свойства отображаются сведения о разъеме для устройства, устройство поддерживает интерфейс IKsJackDescription . Если на странице свойств отображается текст "Нет сведений о разъеме", устройство не поддерживает интерфейс .
//-----------------------------------------------------------
// Get the IKsJackDescription interface that describes the
// audio jack or jacks that the endpoint device plugs into.
//-----------------------------------------------------------
#define EXIT_ON_ERROR(hres) \
if (FAILED(hres)) { goto Exit; }
#define SAFE_RELEASE(punk) \
if ((punk) != NULL) \
{ (punk)->Release(); (punk) = NULL; }
HRESULT GetJackInfo(IMMDevice *pDevice,
IKsJackDescription **ppJackDesc)
{
HRESULT hr = S_OK;
IDeviceTopology *pDeviceTopology = NULL;
IConnector *pConnFrom = NULL;
IConnector *pConnTo = NULL;
IPart *pPart = NULL;
IKsJackDescription *pJackDesc = NULL;
if (NULL != ppJackDesc)
{
*ppJackDesc = NULL;
}
if (NULL == pDevice || NULL == ppJackDesc)
{
return E_POINTER;
}
// Get the endpoint device's IDeviceTopology interface.
hr = pDevice->Activate(__uuidof(IDeviceTopology), CLSCTX_ALL,
NULL, (void**)&pDeviceTopology);
EXIT_ON_ERROR(hr)
// The device topology for an endpoint device always
// contains just one connector (connector number 0).
hr = pDeviceTopology->GetConnector(0, &pConnFrom);
EXIT_ON_ERROR(hr)
// Step across the connection to the jack on the adapter.
hr = pConnFrom->GetConnectedTo(&pConnTo);
if (HRESULT_FROM_WIN32(ERROR_PATH_NOT_FOUND) == hr)
{
// The adapter device is not currently active.
hr = E_NOINTERFACE;
}
EXIT_ON_ERROR(hr)
// Get the connector's IPart interface.
hr = pConnTo->QueryInterface(__uuidof(IPart), (void**)&pPart);
EXIT_ON_ERROR(hr)
// Activate the connector's IKsJackDescription interface.
hr = pPart->Activate(CLSCTX_INPROC_SERVER,
__uuidof(IKsJackDescription), (void**)&pJackDesc);
EXIT_ON_ERROR(hr)
*ppJackDesc = pJackDesc;
Exit:
SAFE_RELEASE(pDeviceTopology)
SAFE_RELEASE(pConnFrom)
SAFE_RELEASE(pConnTo)
SAFE_RELEASE(pPart)
return hr;
}
В приведенном выше примере кода функция GetJackInfo принимает два параметра. Входной параметр pDevice указывает на интерфейс IMMDevice устройства конечной точки. Выходной параметр ppJackDesc указывает на значение указателя, в которое функция записывает адрес соответствующего интерфейса IKsJackDescription , если интерфейс существует. Если интерфейс не существует, функция записывает значение NULL в *ppJackDesc и возвращает код ошибки E_NOINTERFACE.
В приведенном выше примере кода вызов IMMDevice::Activate получает интерфейс IDeviceTopology устройства конечной точки. Топология устройства конечной точки содержит один соединитель (номер соединителя 0), который подключается к устройству адаптера. На другой стороне этого подключения соединитель на устройстве адаптера представляет аудиоразъем или разъемы, к которым подключается устройство конечной точки. Вызов метода IDeviceTopology::GetConnector извлекает интерфейс IConnector соединителя на устройстве конечной точки, а вызов метода IConnector::GetConnectedTo извлекает соответствующий соединитель на устройстве адаптера. Наконец, вызов метода IConnector::QueryInterface получает интерфейс IPart соединителя устройства адаптера, а вызов метода IPart::Activate — интерфейс IKsJackDescription соединителя , если он существует.
Требования
Минимальная версия клиента | Windows Vista [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 [только классические приложения] |
Целевая платформа | Windows |
Header | devicetopology.h |