Menggunakan Contoh Kode SDK Format Media Windows

[Fitur yang terkait dengan halaman ini, Windows Media Format 11 SDK, adalah fitur warisan. Ini telah digantikan oleh Pembaca Sumber dan Penulis Sink. Pembaca Sumber dan Penulis Sink telah dioptimalkan untuk Windows 10 dan Windows 11. Microsoft sangat menyarankan agar kode baru menggunakan Pembaca Sumber dan Penulis Sink alih-alih Windows Media Format 11 SDK, jika memungkinkan. Microsoft menyarankan agar kode yang ada yang menggunakan API warisan ditulis ulang untuk menggunakan API baru jika memungkinkan.]

Banyak bagian penjelasan dari SDK ini termasuk contoh kode. Contoh ditulis agar sejelas mungkin dan ringkas. Saat membaca contoh, Anda harus mengetahui konvensi berikut.

  • Semua contoh diasumsikan menyertakan windows.h dan wmsdk.h. File header lain yang diperlukan disebutkan dalam teks penjelasan.

  • Pemeriksaan kesalahan telah dibatasi untuk keluar dari fungsi jika terjadi kesalahan. Dalam aplikasi, Anda harus memeriksa kode kesalahan tertentu dan memberikan semacam pelaporan kesalahan.

    Saat memeriksa nilai pengembalian dari metode atau fungsi yang mengembalikan nilai HRESULT , Anda harus menggunakan makro GAGAL untuk menemukan apakah nilai yang dikembalikan menunjukkan kegagalan.

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

    Banyak contoh dalam dokumentasi ini menggunakan makro bernama GOTO_EXIT_IF_FAILED, yang didefinisikan dalam kode berikut.

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

    Contoh fungsi ini masing-masing memiliki tag bernama "Exit:", setelah itu semua antarmuka dan memori yang dialokasikan dalam fungsi dirilis dan kode kesalahan, jika ada, dikembalikan.

  • Antarmuka dan memori dirilis dalam contoh kode menggunakan makro bernama SAFE_RELEASE dan SAFE_ARRAY_DELETE. Makro ini didefinisikan dalam kode berikut:

    #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
    
  • Seringkali, Anda harus menyertakan logika dari satu contoh dalam contoh lain agar contohnya bermakna. Dalam kasus tersebut, komentar TODO disertakan, dengan referensi ke contoh kode yang sesuai.

  • Untuk membuat kode lebih mudah dibaca, tidak ada fungsi contoh dalam dokumentasi ini yang memvalidasi parameter inputnya. Jika Anda menyalin salah satu fungsi ini ke dalam kode Anda, Anda harus memvalidasi parameter input apa pun.

Persiapan