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 コメントが含まれています。
コードを読みやすくするために、このドキュメントの関数例では入力パラメーターを検証しません。 これらの関数のいずれかをコードにコピーする場合は、入力パラメーターを検証する必要があります。
関連トピック