共用方式為


使用 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 批註,並參考適當的程式碼範例。

  • 為了讓程式碼更容易閱讀,本檔中的範例函式都不會驗證其輸入參數。 如果您將這些函式中的任何一個複製到程式碼中,您應該驗證任何輸入參數。

快速入門