VMQ 傳輸路徑
對於傳輸要求,過度配置驅動程式會使用 NET_BUFFER_LIST_RECEIVE_QUEUE_ID 宏,使用 NetBufferListFilteringInfo OOB 資訊,在傳出資料中設定傳出佇列的佇列識別碼。 NetBufferListFilteringInfo資訊是在NDIS_NET_BUFFER_LIST_FILTERING_INFO結構中指定。
NDIS 驅動程式可以使用 NET_BUFFER_LIST_RECEIVE_QUEUE_ID 宏來設定或取得 NET_BUFFER_LIST 結構的佇列識別碼。 如果佇列群組包含多個 VM 佇列,則傳輸封包的佇列識別碼可能會設定為群組中任何 VM 佇列的佇列識別碼。
通訊協定驅動程式會在NdisSendNetBufferLists函式的SendFlags參數上設定NDIS_SEND_FLAGS_SINGLE_QUEUE位,以指出呼叫中的所有傳輸NET_BUFFER_LIST結構都是針對相同的傳輸佇列。
Miniport 驅動程式會在NdisMSendNetBufferListsCompleteComplete 函式的SendCompleteFlags參數上設定NDIS_SEND_COMPLETE_FLAGS_SINGLE_QUEUE位,以指出呼叫中的所有NET_BUFFER_LISTs都是在相同的傳輸佇列上傳送。
如需篩選測試的詳細資訊,請參閱 VMQ 篩選作業。
注意 例如,在 VM 即時移 (轉) 期間刪除 VMQ 時,迷你埠驅動程式可能會接收包含無效 QueueId 值的 NBL。 如果發生這種情況,迷你埠應該忽略不正確佇列識別碼,並改用 0 (預設佇列) 。 QueueId位於 NBL OOB 資料的NetBufferListFilteringInfo部分,並使用NET_BUFFER_LIST_RECEIVE_QUEUE_ID宏來擷取。