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.
Uyarı
UMDF 2, UMDF'nin en son sürümüdür ve UMDF 1'in yerini alır. Tüm yeni UMDF sürücüleri UMDF 2 kullanılarak yazılmalıdır. UMDF 1'e yeni özellik eklenmiyor ve Windows 10'un daha yeni sürümlerinde UMDF 1 desteği sınırlı. Evrensel Windows sürücüleri UMDF 2 kullanmalıdır.
Arşivlenen UMDF 1 örnekleri, Windows 11, sürüm 22H2 - Mayıs 2022 Sürücü Örnekleri Güncelleştirme'de bulunabilir.
Daha fazla bilgi için bkz. UMDF ile Çalışmaya Başlama.
Kesme veri arabelleğine erişen tüm sürücü kodu senkronize edilmelidir, böylece aynı anda yalnızca bir yordam verilere erişir.
Kesme kodunu el ile kesme kilitleme veya otomatik geri çağırma serileştirme kullanarak eşitleyebilirsiniz.
Manuel Kesme Kilitlemesi
UMDF, OnInterruptIsr, OnInterruptDisable veya OnInterruptEnable geri çağırmalarını çağırmadan önce kesme kilidini alır.
Bir sürücünün kesme kilidini kullanarak herhangi bir kodu eşitlemesi gerekiyorsa , IWDFInterrupt::AcquireInterruptLock ve IWDFInterrupt::ReleaseInterruptLock'u çağırır. Örneğin, bir sürücü bu yöntemleri kullanarak OnInterruptWorkItem geri çağırma yordamında kesme kilidini alır ve serbest bırakır. Ancak G/Ç gönderme geri çağırmalarında ( OnRead ve OnWrite gibi) sürücü, olası kilitlenmeleri önlemek için bir iş öğesini kuyruğa almaya veya aynı iş parçacığında çalışmaya karar vermek için önce IWDFInterrupt::TryToAcquireInterruptLock'u çağırır. Rastgele bir iş parçacığı bağlamından IWDFInterrupt::AcquireInterruptLock çağrısının neden olabileceği bir kilitlenme senaryosu örneği için , IWDFInterrupt::AcquireInterruptLock'un Açıklamalar bölümüne bakın.
IWDFInterrupt::TryToAcquireInterruptLockTRUE değerini döndürürse, sürücü aynı iş parçacığında kesme kilidini edinmiştir. Bu durumda, sürücü bu kilidi gerektiren çalışmayı gerçekleştirir ve releaseInterruptLock'u çağırır. IWDFInterrupt::TryToAcquireInterruptLockFALSE döndürürse, sürücü bir iş öğesini kuyruğa alır ve OnWorkItem geri çağırmasında işi gerçekleştirir. Bu durumda, iş öğesi otomatik serileştirme kullanmamalıdır.
Otomatik Serileştirmeyi Kullanma
UMDF sürücüsü, otomatik geri çağırma senkronizasyonunu, LockType parametresi WdfDeviceLevel olarak ayarlanmış IWDFDeviceInitialize::SetLockingConstraint çağrısı yaparak isteyebilir.
Sürücü daha sonra CreateInterrupt çağrısından önce WUDF_INTERRUPT_CONFIG yapısının AutomaticSerialization üyesini TRUE olarak ayarlar.
Sonuç olarak, UMDF G/Ç kuyruğu, istek iptali ve dosya nesnesi geri çağırma yordamları ile sürücünün OnInterruptWorkItem geri çağırmalarını serileştirir. Bu senaryoda UMDF, kesme başına nesne kilidi yerine geri çağırma kilidini kullanır.