Delen via


Voorbeelden van Windows Media Format SDK-code gebruiken

[De functie die is gekoppeld aan deze pagina, Windows Media Format 11 SDK, is een verouderde functie. Het is vervangen door Source Reader en Sink Writer. Bronlezer en Sink Writer zijn geoptimaliseerd voor Windows 10 en Windows 11. Microsoft raadt ten zeerste aan om nieuwe code te gebruiken bronlezer en Sink Writer- in plaats van Windows Media Format 11 SDK, indien mogelijk. Microsoft stelt voor dat bestaande code die gebruikmaakt van de verouderde API's, indien mogelijk opnieuw worden geschreven om de nieuwe API's te gebruiken.]

Veel van de verklarende secties van deze SDK bevatten codevoorbeelden. De voorbeelden worden zo duidelijk en beknopt mogelijk geschreven. Wanneer u de voorbeelden leest, moet u rekening houden met de volgende conventies.

  • Alle voorbeelden worden verondersteld windows.h en wmsdk.h op te nemen. Alle andere vereiste headerbestanden worden vermeld in de verklarende tekst.

  • Foutcontrole is beperkt tot het beĆ«indigen van de functie als er een fout optreedt. In een toepassing moet u controleren op specifieke foutcodes en een soort foutrapportage opgeven.

    Wanneer u retourwaarden controleert op methoden of functies die een HRESULT- waarde retourneren, moet u de macro MISLUKT gebruiken om te ontdekken of de retourwaarde een fout aangeeft.

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

    Veel van de voorbeelden in deze documentatie maken gebruik van een macro met de naam GOTO_EXIT_IF_FAILED, die in de volgende code is gedefinieerd.

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

    Deze voorbeeldfuncties hebben elk een tag met de naam Exit:, waarna alle interfaces en geheugen die in de functie zijn toegewezen, worden vrijgegeven en de foutcode, indien aanwezig, wordt geretourneerd.

  • Interfaces en geheugen worden vrijgegeven in de codevoorbeelden met behulp van macro's met de naam SAFE_RELEASE en SAFE_ARRAY_DELETE. Deze macro's worden gedefinieerd in de volgende code:

    #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
    
  • Vaak moet u de logica van het ene voorbeeld opnemen in een ander voorbeeld, zodat het voorbeeld zinvol is. In deze gevallen wordt een todo-opmerking opgenomen, met een verwijzing naar het juiste codevoorbeeld.

  • Om de code beter leesbaar te maken, valideert geen van de voorbeeldfuncties in deze documentatie de invoerparameters. Als u een van deze functies naar uw code kopieert, moet u eventuele invoerparameters valideren.

Aan de slag