NDIS VMQ 即時移轉支援
若要支援即時移轉,虛擬機器 (VM) 可以在任何指令或擱置的 I/O 界限暫停。 也就是說,VM 可能無法完成擱置的接收要求。 因此,網路虛擬服務提供者 (VSP) 會將所有收到的封包傳回至 VM 未傳回的基礎網路介面卡。
注意 在 Hyper-V 中,子分割也稱為 VM。
當 VM 在另一部主機上重新開機時,新主機上的網路 VSP 會處理繼續 VM 傳回的接收封包,而不會將它們向下傳遞至迷你埠驅動程式中的新基礎。 移轉完成後,會釋出與 VM 相關聯的接收佇列,而且可以重複使用給另一個 VM。
注意 新的網路介面卡可能不支援 VMQ。
當 NDIS 要求迷你埠驅動程式釋放 VMQ 接收佇列時,它會遵循下列步驟:
網路介面卡會停止資料的 DMA 傳輸,以接收與接收佇列相關聯的緩衝區,之後佇列必須進入 DMA 已停止狀態。 網路介面卡在收到 OID_RECEIVE_FILTER_CLEAR_FILTER OID 要求時,可能會停止 DMA 活動,以清除接收佇列上的最後一個設定篩選。
迷你埠驅動程式會產生NDIS_STATUS_RECEIVE_QUEUE_STATE狀態指示,並將NDIS_RECEIVE_QUEUE_STATE結構的QueueState成員設定為NdisReceiveQueueOperationalStateDmaStopped,以通知 NDIS 已停止 DMA 傳輸。
迷你埠驅動程式會等候所有指定的接收封包,讓該佇列傳回迷你埠驅動程式。
迷你埠驅動程式會藉由呼叫 NdisFreeSharedMemory,釋放配置給網路介面卡接收緩衝區的所有共用記憶體。
迷你埠驅動程式會完成 OID_RECEIVE_FILTER_FREE_QUEUE OID 要求,以釋放接收佇列。
如需佇列狀態的詳細資訊,請參閱 NDIS VM 佇列狀態。