Utilisation des exemples de code du Kit de développement logiciel (SDK) au format Windows Media

[La fonctionnalité associée à cette page, le Kit de développement logiciel (SDK) Windows Media Format 11, est une fonctionnalité héritée. Il a été remplacé par lecteur source et enregistreur récepteur. Le lecteur source et l’enregistreur récepteur ont été optimisés pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise le lecteur source et l’enregistreur récepteur au lieu du Kit de développement logiciel (SDK) Windows Media Format 11, lorsque cela est possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]

La plupart des sections explicatives de ce Kit de développement logiciel (SDK) incluent des exemples de code. Les exemples sont écrits pour être aussi clairs et concis que possible. Lorsque vous lisez les exemples, vous devez connaître les conventions suivantes.

  • Tous les exemples sont supposés inclure windows.h et wmsdk.h. Tous les autres fichiers d’en-tête requis sont mentionnés dans le texte explicatif.

  • La vérification des erreurs a été limitée à la rupture de la fonction si une erreur se produit. Dans une application, vous devez case activée pour des codes d’erreur spécifiques et fournir un certain type de rapport d’erreurs.

    Lorsque vous vérifiez les valeurs de retour à partir de méthodes ou de fonctions qui retournent une valeur HRESULT , vous devez utiliser la macro FAILED pour déterminer si la valeur de retour indique un échec.

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

    La plupart des exemples de cette documentation utilisent une macro nommée GOTO_EXIT_IF_FAILED, qui est définie dans le code suivant.

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

    Ces exemples de fonctions ont chacune une balise nommée « Exit: », après laquelle toutes les interfaces et la mémoire allouées dans la fonction sont libérées et le code d’erreur, le cas échéant, est retourné.

  • Les interfaces et la mémoire sont publiées dans les exemples de code à l’aide de macros nommées SAFE_RELEASE et SAFE_ARRAY_DELETE. Ces macros sont définies dans le code suivant :

    #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
    
  • Souvent, vous devez inclure la logique d’un exemple dans un autre exemple pour que l’exemple soit significatif. Dans ces cas, un commentaire TODO est inclus, avec une référence à l’exemple de code approprié.

  • Pour faciliter la lecture du code, aucun des exemples de fonctions de cette documentation ne valide ses paramètres d’entrée. Si vous copiez l’une de ces fonctions dans votre code, vous devez valider tous les paramètres d’entrée.

Prise en main