Interfaccia IKsJackDescription (devicetopology.h)

L'interfaccia IKsJackDescription fornisce informazioni sui jack o sui connettori interni che forniscono una connessione fisica tra un dispositivo su una scheda audio e un dispositivo endpoint esterno o interno ,ad esempio un microfono o un lettore CD. Il client ottiene un riferimento all'interfaccia IKsJackDescription di una parte chiamando il metodo IPart::Activate con il parametro refiid impostato su REFIID IID_IKsJackDescription. La chiamata a IPart::Activate ha esito positivo solo se la parte supporta l'interfaccia IKsJackDescription . Solo un oggetto part che rappresenta un connettore con un tipo di connessione Physical_External o Physical_Internal supporterà questa interfaccia.

La maggior parte dei driver dell'adattatore audio di Windows supporta il modello di driver Windows (WDM) e usa le proprietà di streaming del kernel (KS) per rappresentare i parametri di descrizione hardware nei connettori (definiti pin KS). L'interfaccia IKsJackDescription consente di accedere facilmente alla proprietà KSPROPERTY_JACK_DESCRIPTION di un connettore a un dispositivo endpoint. Per altre informazioni sulle proprietà KS e sui pin KS, vedere la documentazione di Windows DDK.

Ereditarietà

L'interfaccia IKsJackDescription eredita dall'interfaccia IUnknown . IKsJackDescription include anche questi tipi di membri:

Metodi

L'interfaccia IKsJackDescription include questi metodi.

 
IKsJackDescription::GetJackCount

Il metodo GetJackCount ottiene il numero di jack necessari per connettersi a un dispositivo endpoint audio.
IKsJackDescription::GetJackDescription

Il metodo GetJackDescription ottiene una descrizione di un jack audio.

Commenti

Se un dispositivo endpoint audio supporta l'interfaccia IKsJackDescription , il pannello di controllo multimediale di Windows, Mmsys.cpl, visualizza le informazioni sul jack. Per visualizzare le informazioni sul jack, seguire questa procedura:

  1. Per eseguire Mmsys.cpl, aprire una finestra del prompt dei comandi e immettere il comando seguente:

    controllo mmsys.cpl

    In alternativa, è possibile eseguire Mmsys.cpl facendo clic con il pulsante destro del mouse sull'icona dell'altoparlante nell'area di notifica, che si trova sul lato destro della barra delle applicazioni e selezionando Dispositivi di riproduzione o dispositivi di registrazione.

  2. Dopo aver aperto la finestra Mmsys.cpl, selezionare un dispositivo dall'elenco dei dispositivi di riproduzione o dall'elenco dei dispositivi di registrazione e fare clic su Proprietà.
  3. Quando si apre la finestra delle proprietà, fare clic su Generale. Se la pagina delle proprietà selezionata visualizza le informazioni sul jack per il dispositivo, il dispositivo supporta l'interfaccia IKsJackDescription . Se nella pagina delle proprietà viene visualizzato il testo "Nessuna informazione jack disponibile", il dispositivo non supporta l'interfaccia.
L'esempio di codice seguente illustra come ottenere l'interfaccia IKsJackDescription per un dispositivo endpoint 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;
}

Nell'esempio di codice precedente la funzione GetJackInfo accetta due parametri. Il parametro di input pDevice punta all'interfaccia IMMDevice di un dispositivo endpoint. Il parametro di output ppJackDesc punta a un valore del puntatore in cui la funzione scrive l'indirizzo dell'interfaccia IKsJackDescription corrispondente, se l'interfaccia esiste. Se l'interfaccia non esiste, la funzione scrive NULL in *ppJackDesc e restituisce il codice di errore E_NOINTERFACE.

Nell'esempio di codice precedente la chiamata a IMMDevice::Activate recupera l'interfaccia IDeviceTopology del dispositivo endpoint. La topologia del dispositivo di un endpoint contiene un singolo connettore (numero di connettore 0) che si connette al dispositivo adattatore. Dall'altra parte di questa connessione, il connettore nel dispositivo adattatore rappresenta il jack audio o i jack collegati dal dispositivo endpoint. La chiamata al metodo IDeviceTopology::GetConnector recupera l'interfaccia IConnector del connettore nel dispositivo endpoint e la chiamata al metodo IConnector::GetConnectedTo recupera il connettore corrispondente nel dispositivo adattatore. Infine, la chiamata al metodo IConnector::QueryInterface recupera l'interfaccia IPart del connettore del dispositivo adattatore e la chiamata al metodo IPart::Activate recupera l'interfaccia IKsJackDescription del connettore , se presente.

Requisiti

   
Client minimo supportato Windows Vista [solo app desktop]
Server minimo supportato Windows Server 2008 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione devicetopology.h

Vedi anche

Interfacce audio di base

DeviceTopology API

IPart::Activate