Aracılığıyla paylaş


Filtre Modülünü Duraklatma

Çalışan bir filtre modülünü duraklatmak için NDIS, filtre sürücüsünün FilterPause işlevini çağırır. Filtre modülü, FilterPause işlevinde yürütmenin başlangıcında Duraklatma durumunu girer.

NDIS, bir sürücü yığınını duraklatmak için Tak Çalıştır işleminin bir parçası olarak bir filtre modülünü duraklatır. Sürücü yığınını duraklatma hakkında genel bilgi için bkz. Sürücü Yığınını Duraklatma.

Duraklatma durumundaki bir filtre modülü adına filtre sürücüsü:

  • Herhangi bir yeni alma göstergesinin oluşmaması gerekir.

    Gönderme ve alma işlemleri hakkında daha fazla bilgi için bkz. Filtre Modülü Gönderme ve Alma İşlemleri.

  • Filtre sürücüsünün başlattığı ve NDIS tarafından henüz tamamlanmamış olan alma işlemleri varsa, filtre sürücüsünün NDIS'in bu işlemleri tamamlamasını beklemesi gerekir. NDIS, bu bekleyen tüm alma bildirimleri için FilterReturnNetBufferLists işlevini çağırana kadar duraklatma işlemi tamamlanmaz.

  • Sürücüler tarafından oluşturulan ve NDIS'ye iletilmesi gereken bekleyen tüm alma göstergelerini hemen döndürmelidir. Bu tür bekleyen alım bildirimleri için sürücü NdisFReturnNetBufferLists fonksiyonunu çağırana kadar duraklatma işlemi tamamlanmaz. Bu bekleyen alma sinyalleri, sürücü altta yatan sürücülerden aldığı arabellekleri kuyrukta bekletirse var olabilir.

  • Temel sürücülerden kaynaklandığını belirten yeni alma işaretleri, NdisFReturnNetBufferLists işlevi çağrılarak derhal NDIS'e döndürülmelidir. Gerekirse, sürücü alma göstergelerini kopyalayıp kuyruğa alabilir ve daha sonra geri döndürebilir.

    NdisFReturnNetBufferLists, NDIS_RECEIVE_FLAGS_RESOURCES bayrağı ayarlanmış olan ve ilgili FilterReceiveNetBufferLists çağrısında belirtilen NBL'ler için çağrılmamalıdır. Bu tür NBL'ler FilterReceiveNetBufferLists yordamından dönülerek senkron bir şekilde NDIS'e geri verilir.

  • Yeni gönderme isteği başlatılmamalıdır.

  • Filtre sürücüsünün başlatmış olduğu ve NDIS tarafından tamamlanmamış gönderme işlemleri varsa, filtre sürücüsünün NDIS'in bu işlemleri tamamlamasını beklemesi gerekir. NDIS, bu tür bekleyen tüm gönderme istekleri için FilterSendNetBufferListsComplete işlevini çağırana kadar duraklatma işlemi tamamlanmaz.

  • FilterSendNetBufferLists işlevine yapılan tüm yeni gönderme isteklerini, NdisFSendNetBufferListsComplete işlevini çağırarak hemen döndürmelidir. Filtre sürücüsü, her NET_BUFFER_LIST yapısındaki Durum üyesini NDIS_STATUS_PAUSED olarak ayarlamalıdır.

  • NdisFIndicateStatus işleviyle durum göstergeleri sağlayabilir.

    Durum göstergeleri hakkında daha fazla bilgi için bkz. Filtre Modülü Durum Göstergeleri.

  • FilterStatus işlevindeki durum göstergelerini işlemelidir.

  • FilterOidRequest işlevinde OID isteklerini işlemelidir.

    OID istekleri hakkında daha fazla bilgi için bkz. Modül OID İsteklerini Filtreleme.

  • OID isteklerini başlatabilir.

  • Sürücünün ekleme işlemi sırasında ayırdığı kaynakları boşaltmamalıdır.

  • Gönderme ve alma işlemlerini durdurmak için gerekirse zamanlayıcıları iptal etmelidir.

    Zamanlayıcılar hakkında daha fazla bilgi için bkz. NDIS 6.0 Timer Services.

Filtre sürücüsü gönderme ve alma işlemlerini başarıyla duraklattıktan sonra duraklatma işlemini tamamlaması gerekir. Filtre Sürücüsü FilterPause'den sırasıyla NDIS_STATUS_SUCCESS veya NDIS_STATUS_PENDING döndürerek duraklatma işlemini senkronize veya asenkronize olarak tamamlayabilir.

Sürücü NDIS_STATUS_PENDING döndürürse, duraklatma işlemini tamamladıktan sonra NdisFPauseComplete işlevini çağırması gerekir.

Duraklatıldı durumundaki bir filtre modülü adına filtre sürücüsü:

  • Yeni alınacak göstergeler oluşturmamalıdır.

  • Temel sürücülerin NDIS'ye kaynaklandığını gösteren yeni alma göstergelerini hemen döndürmek için NdisFReturnNetBufferLists işlevi çağrılmalıdır. Gerekirse, sürücü alma göstergelerini kopyalayıp kuyruğa alabilir ve daha sonra geri döndürebilir.

  • Yeni gönderme istekleri başlatılmamalıdır.

  • FilterSendNetBufferLists işlevine yapılan tüm yeni gönderme isteklerini, NdisFSendNetBufferListsComplete işlevini çağırarak hemen döndürmelidir. Filtre sürücüsü, her NET_BUFFER_LIST yapısındaki Durum üyesini NDIS_STATUS_PAUSED olarak ayarlamalıdır.

  • NdisFIndicateStatus işleviyle durum göstergeleri sağlayabilir.

  • FilterStatus işlevindeki durum göstergelerini işlemelidir.

  • FilterOidRequest işlevinde OID isteklerini işlemelidir.

  • OID isteklerini başlatabilir.

NDIS, filtre sürücüsü duraklatılmış durumundayken, ekleme, ayırma veya yeniden başlatma istekleri gibi diğer Tak ve Çalıştır işlemlerini başlatmaz. NDIS, bir filtre sürücüsü Duraklatıldı durumundayken ayrılma veya yeniden başlatma isteklerini başlatabilir. Filtre modülünü ayırma hakkında daha fazla bilgi için bkz. filtre modülünü ayırma . Filtre modülünü yeniden başlatma hakkında daha fazla bilgi için bkz. Filtre Modülü Başlatma.