Kesme İşlemi (UMDF 1)

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.

Kesintiye yanıt verme iki adımdan oluşur:

  1. Geçici bilgileri (kayıt içeriği gibi) bir kesme hizmeti rutininde hızla kaydetme.
  2. Kaydedilmiş geçici bilgiyi bir iş öğesi rutini içinde işleme.

Bir cihaz bir donanım kesintisi oluşturduğunda, çerçeve tabanlı sürücülerin OnInterruptIsr geri çağırma işlevi olarak uyguladığı sürücünün kesme hizmeti yordamını (ISR) çağırır.

PASSIVE_LEVEL'de çalışan OnInterruptIsr geri çağırma işlevi, kayıt içeriği gibi kesme bilgilerini hızla kaydetmeli, verileri işlemek için bir iş öğesini kuyruğa almalı ve kesme satırı paylaşılırsa diğer kesmelerin bakımına izin vermek için ISR'den geri dönmelidir. UMDF sürücüsünün ISR'sı PASSIVE_LEVEL'de çalıştığından, PCI hattı tabanlı kesmeleri işlemek tercih edilmez. Bu kesmeler genellikle birden çok cihaz arasında paylaşılır ve bazıları ISR gecikmelerini kabul etmeyebilir. Ancak, UMDF sürücüsünde PCI MSI kesmelerini işleyebilirsiniz. Bu kesmeler kenar semantiğine sahiptir ve paylaşılmaz.

Genellikle OnInterruptIsr çağrı işlevi, kaydedilen bilgileri daha sonra işlemek için bir iş öğesi zamanlar. Çerçeve tabanlı sürücüler, iş öğesi yordamlarını OnInterruptWorkItem geri çağırma işlevleri olarak uygular.

Sürücülerin çoğu her kesme türü için tek bir OnInterruptWorkItem geri çağırma işlevi kullanır. OnInterruptWorkItem geri çağırma işlevinin yürütülmesini zamanlamak için, bir sürücünün OnInterruptIsr geri çağırma işlevinin içinden IWDFInterrupt::QueueWorkItemForIsr çağrısı yapması gerekir.

Sürücünüz her cihaz için birden çok çerçeve kuyruğu nesnesi oluşturuyorsa, her kuyruk için ayrı bir workitem nesnesi ve OnWorkItem geri çağırma işlevi kullanmayı düşünebilirsiniz. OnWorkItem geri çağırma işlevinin yürütülmesini zamanlamak için, sürücünün önce genellikle sürücünün IDriverEntry::OnDeviceAdd geri çağırma işlevinden IWdfDevice3::CreateWorkItem çağrısı yaparak bir veya daha fazla workitem nesnesi oluşturması gerekir. Ardından sürücünün OnInterruptIsr geri çağırma işlevi IWDFWorkItem::Enqueue çağrısı yapabilir.

Sürücüler genellikle OnInterruptWorkItem veya OnWorkItem geri çağırma işlevlerinde G/Ç isteklerini tamamlar.

Kesmeleri işleyen bir UMDF sürücüsü örneği için Bkz. Windows 8 WDK'den başlayarak kullanılabilen SpbAccelerometer örnek sürücüsü.