Condividi tramite


MINIPORT_CO_SEND_NET_BUFFER_LISTS funzione di callback (ndis.h)

La funzione MiniportCoSendNetBufferLists trasmette i dati di rete contenuti in un elenco collegato specificato di strutture NET_BUFFER_LIST .

Nota È necessario dichiarare la funzione usando il tipo di MINIPORT_CO_SEND_NET_BUFFER_LISTS . Per altre informazioni, vedere la sezione Esempi seguente.
 

Sintassi

MINIPORT_CO_SEND_NET_BUFFER_LISTS MiniportCoSendNetBufferLists;

void MiniportCoSendNetBufferLists(
  [in] NDIS_HANDLE MiniportVcContext,
  [in] PNET_BUFFER_LIST NetBufferLists,
  [in] ULONG SendFlags
)
{...}

Parametri

[in] MiniportVcContext

Handle per un'area di contesto allocata dal driver miniport in cui il driver miniport mantiene lo stato di connessione per ogni rete virtuale. Il driver miniport ha fornito questo handle a NDIS dalla funzione MiniportCoCreateVc .

[in] NetBufferLists

Puntatore alla prima struttura NET_BUFFER_LIST in un elenco collegato di strutture NET_BUFFER_LIST . Ogni struttura NET_BUFFER_LIST nell'elenco descrive un elenco di strutture NET_BUFFER . Ogni struttura NET_BUFFER nell'elenco è mappata a una catena di elenchi di descrittori di memoria (MDL). Gli ELENCHI di dati di rete contengono i dati di rete trasmessi da MiniportCoSendNetBufferLists .

[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. MiniportCoSendNetBufferLists supporta i flag seguenti:

NDIS_SEND_FLAGS_DISPATCH_LEVEL

Il chiamante può facoltativamente impostare questo flag se 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 il flag 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

La funzione MiniportCoSendNetBufferLists è necessaria per i driver miniport CoNDIS. Quando un driver eccessivamente chiama La funzione NdisCoSendNetBufferLists , NDIS chiama la funzione MiniportCoSendNetBufferLists del driver miniport associato.

L'ordine dell'elenco collegato di NET_BUFFER_LIST strutture passate da NDIS in NetBufferLists rappresenta l'ordine in cui il driver miniport deve trasmettere i dati di rete. Inoltre, un driver miniport deve inviare le strutture NET_BUFFER_LIST da più chiamate MiniportCoSendNetBufferLists nell'ordine in cui il driver miniport ha ricevuto le strutture.

I driver miniport CoNDIS devono accettare tutte le richieste di invio inviate da NDIS chiamando la funzione MiniportCoSendNetBufferLists . Se un driver miniport non può completare immediatamente una richiesta di invio, il driver deve contenere la richiesta in una coda fino a quando non può completare la richiesta. Mentre una richiesta di invio è in sospeso, il driver miniport mantiene la proprietà delle strutture NET_BUFFER_LIST e tutte le risorse associate alle strutture NET_BUFFER_LIST .

Il conducente miniport deve chiamare il Funzione NdisMCoSendNetBufferListsComplete per completare tutte le richieste di invio CoNDIS. Per migliorare le prestazioni del computer, il driver può creare un elenco collegato contenente le strutture NET_BUFFER_LIST da più richieste di invio. Il driver può quindi passare tale elenco collegato in una singola chiamata a NdisMCoSendNetBufferListsComplete.

Si supponga inoltre che il driver miniport non possa accedere alle strutture NET_BUFFER_LIST e ad altre risorse associate non appena il driver chiama NdisMCoSendNetBufferListsComplete.

La funzione MiniportCoSendNetBufferLists deve sincronizzare l'accesso alle code interne dei dati di rete con le altre funzioni MiniportXxx del driver che accedono alle stesse code. Un driver miniport può usare blocchi di rotazione per sincronizzare l'accesso alle code.

I driver di protocollo sono responsabili della determinazione dei dati di rete necessari, in base al tipo medio selezionato dal driver miniport associato. Tuttavia, un driver di protocollo può fornire dati di rete che specificano pacchetti più brevi rispetto alle dimensioni minime dei pacchetti per il supporto selezionato. In questo caso , MiniportCoSendNetBufferLists deve riempire i pacchetti con zeri se il supporto selezionato impone un requisito di lunghezza minima per le dimensioni del pacchetto di trasmissione.

NDIS chiama MiniportCoSendNetBufferLists in IRQL<= DISPATCH_LEVEL.

Esempi

Per definire una funzione MiniportCoSendNetBufferLists , è innanzitutto necessario fornire una dichiarazione di funzione che identifica il tipo di funzione che si sta definendo. Windows fornisce un set di tipi di funzione per i driver. La dichiarazione di una funzione con i tipi di funzione consente di eseguire l'analisi del codice per i driver, l'SDV ( Static Driver Verifier ) e altri strumenti di verifica rilevano gli errori ed è un requisito per la scrittura dei driver per il sistema operativo Windows.

Ad esempio, per definire una funzione MiniportCoSendNetBufferLists denominata "MyCoSendNetBufferLists", usare il tipo MINIPORT_CO_SEND_NET_BUFFER_LISTS come illustrato nell'esempio di codice seguente:

MINIPORT_CO_SEND_NET_BUFFER_LISTS MyCoSendNetBufferLists;

Implementare quindi la funzione come segue:

_Use_decl_annotations_
VOID
 MyCoSendNetBufferLists(
    NDIS_HANDLE  MiniportVcContext,
    PNET_BUFFER_LIST  NetBufferLists,
    ULONG  SendFlags
    )
  {...}

Il tipo di funzione MINIPORT_CO_SEND_NET_BUFFER_LISTS è definito nel file di intestazione Ndis.h. Per identificare in modo più accurato gli errori quando si eseguono gli strumenti di analisi del codice, assicurarsi di aggiungere l'annotazione Use_decl_annotations alla definizione della funzione. L'annotazione Use_decl_annotations garantisce che vengano utilizzate le annotazioni applicate al tipo di funzione MINIPORT_CO_SEND_NET_BUFFER_LISTS nel file di intestazione. Per altre informazioni sui requisiti per le dichiarazioni di funzione, vedere Dichiarazione di funzioni tramite tipi di ruolo di funzione per i driver NDIS.

Per informazioni sulle Use_decl_annotations, vedere Annotazione del comportamento della funzione.

Requisiti

Requisito Valore
Client minimo supportato Supportato in NDIS 6.0 e versioni successive.
Piattaforma di destinazione Windows
Intestazione ndis.h (include Ndis.h)
IRQL <= DISPATCH_LEVEL

Vedi anche

MiniportCoCreateVc

NET_BUFFER

NET_BUFFER_LIST

NdisCoSendNetBufferLists

NdisMCoSendNetBufferListsComplete