Percorso di trasmissione VMQ
Per le richieste di trasmissione, il driver di overlying usa la macro NET_BUFFER_LIST_RECEIVE_QUEUE_ID per impostare l'identificatore della coda in uscita nei dati in uscita con le informazioni OOB netBufferListFilteringInfo . Le informazioni NetBufferListFilteringInfo sono specificate in una struttura NDIS_NET_BUFFER_LIST_FILTERING_INFO .
I driver NDIS possono usare la macro NET_BUFFER_LIST_RECEIVE_QUEUE_ID per impostare o ottenere l'identificatore della coda di una struttura NET_BUFFER_LIST . Se un gruppo di code contiene più code di macchine virtuali, l'identificatore della coda del pacchetto di trasmissione potrebbe essere impostato sull'identificatore della coda di una delle code della macchina virtuale nel gruppo.
I driver di protocollo impostano il bit di NDIS_SEND_FLAGS_SINGLE_QUEUE nel parametro SendFlags della funzione NdisSendNetBufferLists per indicare che tutte le strutture di trasmissione NET_BUFFER_LIST nella chiamata sono per la stessa coda di trasmissione.
I driver Miniport impostano il bit NDIS_SEND_COMPLETE_FLAGS_SINGLE_QUEUE nel parametro SendCompleteFlags della funzione NdisMSendNetBufferListsComplete per indicare che tutte le NET_BUFFER_LISTs nella chiamata sono state inviate nella stessa coda di trasmissione.
Per altre informazioni sui test di filtro, vedere Operazioni di filtro VMQ.
Nota Quando un VMQ viene eliminato (ad esempio durante la migrazione in tempo reale della macchina virtuale), è possibile che il driver miniport riceva un valore NBL contenente un valore QueueId non valido. In questo caso, il miniport deve ignorare l'ID coda non valido e usare 0 (coda predefinita). QueueId viene trovato nella parte NetBufferListFilteringInfo dei dati OOB di NBL e viene recuperato usando la macro NET_BUFFER_LIST_RECEIVE_QUEUE_ID.