Aracılığıyla paylaş


Sürücü Geliştirmek için WDF Kullanma

Bu konu başlığında, Kernel-Mode Driver Framework (KMDF) sürücüsü geliştirmek için kullanacağınız çerçeve nesnelerine üst düzey bir genel bakış sağlanır. Belirtilen durumlar dışında, UMDF sürüm 2'den başlayarak bir User-Mode Driver Framework (UMDF) sürücüsü geliştirmek için aynı nesneleri kullanacaksınız.

Windows Sürücü Çerçeveleri (WDF) sürücüleri, DriverEntry yordamı ve çerçeve tabanlı sürücülerin kullandığı Windows Driver Framework nesneleri tarafından tanımlanan bir dizi olay geri çağırma işlevinden oluşur. Geri çağırma işlevleri, çerçevenin dışarı aktardığını nesne yöntemlerini çağırır. Windows Driver Kit (WDK), bir sürücünün olay geri çağırma işlevlerinin nasıl uygulandığını gösteren örnek WDF sürücüleri içerir. Bu örnekleri Windows Geliştirme Merkezi - Donanım'ndan indirebilirsiniz. Hangi örneklerin kullanılabilir olduğu hakkında bilgi için bkz. Örnek KMDF Sürücüleri ve Örnek UMDF Sürücüleri.

Bir WDF sürücüsü oluşturduğunuzda, genellikle aşağıdakileri yaparsınız:

  • Sürücünüzü temsil etmek için bir framework sürücü nesnesi kullanın.

    Sürücünün DriverEntry yordamı, sürücüyü temsil eden bir çerçeve sürücüsü nesnesi oluşturmak için WdfDriverCreate çağırmalıdır. WdfDriverCreate yöntemi ayrıca sürücünün EvtDriverDeviceAdd geri çağırma işlevini kaydeder. Bu işlev, Tak çalıştır (PnP) yöneticisinin sürücünün desteklediği bir cihazın varlığını her bildirdiğinde çerçeve tarafından çağrılır.

  • Sürücünüzde PnP ve güç yönetimini desteklemek için framework cihaz nesnelerini kullanın.

    Bir sürücünün desteklediği her cihaz için bir çerçeve cihaz nesnesi oluşturmak için tüm sürücülerin WdfDeviceCreate çağırması gerekir. Bir cihaz, bilgisayara takılı bir donanım parçası veya yalnızca yazılıma sahip bir cihaz olabilir. Çerçeve cihaz nesneleri PnP ve güç yönetimi işlemlerini destekler ve sürücüler, bir cihaz çalışma durumuna girdiğinde veya ayrıldığında sürücüyü bilgilendiren olay geri çağırma işlevlerini kaydedebilir.

    Çerçeve cihaz nesneleri hakkında daha fazla bilgi için bkz. Sürücünüzde PnP ve Güç Yönetimini Destekleme.

  • Sürücünüzdeki G/Ç işlemlerini desteklemek için framework kuyruk nesnelerini ve framework isteği nesnelerini kullanın.

    Uygulamalardan veya diğer sürücülerden okuma, yazma veya cihaz G/Ç denetimi istekleri alan tüm sürücülerin G/Ç kuyruklarını temsil eden çerçeve kuyruğu nesneleri oluşturmak için WdfIoQueueCreateCreate çağrısı yapması gerekir. Sürücüler genellikle her G/Ç kuyruğu için bir veya daha fazla istek işleyicisi kaydeder. G/Ç yöneticisi sürücüye bir G/Ç isteği gönderdiğinde, çerçeve istek için bir çerçeve isteği nesnesi oluşturur, istek nesnesini bir G/Ç kuyruğuna yerleştirir ve sürücünün istek işleyicilerinden birini çağırarak sürücüye bir isteğin kullanılabilir olduğunu bildirir. Sürücü G/Ç isteğini alır ve isteği yeniden sorgulayabilir, tamamlayabilir, iptal edebilir veya iletebilir.

    Çerçevenin kuyruk nesnelerini ve istek nesnelerini kullanma hakkında daha fazla bilgi için bkz. Framework Kuyruk Nesneleri ve Framework İstek Nesneleri.

  • Cihaz kesmelerini işlemek için çerçeve kesme nesneleri kullanın.

    Cihaz kesmelerini işleyen sürücülerin her kesme için bir çerçeve kesme nesnesi oluşturması ve geri çağırma işlevlerini kaydetmesi için WdfInterruptCreate çağırması gerekir. Bu geri çağırma işlevleri kesme sinyalini etkinleştirir veya devre dışı bırakır ve kesme sinyali için kesme hizmeti rutini (ISR) ve ertelenmiş prosedür çağrısı (DPC) olarak işlev görür.

    Çerçeve kesme nesneleri hakkında daha fazla bilgi için bkz. Donanım Kesmelerini İşleme.

  • KMDF sürücüleri, bir cihazın doğrudan bellek erişimi (DMA) işlemlerini işlemek için çerçevenin DMA etkinleştirici nesnelerini ve DMA işlem nesnelerini kullanabilir.

    KMDF sürücünüzün cihazı DMA işlemlerini destekliyorsa, sürücü bir DMA etkinleştirici nesnesi oluşturmak için WdfDmaEnablerCreate çağırmalıdır ve bir veya daha fazla DMA işlem nesnesi oluşturmak için WdfDmaTransactionCreate. DMA işlem nesnesi, cihaz donanımını DMA işlemi gerçekleştirmek üzere programlayan bir EvtProgramDma geri çağırma işlevi tanımlar.

    DMA işlemlerini destekleme hakkında daha fazla bilgi için bkz. Framework Tabanlı SürücülerDMA İşlemlerini İşleme.

  • Diğer sürücülere G/Ç istekleri göndermek için çerçevenin G/Ç hedef nesnelerini kullanın.

    G/Ç isteklerini diğer sürücülere (genellikle sürücü yığınındaki bir sonraki alt sürücü) geçirmek için, sürücünüz isteği G/Ç hedef nesnesine gönderir.

    G/Ç hedef nesneleri hakkında daha fazla bilgi için bkz. G/Ç Hedeflerini Kullanma.

  • KMDF sürücüsü, Windows Yönetim Araçları (WMI) özelliklerini desteklemek için çerçevenin WMI sağlayıcı nesnelerini ve WMI örnek nesnelerini kullanabilir.

    KMDF sürücülerinin çoğu WMI'yi desteklemeli ve WMI verilerini gönderen veya alan geri çağırma işlevlerini kaydetmek amacıyla WdfWmiInstanceCreate fonksiyonunu çağırmalıdır.

    WMI hakkında daha fazla bilgi için bkz. Framework Tabanlı Sürücülerde WMI'yi Destekleme.

  • Çerçevenin eşitleme özelliklerini kullanın.

    Tüm sürücüler çok işlemcili eşitleme sorunlarının farkında olmalı ve çerçevenin sağladığı eşitleme tekniklerini kullanmalıdır.

  • Çerçevenin sağladığı ek nesneleri ve özellikleri kullanın.

    Çerçeve, sürücünüzün kullanabileceği ek nesneler sağlar. Bu nesneler hakkında daha fazla bilgi için bkz. WDF Destek Nesneleri.