Интерфейс 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 отображаются сведения о разъеме. Чтобы просмотреть сведения о разъеме, выполните следующие действия.

  1. Чтобы запустить Mmsys.cpl, откройте окно командной строки и введите следующую команду:

    mmsys.cplуправления

    Кроме того, можно запустить Mmsys.cpl, щелкнув правой кнопкой мыши значок динамика в области уведомлений, расположенной в правой части панели задач, и выбрав пункты Устройства воспроизведения или Устройства записи.

  2. Когда откроется окно Mmsys.cpl, выберите устройство из списка устройств воспроизведения или списка записывающих устройств и нажмите кнопку Свойства.
  3. Когда откроется окно свойств, щелкните Общие. Если на странице выбранного свойства отображаются сведения о разъеме для устройства, устройство поддерживает интерфейс IKsJackDescription . Если на странице свойств отображается текст "Нет сведений о разъеме", устройство не поддерживает интерфейс .
В следующем примере кода показано, как получить интерфейс 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

См. также раздел

Основные звуковые интерфейсы

DeviceTopology API

IPart::Activate