次の方法で共有


Windows Media Format SDK のコード例の使用

[このページに関連付けられている機能である Windows Media Format 11 SDK は、レガシ機能です。 これは、ソース リーダーシンク ライターによって置き換えられます。 ソース リーダーシンク ライターは、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、Windows Media Format 11 SDK ではなくソース リーダーシンク ライターを使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]

この SDK の説明セクションの多くは、コード例を含みます。 これらの例は、可能な限り明確かつ簡潔に記述されています。 例を読む場合は、次の規則に注意する必要があります。

  • すべての例には、windows.h と wmsdk.h が含まれていると想定されています。 その他の必須ヘッダー ファイルは、説明テキストに記載されています。

  • エラー チェックは、エラーが発生した場合の関数の中断に制限されています。 アプリケーションでは、特定のエラー コードをチェックし、何らかのエラー報告を提供する必要があります。

    HRESULT 値を返すメソッドまたは関数からの戻り値を確認する場合は、FAILED マクロを使用して、戻り値がエラーを示しているかどうかを検出する必要があります。

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

    このドキュメントの例の多くは、次のコードで定義されている GOTO_EXIT_IF_FAILED という名前のマクロを使用しています。

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

    これらの関数の例には、それぞれ "Exit:" という名前のタグがあります。その後、関数に割り当てられているすべてのインターフェイスとメモリが解放され、エラー コード (存在する場合) が返されます。

  • インターフェイスとメモリは、SAFE_RELEASE および SAFE_ARRAY_DELETE という名前のマクロを使用して、コード例でリリースされています。 これらのマクロは、次のコードで定義されています。

    #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
    
  • 多くの場合、この例が意味を持つには、ある例のロジックを別の例に含める必要があります。 これらのインスタンスには、適切なコード例への参照を含む TODO コメントが含まれています。

  • コードを読みやすくするために、このドキュメントの関数例では入力パラメーターを検証しません。 これらの関数のいずれかをコードにコピーする場合は、入力パラメーターを検証する必要があります。

はじめに