Funzione NdisCoSendNetBufferLists (ndis.h)
La funzione NdisCoSendNetBufferLists invia i dati di rete contenuti in un elenco specificato di strutture NET_BUFFER_LIST .
Sintassi
void NdisCoSendNetBufferLists(
[in] NDIS_HANDLE NdisVcHandle,
[in] PNET_BUFFER_LIST NetBufferLists,
[in] ULONG SendFlags
);
Parametri
[in] NdisVcHandle
Handle a una connessione virtuale (VC) che identifica la destinazione della richiesta di invio.
[in] NetBufferLists
Puntatore a un elenco collegato di strutture NET_BUFFER_LIST . Ogni struttura NET_BUFFER_LIST descrive un elenco di strutture NET_BUFFER .
[in] SendFlags
Flag che definiscono gli attributi per l'operazione di invio. I flag possono essere combinati con un'operazione OR bit per bit. Per cancellare tutti i flag, impostare questo parametro su zero. NdisCoSendNetBufferLists supporta i flag seguenti:
NDIS_SEND_FLAGS_DISPATCH_LEVEL
Il runtime di integrazione corrente è DISPATCH_LEVEL. Per altre informazioni su questo flag, vedere Dispatch IRQL Tracking.For more information about this flag, see Dispatch IRQL Tracking.
NDIS_SEND_FLAGS_CHECK_FOR_LOOPBACK
NDIS deve verificare la presenza di loopback. Per impostazione predefinita, NDIS non esegue il ciclo dei dati al driver che ha inviato la richiesta di invio. Un driver overlying può eseguire l'override di questo comportamento impostando NDIS_SEND_FLAGS_CHECK_FOR_LOOPBACK. Quando questo flag è impostato, NDIS identifica tutte le strutture NET_BUFFER che contengono dati che corrispondono ai criteri di ricezione per l'associazione. NDIS indica NET_BUFFER strutture che corrispondono ai criteri al driver overlying. Questo flag non influisce sul controllo del loopback o del loopback su altre associazioni.
Valore restituito
nessuno
Osservazioni
Dopo che un driver del protocollo CoNDIS chiama NdisCoSendNetBufferLists, NDIS invia le strutture NET_BUFFER_LIST specificate dal parametro NetBufferLists a un driver sottostante Funzione MiniportCoSendNetBufferLists .
Il driver di protocollo deve allocare ogni struttura NET_BUFFER_LIST da un pool chiamando una delle funzioni seguenti:
Il driver di protocollo può preallocare NET_BUFFER_LIST strutture, ad esempio nella routine DriverEntry . In alternativa, il driver del protocollo può allocare le strutture immediatamente prima di chiamare NdisCoSendNetBufferLists e quindi può liberarle al termine dell'operazione di invio. Quando NDIS restituisce una struttura NET_BUFFER_LIST all'oggetto ProtocolCoSendNetBufferListsComplete , il driver del protocollo può preparare la struttura NET_BUFFER_LIST e le risorse associate per il riutilizzo. Se si riutilizzano le strutture NET_BUFFER_LIST, è possibile ottenere prestazioni migliori rispetto alla restituzione delle strutture a un pool e quindi riallocazione di tali strutture per un'altra operazione di invio.Un driver di protocollo deve impostare il membro SourceHandle di ogni struttura NET_BUFFER_LIST sullo stesso valore passato al parametro NdisVcHandle . L'handle di origine fornisce le informazioni richieste da NDIS per restituire la struttura NET_BUFFER_LIST al driver di protocollo dopo che il driver miniport sottostante chiama Funzione NdisMCoSendNetBufferListsComplete .
Prima che un driver di protocollo chiami NdisCoSendNetBufferLists, il driver può impostare le informazioni che accompagnano la richiesta di invio con la macro NET_BUFFER_LIST_INFO . Il driver sottostante può recuperare queste informazioni con la macro NET_BUFFER_LIST_INFO.
Prima che un driver di protocollo chiami NdisCoSendNetBufferLists con un elenco di strutture NET_BUFFER_LIST, il driver di protocollo deve assicurarsi che le strutture NET_BUFFER_LIST siano configurate nell'ordine in cui devono essere inviati i dati di rete.
Non appena un driver di protocollo chiama NdisCoSendNetBufferLists, non possiede più le strutture di NET_BUFFER_LIST e tutte le risorse associate. NDIS chiama la funzione ProtocolCoSendNetBufferListsComplete per restituire le strutture e i dati al driver di protocollo. NDIS può raccogliere le strutture e i dati da più richieste di invio in un unico elenco collegato di strutture NET_BUFFER_LIST prima di passare l'elenco a ProtocolCoSendNetBufferListsComplete.
Finché NDIS chiama ProtocolCoSendNetBufferListsComplete, lo stato corrente di un invio avviato dal driver di protocollo non è disponibile per il driver di protocollo. Un driver di protocollo rilascia temporaneamente la proprietà di tutte le risorse allocate per una richiesta di invio quando chiama NdisCoSendNetBufferLists. Un driver di protocollo non deve mai tentare di esaminare le strutture NET_BUFFER_LIST o i dati associati dopo che il driver chiama NdisCoSendNetBufferLists.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Supportato per i driver NDIS 6.0 in Windows Vista. |
Piattaforma di destinazione | Desktop |
Intestazione | ndis.h (include Ndis.h) |
Libreria | Ndis.lib |
IRQL | <=DISPATCH_LEVEL |
Regole di conformità DDI | Irql_Connection_Function(ndis) |