Aracılığıyla paylaş


Windows Media Format SDK Kod Örneklerini Kullanma

[Windows Media Format 11 SDK bu sayfayla ilişkilendirilmiş özellik eski bir özelliktir. Kaynak Okuyucu ve Havuz Yazıcısıtarafından değiştirildi. Kaynak Okuyucu ve Havuz Yazıcısı Windows 10 ve Windows 11 için iyileştirilmiştir. Microsoft, yeni kodun mümkün olduğunda Kaynak Okuyucu ve Veri Çıkış Yazıcı kullanmasını ve Windows Media Format 11 SDKyerine geçiş yapmasını kesinlikle önerir. Microsoft, mümkünse yeni API'leri kullanmak için eski API'leri kullanan mevcut kodun yeniden yazılmasını önerir.]

Bu SDK'nın açıklayıcı bölümlerinin çoğu kod örnekleridir. Örnekler olabildiğince net ve kısa olacak şekilde yazılmıştır. Örnekleri okurken aşağıdaki kuralların farkında olmanız gerekir.

  • Tüm örneklerin windows.h ve wmsdk.h olduğu varsayılır. Diğer gerekli üst bilgi dosyaları açıklayıcı metinde belirtilir.

  • Hata denetimi, bir hata oluştuğunda işlevden çıkmakla sınırlandırılmıştır. Bir uygulamada belirli hata kodlarını denetlemeniz ve bir tür hata bildirimi sağlamanız gerekir.

    HRESULT değeri döndüren yöntem veya işlevlerden döndürülen değerleri denetlerken, dönüş değerinin hataya işaret edip etmediğini bulmak için FAILED makrosunu kullanmanız gerekir.

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

    Bu belgelerdeki örneklerin çoğunda, aşağıdaki kodda tanımlanan GOTO_EXIT_IF_FAILED adlı bir makro kullanılır.

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

    Bu örnek işlevlerin her biri "Exit:" adlı bir etikete sahiptir; bundan sonra işlevde ayrılan tüm arabirimler ve bellek serbest bırakılır ve varsa hata kodu döndürülür.

  • Arabirimler ve bellek kod örneklerinde SAFE_RELEASE ve SAFE_ARRAY_DELETE adlı makrolar kullanılarak serbest bırakılır. Bu makrolar aşağıdaki kodda tanımlanır:

    #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
    
  • Genellikle, bir örneğin mantığını anlamlı olması için başka bir örnekte eklemeniz gerekir. Bu örneklerde, uygun kod örneğine başvuru içeren bir TODO açıklaması eklenir.

  • Kodun daha kolay okunmasını sağlamak için, bu belgedeki örnek işlevlerin hiçbiri giriş parametrelerini doğrulamaz. Bu işlevlerden herhangi birini kodunuz içine kopyalarsanız, herhangi bir giriş parametresini doğrulamanız gerekir.

Başlarken