使用 Windows 媒體格式 SDK 程式代碼範例
[與此頁面相關聯的功能 Windows Media Format 11 SDK是舊版功能。 來源讀取器 和 接收寫入器已取代它。 來源讀取器 和 接收寫入器 已針對 Windows 10 和 Windows 11 優化。 Microsoft強烈建議新程式代碼盡可能使用 來源讀取器 和 接收寫入器,而不是 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 批注,並參考適當的程式代碼範例。
為了讓程式代碼更容易閱讀,本文件中沒有任何範例函式會驗證其輸入參數。 如果您將這些函式中的任何一個複製到您的程式代碼中,您應該驗證任何輸入參數。
相關主題