Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
[Waveform Audio bu sayfayla ilişkilendirilmiş özellik eski bir özelliktir. bunun yerini WASAPI ve Ses Graflarıalmıştır. WASAPI ve Ses Grafları, Windows 10 ve Windows 11 için iyileştirilmiştir. Microsoft, mümkün olduğunda yeni kodun Waveform Audioyerine WASAPI ve Ses Grafları kullanmasını kesinlikle önerir. Microsoft, mümkünse yeni API'leri kullanmak için eski API'leri kullanan mevcut kodun yeniden yazılmasını önerir.]
waveInAddBuffer ve waveOutWrite işlevleri, uygulamaların kayıt veya kayıttan yürütme amacıyla cihaz sürücülerine geçirmek üzere veri blokları ayırmasını gerektirir. Bu işlevlerin her ikisi de veri bloğunu açıklamak için WAVEHDR yapısını kullanır.
Bu işlevlerden birini kullanarak bir veri bloğunu bir cihaz sürücüsüne geçirmeden önce, veri bloğu ve veri bloğunu açıklayan üst bilgi yapısı için bellek ayırmanız gerekir. Üst bilgiler aşağıdaki işlevler kullanılarak hazırlanabilir ve hazır hale getirilebilir.
| Fonksiyon | Açıklama |
|---|---|
| waveInPrepareHeader | Waveform-audio giriş veri bloğunu hazırlar. |
| waveInUnprepareHeader | Waveform-audio giriş veri bloğundaki hazırlığı temizler. |
| waveOutPrepareHeader | Dalga biçimi-ses çıkış veri bloğunu hazırlar. |
| waveOutUnprepareHeader | Waveform-audio çıkış veri bloğundaki hazırlığı temizler. |
Bir ses veri bloğunu bir cihaz sürücüsüne geçirmeden önce, waveInPrepareHeader veya waveOutPrepareHeadergeçirerek veri bloğunu hazırlamanız gerekir. Cihaz sürücüsü veri bloğuyla bittiğinde ve döndürdüğünde, ayrılan bellek boşaltılmadan önce veri bloğunu waveInUnprepareHeader veya waveOutUnprepareHeader geçirerek bu hazırlığı temizlemeniz gerekir.
Waveform-audio giriş ve çıkış verileri tek bir veri bloğunda yer almak için yeterince küçük değilse, kayıttan yürütme veya kayıt tamamlanana kadar uygulamaların cihaz sürücüsüne sürekli olarak veri blokları sağlaması gerekir.
Tek bir veri bloğu kullanılsa bile, uygulamanın veri bloğu ve üst bilgi yapısıyla ilişkili belleği boşaltması için bir cihaz sürücüsünün veri bloğuyla ne zaman bittiğini saptayabilmesi gerekir. Bir cihaz sürücüsünün veri bloğuyla ne zaman biteceğini belirlemenin birkaç yolu vardır:
- Bir veri bloğuyla tamamlandığında sürücü tarafından gönderilen bir iletiyi almak için bir geri çağırma işlevi belirterek
- Olay geri çağırma kullanarak
- Bir veri bloğuyla tamamlandığında sürücü tarafından gönderilen bir iletiyi almak için bir pencere veya iş parçacığı belirterek
- her veri bloğuyla gönderilen WAVEHDR yapısının dwFlags üyesindeki WHDR_DONE biti yoklayarak
Bir uygulama gerektiğinde cihaz sürücüsüne veri bloğu almazsa, kayıttan yürütmede sesli bir boşluk veya gelen kayıtlı bilgi kaybı olabilir. Bu, en az bir çift arabelleğe alma düzeni gerektirir ve cihaz sürücüsünün en az bir veri bloğu önünde kalır.
Aşağıdaki konularda, bir cihaz sürücüsünün veri bloğuyla ne zaman biteceğini belirlemenin yolları açıklanmaktadır:
Sürücü İletilerini İşlemek için Geri Çağırma İşlevi Kullanma
- Sürücü İletilerini İşlemek için Geri Çağırma İşlevi Kullanma
- Sürücü İletilerini İşlemek için Olay Geri Çağırma kullanma
- Sürücü İletilerini İşlemek için Pencere veya İş Parçacığı Kullanma
- Yoklama ile Veri Bloklarını Yönetme