Kuyruk Durumları ve İşlemleri

Her kuyruk için bir ağ bağdaştırıcısı aşağıdaki işletim durumu kümesini desteklemelidir:

Tanımsız
Kuyruk tahsis edilmedi. Bir kuyruk tahsis etmek için üst seviye sürücü OID_RECEIVE_FILTER_ALLOCATE_QUEUE OID isteği gönderir.

Ayrılmış
Ayrılmış durumu, kuyruğun başlangıç durumudur. Bir kuyruk Ayrılmış durumda olduğunda, üstteki sürücü genellikle OID_RECEIVE_FILTER_SET_FILTER OID ile kuyrukta filtreler ayarlar veya OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE OID isteğiyle kuyruk ayırmayı tamamlar.

Kümesi
Set durumunda, bir kuyrukta en az bir filtre ayrılmıştır, ancak üst sürücü OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE OID'yi göndermemiştir.

Çalışıyor
Çalışıyor durumunda, kuyrukta filtreler ayarlanmış, kuyruk ayırma işlemi tamamlanmış ve miniport bağdaştırıcısı kuyruk için alıcı paketleri işaret ediyor.

Duraklatıldı
Duraklatıldı durumunda, ağ bağdaştırıcısı kuyruk için alınan ağ verilerini göstermez. OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE OID isteğinden önce kuyrukta ayarlanmış filtre yoktu veya kuyrukta ayarlanan tüm filtreler OID_RECEIVE_FILTER_CLEAR_FILTER OID isteğiyle temizlendi.

DMA Durduruldu
DMA Durduruldu durumunda, bir miniport sürücüsü OID_RECEIVE_FILTER_FREE_QUEUE OID isteği aldı. DMA durdurulduğunda ve sürücü DMA durduruldu durum göstergesini (NDIS_STATUS_RECEIVE_QUEUE_STATEile) verdiyse, sürücü Serbest Bırakma durumuna girer.

Serbest bırakma
Freeing durumunda, miniport sürücüsü kuyrukta gönderme ve alma işlemlerini durdurmak için gerekli olan işlemleri tamamlar ve bu işlemler için kullanılan kaynakları serbest bırakır. Bekleyen tüm alma sinyalleri tamamlandıktan sonra kuyruk silinir ve kuyruk Belirsiz olur.

Aşağıdaki tabloda, başlıklar kuyruk durumlarıdır. Birincil olaylar ilk sütunda listelenir. Tablodaki girdilerin geri kalanı, bir olay bir durum içinde gerçekleştikten sonra kuyruğun gireceği sonraki durumu belirtir. Boş girdiler geçersiz olay/durum birleşimlerini temsil eder.

Olay \ Durum Tanımsız Tahsis edilen Ayarlamak Koşu Duraklatıldı DMA'nın durdurulması Boşaltma

OID_RECEIVE_FILTER_ALLOCATE_QUEUE - yöntem (ayarla)

Tahsis edilen

OID_RECEIVE_FILTER_QUEUE_PARAMETERS - yöntem (sorgu) isteği

Tahsis edilen

Ayarlamak

Koşu

Duraklatıldı

OID_RECEIVE_FILTER_QUEUE_PARAMETERS - isteği ayarlama

Tahsis edilen

Ayarlamak

Koşu

Duraklatıldı

OID_RECEIVE_FILTER_SET_FILTER - yöntem (küme) isteği

Ayarlamak

Ayarlamak

Koşu

Koşu

OID_RECEIVE_FILTER_CLEAR_FILTER - isteği tanımlama (son filtre)

Tahsis edilen

Duraklatıldı

OID_RECEIVE_FILTER_CLEAR_FILTER - istek ayarı (son filtre değil)

Ayarlamak

Koşu

OID_RECEIVE_FILTER_ENUM_FILTERS - yöntem (sorgulama isteği)

Tahsis edilen

Ayarlamak

Koşu

Duraklatıldı

OID_RECEIVE_FILTER_PARAMETERS - yöntem (sorgu) isteği

Ayarlamak

Koşu

OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE - yöntem (küme) isteği

Duraklatıldı

Koşu

Paketi alma

Koşu

OID_RECEIVE_FILTER_FREE_QUEUE ayarlama isteği

DMA'nın durdurulması

DMA'nın durdurulması

DMA durduruldu ve NDIS_STATUS_RECEIVE_QUEUE_STATE durum göstergesi gönderildi (Not: DMA büyük olasılıkla Ayrılmış veya Duraklatıldı durumunda zaten durdurulmuştu)

Boşaltma

Tüm algılama bilgileri tamamlandı ve kuyruk kaynakları serbest bırakıldı

Tanımsız

Not Yukarıdaki tabloda listelenen olaylar, durum değişikliğine neden olmayan bazı ikincil olayları içerir. Bu ikincil olaylar, bu olayların geçerli olduğu durumları belirtmek için tabloya eklenir.

Birincil kuyruk olayları aşağıdaki gibi tanımlanır:

OID_RECEIVE_FILTER_ALLOCATE_QUEUE - yöntem (küme) isteği
Üstteki bir sürücü bir kuyruk ayırdı. Kuyrukları ayırma hakkında daha fazla bilgi için bkz. VM Kuyruklarını Ayırma ve Boşaltma.

OID_RECEIVE_FILTER_SET_FILTER - yöntem (ayarla) isteği
Üst sürücü kuyrukta bir filtre uygular. Üst sürücü OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE OID'yi göndermediyse, kuyruk Ayarla durumu içindedir. Aksi takdirde kuyruk çalışır durumdadır. Kuyruklarda filtre ayarlama hakkında daha fazla bilgi için bkz. VMQ Filtrelerini Ayarlama ve Temizleme.

OID_RECEIVE_FILTER_CLEAR_FILTER - isteği ayarlama
Üstteki bir sürücü bir kuyruktaki filtreyi temizledi. Çalışan bir kuyrukta son filtre temizlenmişse DMA durdurulabilir; alma göstergeleri durdurulur ve varsa kuyruk alınan verilerden temizlenmelidir. Kuyruklardaki filtreleri temizleme hakkında daha fazla bilgi için bkz. VMQ Filtrelerini Ayarlama ve Temizleme.

OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE - yöntem (küme) isteği
Üst düzeydeki sürücü kuyruk ayırmayı tamamladı. Kuyrukta ayarlanmış filtreler varsa, çalışıyor durumundadır ve alma göstergeleri başlatılabilir. Kuyruk ayırmayı tamamlama hakkında daha fazla bilgi için bkz. VM Kuyruklarını Ayırma ve Boşaltma.

Paketi Alma
Miniport sürücüsü yalnızca Çalışıyor durumundaki bir kuyruk için alınan paketleri işaret edebilir. Kuyruklar için alınan verileri gösterme hakkında daha fazla bilgi için bkz. VMQ Gönderme ve Alma İşlemleri.

OID_RECEIVE_FILTER_FREE_QUEUE isteği ayarlayın.
Üst sürücü bir kuyruğu serbest bıraktı. Sürücü DMA tarafından durduruldu durum göstergesini (NDIS_STATUS_RECEIVE_QUEUE_STATEile) bildirir, sürücü Serbest bırakma durumuna girer. Bekleyen tüm alma bildirimleri tamamlandığında ve kuyruk kaynakları serbest bırakıldığında, kuyruk tanımsız hale gelir.