PROTOCOL_CO_SEND_NET_BUFFER_LISTS_COMPLETE funzione di callback (ndis.h)

La funzione ProtocolCoSendNetBufferListsComplete completa un'operazione di invio avviata dal driver di protocollo con una chiamata a . 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 seguente.
 

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 di protocollo in cui questo driver gestisce le informazioni sullo stato di runtime della connessione virtuale (VC). Un gestore chiamate client o autonomo 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 di protocollo in una chiamata precedente a 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 NDIS_SEND_COMPLETE_FLAGS_DISPATCH_LEVEL, che; se impostato, indica 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.

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 di 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 di 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 del 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 ordine FIFO (first in, first out) al 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 , è 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 ProtocolCoSendNetBufferListsComplete denominata "MyCoSendNetBufferListsComplete", usare il tipo PROTOCOL_CO_SEND_NET_BUFFER_LISTS_COMPLETE come illustrato nell'esempio di codice seguente:

PROTOCOL_CO_SEND_NET_BUFFER_LISTS_COMPLETE MyCoSendNetBufferListsComplete;

Implementare quindi la funzione come segue:

_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 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 assicura che vengano utilizzate 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 di funzione per i driver NDIS.

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

Requisiti

   
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

Funzioni di invio e ricezione del driver del protocollo CoNDIS

NET_BUFFER_LIST

NdisCoCreateVc

NdisCoSendNetBufferLists

NdisMCoSendNetBufferListsComplete

ProtocolCoCreateVc

ProtocolCoReceiveNetBufferLists