Share via


VMQ-Übertragungspfad

Bei Übertragungsanforderungen verwendet der überlastende Treiber das NET_BUFFER_LIST_RECEIVE_QUEUE_ID Makro, um den Warteschlangenbezeichner der ausgehenden Warteschlange in den ausgehenden Daten mit den OOB-Informationen NetBufferListFilteringInfo festzulegen. Die NetBufferListFilteringInfo-Informationen werden in einer NDIS_NET_BUFFER_LIST_FILTERING_INFO-Struktur angegeben.

NDIS-Treiber können das NET_BUFFER_LIST_RECEIVE_QUEUE_ID Makro verwenden, um den Warteschlangenbezeichner einer NET_BUFFER_LIST-Struktur festzulegen oder abzurufen. Wenn eine Warteschlangengruppe mehr als eine VM-Warteschlange enthält, kann der Warteschlangenbezeichner des Übertragungspakets auf den Warteschlangenbezeichner einer der VM-Warteschlangen in der Gruppe festgelegt werden.

Protokolltreiber legen das NDIS_SEND_FLAGS_SINGLE_QUEUE Bit für den SendFlags-Parameter der NdisSendNetBufferLists-Funktion fest, um anzugeben, dass alle Übertragungs NET_BUFFER_LIST strukturen im Aufruf für dieselbe Übertragungswarteschlange gelten.

Miniport-Treiber legen das NDIS_SEND_COMPLETE_FLAGS_SINGLE_QUEUE Bit für den Parameter SendCompleteFlags der NdisMSendNetBufferListsComplete-Funktion fest, um anzugeben, dass alle NET_BUFFER_LISTs im Aufruf in derselben Übertragungswarteschlange gesendet wurden.

Weitere Informationen zu Filtertests finden Sie unter VMQ-Filtervorgänge.

Hinweis Wenn ein VMQ gelöscht wird (z. B. während der VM-Livemigration), ist es möglich, dass der Miniporttreiber eine NBL erhält, die einen ungültigen QueueId-Wert enthält. In diesem Fall sollte der Miniport die ungültige Warteschlangen-ID ignorieren und stattdessen 0 (die Standardwarteschlange) verwenden. Die QueueId befindet sich im NetBufferListFilteringInfo-Teil der OOB-Daten der NBL und wird mithilfe des makros NET_BUFFER_LIST_RECEIVE_QUEUE_ID abgerufen.