Share via


Verwenden der Windows Media Format SDK-Codebeispiele

[Das dieser Seite zugeordnete Feature Windows Media Format 11 SDK ist ein Legacyfeature. Es wurde von Source Reader und Sink Writer abgelöst. Source Reader und Sink Writer wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code nach Möglichkeit quellleser und Senkenschreiber anstelle des Windows Media Format 11 SDK verwendet. Microsoft schlägt vor, dass vorhandener Code, der die Legacy-APIs verwendet, so umgeschrieben wird, dass nach Möglichkeit die neuen APIs verwendet werden.]

Viele der erläuternden Abschnitte dieses SDK enthalten Codebeispiele. Die Beispiele sind so klar und präzise wie möglich geschrieben. Wenn Sie die Beispiele lesen, sollten Sie die folgenden Konventionen beachten.

  • Es wird davon ausgegangen, dass alle Beispiele windows.h und wmsdk.h enthalten. Alle anderen erforderlichen Headerdateien werden im erläuternden Text erwähnt.

  • Die Fehlerüberprüfung wurde auf das Unterbrechen der Funktion beschränkt, wenn ein Fehler auftritt. In einer Anwendung sollten Sie nach bestimmten Fehlercodes suchen und eine Art von Fehlerberichterstattung bereitstellen.

    Beim Überprüfen von Rückgabewerten von Methoden oder Funktionen, die einen HRESULT-Wert zurückgeben, sollten Sie das MAKRO FAILED verwenden, um zu ermitteln, ob der Rückgabewert auf einen Fehler hinweist.

    HRESULT hr;
    hr = SomeFunction();
    if (FAILED(hr))
    {
       // Check for specific error values.
    }
    

    In vielen Beispielen in dieser Dokumentation wird ein Makro namens GOTO_EXIT_IF_FAILED verwendet, das im folgenden Code definiert ist.

    #ifndef GOTO_EXIT_IF_FAILED
    #define GOTO_EXIT_IF_FAILED(hr) if(FAILED(hr)) goto Exit;
    #endif
    

    Diese Beispielfunktionen verfügen jeweils über ein Tag mit dem Namen "Exit:", nach dem alle in der Funktion zugeordneten Schnittstellen und Arbeitsspeicher freigegeben werden und der Fehlercode zurückgegeben wird, falls vorhanden.

  • Schnittstellen und Arbeitsspeicher werden in den Codebeispielen mithilfe von Makros namens SAFE_RELEASE und SAFE_ARRAY_DELETE freigegeben. Diese Makros sind im folgenden Code definiert:

    #ifndef SAFE_RELEASE
    #define SAFE_RELEASE(x) \
       if(x != NULL)        \
       {                    \
          x->Release();     \
          x = NULL;         \
       }
    #endif
    
    #ifndef SAFE_ARRAY_DELETE
    #define SAFE_ARRAY_DELETE(x) \
       if(x != NULL)             \
       {                         \
          delete[] x;            \
          x = NULL;              \
       }
    #endif
    
  • Häufig müssen Sie die Logik eines Beispiels in ein anderes Beispiel einschließen, damit das Beispiel sinnvoll ist. In diesen Fällen ist ein TODO-Kommentar mit einem Verweis auf das entsprechende Codebeispiel enthalten.

  • Um die Lesbarkeit des Codes zu erleichtern, überprüft keine der Beispielfunktionen in dieser Dokumentation ihre Eingabeparameter. Wenn Sie eine dieser Funktionen in Ihren Code kopieren, sollten Sie alle Eingabeparameter überprüfen.

Erste Schritte