Orta Seviye Sürücü DriverEntry Giriş İşlevi

Ara sürücünün ilk gerekli giriş noktası, yükleyicinin düzgün bir şekilde tanımlayabilmesi için driverEntryaçıkça adlandırılmalıdır. Bu bölümde, MiniportXxx ve ProtocolXxxolarak açıklanan diğer tüm dışa aktarılan sürücü işlevleri, NDIS'e adres olarak geçirildiği için satıcı tarafından belirlenen herhangi bir ada sahip olabilir.

Ara sürücü olarak, DriverEntry en az:

  1. NdisMRegisterMiniportDriver çağırın ve NdisMiniportDriverHandle parametresinde döndürülen tanıtıcıyı kaydedin.

  2. Eğer sürücü daha sonra temel alınan bir NDIS sürücüsüne bağlanırsa, sürücünün ProtocolXxx işlevlerini kaydetmek için NdisRegisterProtocolDriver çağır.

  3. NDIS'yi sürücünün miniport üst kenarı ve protokol alt kenarı arasındaki ilişki hakkında bilgilendirmek için NdisIMAssociateMiniport çağırın.

Bir orta seviye sürücü, MiniportDriverUnload yük boşaltma işleyicisini kaydetmelidir. Sistem ara sürücüyü kaldırdığında bu kaldırma işleyicisi çağrılır. DriverEntry başarısız olursa, bu kaldırma işleyicisi devreye girmez; bunun yerine, sürücü yalnızca kaldırılır. Kaldırma işleyicisi hakkında daha fazla bilgi için bkz. Ara Sürücüyü Kaldırma.

Kaldırma işleyicisi ara sürücünün protokol bölümünün kaydını kaldırmak için NdisDeregisterProtocolDriver çağırmalıdır. Kaldırma işleyicisi, sürücünün protokol bölümü tarafından kullanılan kaynakları yeniden konumlandırma gibi gerekli temizleme işlemlerini de gerçekleştirmelidir.

Kaldırma işleyicisinin MiniportHaltEx işlevinden farklı olduğunu unutmayın: kaldırma işleyicisi daha genel bir kapsama sahiptir ve miniportHaltEx işlevinin kapsamı belirli bir miniport bağdaştırıcısıyla sınırlıdır. Ara sürücü, bağlı olan her temel miniport sürücüsü durdurulduğunda durum bilgilerini temizlemeli ve kaynakları yeniden dağıtmalıdır. Sanal miniport'lar için durdurma işlemini işleme hakkında bilgi için bkz. Sanal Miniport'u Durdurma.

ProtocolUninstall isteğe bağlı bir kaldırma işleyicisidir. Bu işlev için bir giriş noktasını, ProtocolCharacteristics yapısına kaydedin ve bunu NdisRegisterProtocolDriver'e geçirin. NDIS, bir ara sürücüyü kaldırma isteğine yanıt olarak ProtocolUninstall çağırır. NDIS, her bağlı bağdaştırıcı için ProtocolUnbindAdapterEx çağırır ve ardından NDIS ProtocolUninstallçağırır. Bu işleyici, sistem sürücüyü gerçekten devre dışı bırakmadan önce çağrılır. Bu zamanlama, aksi takdirde sistemin NdisMRegisterMiniportDriver ile kayıtlı kaldırma işleyicisini çağırmasını ve sürücüyü kaldırmasını engelleyebilecek cihaz nesneleri veya diğer kaynakları serbest bırakma fırsatı sunar.

DriverEntry, ara sürücünün ayırdığı durum değişkenleri, yapılar ve bellek alanları gibi genel olarak paylaşılan kaynakları korumak için dönme kilitlerini başlatabilir. Sürücü, bağlantıları izlemek ve devam eden göndermeleri veya sürücüye ayrılan kuyrukları izlemek için bu kaynakları kullanır.

DriverEntry, sürücünün ağ G/Ç işlemlerini gerçekleştirmesi için gereken kaynakları ayıramazsa, daha önce ayrılmış kaynakları serbest bırakmalı ve uygun bir hata durumu döndürmelidir.

Aşağıdaki konularda ara sürücülerin nasıl kaydedildiği açıklanmaktadır:

NDIS Ara Sürücüsü olarak kaydetme

Ara Sürücüyü MiniPort Sürücüsü Olarak Kaydetme

Bir Ara Sürücüyü Protokol Sürücüsü Olarak Kaydetme