Compartir a través de


Interfaz IKsJackDescription (devicetopology.h)

La interfaz IKsJackDescription proporciona información sobre los conectores o conectores internos que proporcionan una conexión física entre un dispositivo en un adaptador de audio y un dispositivo de punto de conexión externo o interno (por ejemplo, un micrófono o reproductor de CD). El cliente obtiene una referencia a la interfaz IKsJackDescription de una parte llamando al método IPart::Activate con el parámetro refiid establecido en REFIID IID_IKsJackDescription. La llamada a IPart::Activate solo se realiza correctamente si la parte admite la interfaz IKsJackDescription . Solo un objeto de elemento que representa un conector con un tipo de conexión Physical_External o Physical_Internal admitirá esta interfaz.

La mayoría de los controladores de adaptador de audio de Windows admiten el modelo de controlador de Windows (WDM) y usan propiedades de streaming de kernel (KS) para representar los parámetros de descripción de hardware en los conectores (denominados patillas KS). La interfaz IKsJackDescription proporciona un acceso cómodo a la propiedad KSPROPERTY_JACK_DESCRIPTION de un conector a un dispositivo de punto de conexión. Para obtener más información sobre las propiedades KS y los patillas KS, consulta la documentación de Windows DDK.

Herencia

La interfaz IKsJackDescription hereda de la interfaz IUnknown . IKsJackDescription también tiene estos tipos de miembros:

Métodos

La interfaz IKsJackDescription tiene estos métodos.

 
IKsJackDescription::GetJackCount

El método GetJackCount obtiene el número de conectores necesarios para conectarse a un dispositivo de punto de conexión de audio.
IKsJackDescription::GetJackDescription

El método GetJackDescription obtiene una descripción de un conector de audio.

Comentarios

Si un dispositivo de punto de conexión de audio admite la interfaz IKsJackDescription , el panel de control multimedia de Windows, Mmsys.cpl, muestra la información del conector. Para ver la información del conector, siga estos pasos:

  1. Para ejecutar Mmsys.cpl, abra una ventana del símbolo del sistema y escriba el siguiente comando:

    control mmsys.cpl

    Como alternativa, puede ejecutar Mmsys.cpl haciendo clic con el botón derecho en el icono del altavoz en el área de notificación, que se encuentra en el lado derecho de la barra de tareas y seleccionando Dispositivos de reproducción o Dispositivos de grabación.

  2. Una vez que se abra la ventana Mmsys.cpl, seleccione un dispositivo en la lista de dispositivos de reproducción o en la lista de dispositivos de grabación y haga clic en Propiedades.
  3. Cuando se abra la ventana de propiedades, haga clic en General. Si la página de propiedades seleccionada muestra la información del conector para el dispositivo, el dispositivo admite la interfaz IKsJackDescription . Si la página de propiedades muestra el texto "No hay información de jack disponible", el dispositivo no admite la interfaz .
En el ejemplo de código siguiente se muestra cómo obtener la interfaz IKsJackDescription para un dispositivo de punto de conexión de audio:
//-----------------------------------------------------------
// 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;
}

En el ejemplo de código anterior, la función GetJackInfo toma dos parámetros. El parámetro de entrada pDevice apunta a la interfaz IMMDevice de un dispositivo de punto de conexión. El parámetro de salida ppJackDesc apunta a un valor de puntero en el que la función escribe la dirección de la interfaz IKsJackDescription correspondiente, si la interfaz existe. Si la interfaz no existe, la función escribe NULL en *ppJackDesc y devuelve el código de error E_NOINTERFACE.

En el ejemplo de código anterior, la llamada a IMMDevice::Activate recupera la interfaz IDeviceTopology del dispositivo de punto de conexión. La topología de dispositivo de un dispositivo de punto de conexión contiene un único conector (número de conector 0) que se conecta al dispositivo del adaptador. En el otro lado de esta conexión, el conector del dispositivo adaptador representa la toma de audio o los conectores a los que se conecta el dispositivo de punto de conexión. La llamada al método IDeviceTopology::GetConnector recupera la interfaz IConnector del conector en el dispositivo de punto de conexión y la llamada al método IConnector::GetConnectedTo recupera el conector correspondiente en el dispositivo del adaptador. Por último, la llamada al método IConnector::QueryInterface recupera la interfaz IPart del conector del dispositivo del adaptador y la llamada al método IPart::Activate recupera la interfaz IKsJackDescription del conector, si existe.

Requisitos

   
Cliente mínimo compatible Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado devicetopology.h

Consulte también

Interfaces de audio principales

DeviceTopology API

IPart::Activate