使用 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 批註,並參考適當的程式碼範例。
為了讓程式碼更容易閱讀,本檔中的範例函式都不會驗證其輸入參數。 如果您將這些函式中的任何一個複製到程式碼中,您應該驗證任何輸入參數。
相關主題