Condividi tramite


PROTOCOL_CO_SEND_NET_BUFFER_LISTS_COMPLETE funzione di callback (ndis.h)

La funzione ProtocolCoSendNetBufferListsComplete completa un'operazione di invio avviata dal driver del protocollo con una chiamata all'oggetto Funzione NdisCoSendNetBufferLists .

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

Sintassi

PROTOCOL_CO_SEND_NET_BUFFER_LISTS_COMPLETE ProtocolCoSendNetBufferListsComplete;

void ProtocolCoSendNetBufferListsComplete(
  [in] NDIS_HANDLE ProtocolVcContext,
  [in] PNET_BUFFER_LIST NetBufferLists,
  [in] ULONG SendCompleteFlags
)
{...}

Parametri

[in] ProtocolVcContext

Handle per un'area di contesto allocata dal driver del protocollo in cui questo driver gestisce le informazioni sullo stato di esecuzione per ogni connessione virtuale (VC). Un gestore chiamate autonomo o client ha fornito questo handle quando ha chiamato la funzione NdisCoCreateVc o dalla relativa funzione ProtocolCoCreateVc .

[in] NetBufferLists

Puntatore a un elenco di strutture NET_BUFFER_LIST fornite dal driver del protocollo in una chiamata precedente all'oggetto Funzione NdisCoSendNetBufferLists .

[in] SendCompleteFlags

Flag NDIS che possono essere combinati con un'operazione OR bit per bit. Per cancellare tutti i flag, impostare questo parametro su zero. ProtocolCoSendNetBufferListsComplete supporta il flag di NDIS_SEND_COMPLETE_FLAGS_DISPATCH_LEVEL, che; se impostato, indica che l'oggetto IRQL corrente è DISPATCH_LEVEL. Per altre informazioni su questo flag, vedere Dispatch IRQL Tracking.

Valore restituito

nessuno

Osservazioni

La funzione ProtocolCoSendNetBufferListsComplete è necessaria per i driver di protocollo CoNDIS. ProtocolCoSendNetBufferListsComplete esegue qualsiasi post-elaborazione necessaria per completare un'operazione di invio. Ad esempio, il driver del protocollo può notificare ai client che hanno richiesto al driver di inviare i dati di rete che l'operazione di invio è stata completata.

NDIS chiama ProtocolCoSendNetBufferListsComplete dopo che il driver miniport sottostante chiama il Funzione NdisMCoSendNetBufferListsComplete . Un'operazione di invio completa non implica necessariamente che un driver miniport sottostante abbia trasmesso i dati di rete specificati. Ad esempio, un driver miniport può indicare che un'operazione di invio è stata completata non appena trasferisce i dati di rete all'hardware della scheda di interfaccia di rete.

Quando NDIS chiama ProtocolCoSendNetBufferListsComplete, il driver del protocollo recupera la proprietà di tutte le risorse associate alle strutture NET_BUFFER_LIST specificate dal parametro NetBufferLists .

NDIS invia sempre i dati di rete forniti dal driver di protocollo ai driver sottostanti nell'ordine determinato dal protocollo passato a NdisCoSendNetBufferLists. Tuttavia, il driver sottostante può completare le richieste di invio in qualsiasi ordine. Ovvero, i driver di protocollo possono basarsi su NDIS per inviare i dati di rete in "first in, first out" (FIFO) per il driver sottostante. Tuttavia, i driver di protocollo non possono basarsi sul driver sottostante per chiamare NdisMCoSendNetBufferListsComplete nello stesso ordine.

NDIS chiama ProtocolCoSendNetBufferListsComplete in IRQL<= DISPATCH_LEVEL.

Esempi

Per definire una funzione ProtocolCoSendNetBufferListsComplete , è prima necessario specificare 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 usando i tipi di funzione consente l'analisi del codice per i driver, il verifica driver statico (SDV) e altri strumenti di verifica trovano errori ed è un requisito per la scrittura di driver per il sistema operativo Windows.

Ad esempio, per definire una funzione ProtocolCoSendNetBufferListsComplete denominata "MyCoSendNetBufferListsComplete ", usare il tipo di PROTOCOL_CO_SEND_NET_BUFFER_LISTS_COMPLETE come illustrato in questo esempio di codice:

PROTOCOL_CO_SEND_NET_BUFFER_LISTS_COMPLETE MyCoSendNetBufferListsComplete;

Implementare quindi la funzione come indicato di seguito:

_Use_decl_annotations_
VOID
 MyCoSendNetBufferListsComplete(
    NDIS_HANDLE  ProtocolVcContext,
    PNET_BUFFER_LIST  NetBufferLists,
    ULONG  SendCompleteFlags
    )
  {...}

Il tipo di funzione PROTOCOL_CO_SEND_NET_BUFFER_LISTS_COMPLETE è definito nel file di intestazione Ndis.h. Per identificare in modo più accurato gli errori durante l'esecuzione degli 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 usate le annotazioni applicate al tipo di funzione PROTOCOL_CO_SEND_NET_BUFFER_LISTS_COMPLETE nel file di intestazione. Per altre informazioni sui requisiti per le dichiarazioni di funzione, vedere Dichiarazione di funzioni tramite tipi di ruolo per i driver NDIS.

Per informazioni su 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 (includere Ndis.h)
IRQL <= DISPATCH_LEVEL

Vedi anche

Funzioni di invio e ricezione del driver di protocollo CoNDIS

NET_BUFFER_LIST

NdisCoCreateVc

NdisCoSendNetBufferLists

NdisMCoSendNetBufferListsComplete

ProtocolCoCreateVc

ProtocolCoReceiveNetBufferLists