Condividi tramite


Funzione NdisSendNetBufferLists (ndis.h)

I driver di protocollo chiamano la funzione NdisSendNetBufferLists per inviare i dati di rete contenuti in un elenco di strutture NET_BUFFER_LIST .

Sintassi

void NdisSendNetBufferLists(
  [in] NDIS_HANDLE                       NdisBindingHandle,
  [in] __drv_aliasesMem PNET_BUFFER_LIST NetBufferLists,
  [in] NDIS_PORT_NUMBER                  PortNumber,
  [in] ULONG                             SendFlags
);

Parametri

[in] NdisBindingHandle

Handle che identifica l'adattatore di destinazione. Una chiamata precedente a NdisOpenAdapterEx ha restituito questo handle.

[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] PortNumber

Numero di porta che identifica una porta dell'adattatore miniport. Il numero di porta predefinito di un adattatore miniport è zero. I driver di protocollo che non usano porte adattatori miniport devono specificare la porta predefinita.

[in] SendFlags

Flag che definiscono gli attributi per l'operazione di invio. I flag possono essere combinati con un'operazione OR. Per cancellare tutti i flag, impostare questo membro su zero. Questa funzione supporta i flag seguenti:

NDIS_SEND_FLAGS_DISPATCH_LEVEL

Specifica che 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

Specifica che 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 eccessivamente in grado di eseguire l'override di questo comportamento impostando questo flag. 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 ha alcun effetto sul controllo del loopback o del loopback su altre associazioni.

Valore restituito

nessuno

Osservazioni

Dopo che un driver di protocollo chiama NdisSendNetBufferLists, NDIS invia le strutture NET_BUFFER_LIST a un driver sottostante Funzione MiniportSendNetBufferLists .

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 può allocare le strutture appena prima di chiamare NdisSendNetBufferLists e quindi liberarle al termine dell'operazione di invio. Quando NDIS restituisce una struttura NET_BUFFER_LIST a ProtocolSendNetBufferListsComplete, il driver miniport può preparare la struttura NET_BUFFER_LIST ed eventuali risorse associate per il riutilizzo. Il riutilizzo delle strutture NET_BUFFER_LIST può offrire prestazioni migliori rispetto alla restituzione delle strutture a un pool e quindi alla riallocazione per un'altra operazione di invio.

Un driver di protocollo deve impostare il membro SourceHandle di ogni struttura NET_BUFFER_LIST sullo stesso valore che passa al parametro NdisBindingHandle . L'handle di associazione fornisce le informazioni richieste da NDIS per restituire la struttura NET_BUFFER_LIST al driver di protocollo dopo le chiamate del driver miniport sottostante NdisMSendNetBufferListsComplete.

Prima di chiamare NdisSendNetBufferLists, un driver di protocollo può impostare 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 NdisSendNetBufferLists 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 i dati di rete devono essere inviati in rete.

Non appena un driver di protocollo chiama NdisSendNetBufferLists, rinuncia alla proprietà delle strutture NET_BUFFER_LIST e di tutte le risorse associate. NDIS chiama la funzione ProtocolSendNetBufferListsComplete per restituire le strutture e i dati al driver del 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 ProtocolSendNetBufferListsComplete.

Finché NDIS chiama ProtocolSendNetBufferListsComplete, 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 NdisSendNetBufferLists. Un driver di protocollo non deve mai tentare di esaminare le strutture NET_BUFFER_LIST o i dati associati dopo aver chiamato NdisSendNetBufferLists.

Requisiti

Requisito Valore
Client minimo supportato Supportato in NDIS 6.0 e versioni successive.
Piattaforma di destinazione Universale
Intestazione ndis.h (include Ndis.h)
Libreria Ndis.lib
IRQL <=DISPATCH_LEVEL
Regole di conformità DDI Irql_SendRcv_Function(ndis)

Vedi anche

DriverEntry

MiniportSendNetBufferLists

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_INFO

NdisAllocateCloneNetBufferList NdisAllocateNetBufferAndNetBufferList

NdisAllocateNetBufferList

NdisMAllocatePort

NdisMSendNetBufferListsComplete

NdisOpenAdapterEx

ProtocolSendNetBufferListsComplete