Abrufen von Formatfunktionen über IWMDMDevice

Die empfohlene Methode zum Abfragen der Wiedergabefunktionen eines Geräts ist IWMDMDevice3::GetFormatCapability. Wenn ein Gerät diese Methode jedoch nicht unterstützt, kann die Anwendung stattdessen IWMDMDevice::GetFormatSupport aufrufen, um ein Array unterstützter Audioformate als _WAVEFORMATEX Strukturen und MIME-Formate als Zeichenfolgen vom Gerät abzurufen.

Die folgenden Schritte zeigen, wie eine Anwendung diese Methode verwenden kann, um ein Gerät nach unterstützten Formaten abzufragen:

  1. Rufen Sie GetFormatSupport auf, um Arrays von Audio- und MIME-Formaten abzurufen.
  2. Durchlaufen Sie die abgerufenen Audioformate, und untersuchen Sie jede _WAVEFORMATEX Struktur, um ein akzeptables Audioformat zu finden.
  3. Durchlaufen Sie die abgerufenen MIME-Formatzeichenfolgen (falls gewünscht), um einen akzeptablen Dateityp zu finden. Das SDK definiert keine Konstanten für MIME-Formate. Sie sollten Branchenstandardwerte verwenden (die auf der iana.org-Website zu finden sind). Ein Gerät sollte die spezifischen MIME-Typen auflisten, die es unterstützt.

Der folgende C++-Code veranschaulicht das Abrufen von Formatfunktionen von einem Gerät mithilfe von GetFormatSupport.

// Function to print out device caps for a device 
// that supports only IWMDMDevice.
void CWMDMController::GetCaps(IWMDMDevice* pDevice)
{
    HRESULT hr = S_OK;

    // Get all capabilities for audio and mime support.
    _WAVEFORMATEX* pAudioFormats;
    LPWSTR* pMimeFormats;
    UINT numAudioFormats = 0;
    UINT numMimeFormats = 0;
    hr = pDevice->GetFormatSupport(
        &pAudioFormats,
        &numAudioFormats,
        &pMimeFormats,
        &numMimeFormats);
    if (FAILED(hr)) return;

    // Print out audio format data.
    if (numAudioFormats > 0)
    {
        // TODO: Display a banner for the supported audio-format listing.
    }
    else
    {
        // TODO: Display a message indicating that no audio formats are supported.
    }
    for (int i = 0; i < numAudioFormats; i++)
    {
       // TODO: For each valid audio format, display the max channel, 
       // max samples/second, avg. bytes/sec, block alignment, and 
       // max bits/sample values.
    }

    // Print out MIME formats.
    if (numMimeFormats > 0)
        // TODO: Display a banner to precede the MIME format listing.
    else
        // TODO: Display a banner indicating that no MIME formats are supported.
    for (i = 0; i < numMimeFormats; i++)
    {
        // TODO: Display the specified MIME format.
    }
    return;
}

Ermitteln von Geräteformatfunktionen

Abrufen von Formatfunktionen auf Geräten, die IWMDMDevice3 unterstützen