NDIS 虛擬機器佇列狀態
本主題提供 NDIS 虛擬機器佇列 (VMQs) 作業狀態的概觀。 如需佇列狀態的詳細資訊,請參閱撰寫 VMQ 驅動程式一節中的佇列狀態和作業主題。
針對每個佇列,網路介面卡必須支援下列一組操作狀態:
未定義
已配置
集合
已暫停
執行中
Stop DMA
釋放
下圖顯示這些狀態之間的關聯性。
下列定義配接器狀態:
定義
Undefined 是佇列的初始狀態。 在此狀態中,不會配置佇列。 佇列 (,但預設佇列一律存在,) 未定義,直到迷你埠驅動程式收到佇列配置要求為止。 此外,在免費作業完成且任何已啟動的接收指示都已完成之後,便未定義。
已配置
佇列在配置要求之後處於 [已配置 ] 狀態,且佇列上設定了任何篩選之前。 如果佇列處於 [設定] 狀態,且佇列上已清除最後一個篩選,則篩選也可以進入 [已配置] 狀態。 如果迷你埠驅動程式在迷你埠驅動程式處於已配置狀態時收到配置完整要求,佇列就會進入 Paused 狀態。 如果迷你埠驅動程式收到免費的佇列要求,佇列就會進入 Stop DMA 狀態。
設置
在 [設定 ] 狀態中,已配置佇列,且佇列上設定了至少一個篩選準則,但迷你埠驅動程式尚未收到配置完整的 OID。 如果佇列收到配置完整要求,佇列就會進入執行中狀態。 如果清除佇列上的最後一個篩選,佇列會進入 [已配置] 狀態。 請注意,在佇列上設定篩選時,無法釋放佇列。
暫停
在 [已暫停 ] 狀態中,會配置佇列,但其迷你埠驅動程式不會指出收到的封包,因為佇列上沒有設定任何篩選。 迷你埠驅動程式可以從 [已配置] 狀態或 [執行中] 狀態進入 [已暫停] 狀態。 佇列在收到篩選集要求時進入執行中狀態。 當佇列收到免費佇列要求時,佇列會進入 Stop DMA 狀態。
執行中
在 [ 執行 中] 狀態中,佇列已設定篩選、佇列配置已完成,且網路介面卡會指出接收封包。 如果清除佇列上的最後一個篩選,佇列會進入 [已暫停] 狀態。 請注意,在佇列上設定篩選時,無法釋放佇列。 此外,如果清除最後一個篩選,迷你埠驅動程式可以停止 DMA。 不過,迷你埠驅動程式在此案例中不應該傳送 DMA 已停止狀態指示。
Stop DMA
在 Stop DMA 狀態中,迷你埠驅動程式收到免費佇列要求,而且必須停止 DMA 活動。 迷你埠驅動程式必須傳送 DMA 停止狀態指示。 在迷你埠驅動程式傳送狀態指示之後,佇列會處於釋放狀態。 請注意,當清除最後一個篩選時,DMA 可能已經停止。 不過,迷你埠驅動程式應該只會在收到免費佇列要求時傳送狀態指示。
釋放
在 [釋放 ] 狀態中,迷你埠驅動程式正在等候佇列上所有未完成的接收指示,以完成並釋放與佇列相關聯的資源。 釋放所有資源之後,佇列會進入 [未定義] 狀態。