FILTER_SEND_NET_BUFFER_LISTS_COMPLETE funzione di callback (ndis.h)

NDIS chiama la funzione FilterSendNetBufferListsComplete per completare una richiesta di invio avviata da un driver di filtro chiamando Funzione NdisFSendNetBufferLists .

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

Sintassi

FILTER_SEND_NET_BUFFER_LISTS_COMPLETE FilterSendNetBufferListsComplete;

void FilterSendNetBufferListsComplete(
  [in] NDIS_HANDLE FilterModuleContext,
       PNET_BUFFER_LIST NetBufferList,
  [in] ULONG SendCompleteFlags
)
{...}

Parametri

[in] FilterModuleContext

Handle per l'area di contesto per il modulo di filtro. Il driver di filtro ha creato e inizializzato questa area di contesto nella funzione FilterAttach .

NetBufferList

Puntatore a un elenco collegato di strutture NET_BUFFER_LIST passate dal driver di filtro NdisFSendNetBufferLists.

[in] SendCompleteFlags

Flag NDIS che 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_COMPLETE_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_COMPLETE_FLAGS_SWITCH_SINGLE_SOURCE

Se questo flag è impostato, tutti i pacchetti in un elenco collegato di strutture NET_BUFFER_LIST hanno origine dalla stessa porta di origine del commutatore estendibile Hyper-V.

Per altre informazioni, vedere Flag di invio e ricezione del commutatore estendibile Hyper-V.

Nota Se ogni pacchetto nell'elenco collegato di strutture NET_BUFFER_LIST utilizza la stessa porta di origine, l'estensione deve impostare il flag NDIS_SEND_FLAGS_SWITCH_SINGLE_SOURCE nel parametro SendFlags di SendNetBufferLists quando invia la richiesta.
 
Nota Questo flag è disponibile in NDIS 6.30 e versioni successive.
 

Valore restituito

nessuno

Osservazioni

FilterSendNetBufferListsComplete è una funzione facoltativa. Se un driver di filtro non filtra le richieste di invio, può impostare il punto di ingresso per questa funzione su NULL quando chiama Funzione NdisFRegisterFilterDriver .

Il driver di filtro può chiamare la funzione NdisSetOptionalHandlers , dalla funzione FilterSetModuleOptions , per specificare una funzione FilterSendNetBufferListsComplete per un modulo di filtro.

Nota Un driver di filtro che non fornisce una funzione FilterSendNetBufferListsComplete non può chiamare la funzione NdisFSendNetBufferLists .
 
Quando NDIS chiama FilterSendNetBufferListsComplete, il driver di filtro recupera la proprietà delle strutture NET_BUFFER_LIST e dei dati associati.

Se un driver eccessivamente avviato la richiesta di invio, il driver di filtro deve chiamare la funzione NdisFSendNetBufferListsComplete per completare la richiesta di invio.

Se il driver di filtro ha originato la richiesta di invio, FilterSendNetBufferListsComplete può rilasciare le strutture di NET_BUFFER_LIST e i dati associati oppure prepararli per il riutilizzo in una chiamata successiva a NdisFSendNetBufferLists.

Nota Un driver di filtro deve tenere traccia delle richieste di invio avviate e assicurarsi che non chiami NdisFSendNetBufferListsComplete quando NDIS chiama FilterSendNetBufferListsComplete per tali richieste.
 
NDIS chiama FilterSendNetBufferListsComplete in IRQL <= DISPATCH_LEVEL.

Esempi

Per definire una funzione FilterSendNetBufferListsComplete , è 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 FilterSendNetBufferListsComplete denominata "MySendNetBufferListsComplete", usare il tipo FILTER_SEND_NET_BUFFER_LISTS_COMPLETE come illustrato nell'esempio di codice seguente:

FILTER_SEND_NET_BUFFER_LISTS_COMPLETE MySendNetBufferListsComplete;

Implementare quindi la funzione come segue:

_Use_decl_annotations_
VOID
 MySendNetBufferListsComplete(
    NDIS_HANDLE  FilterModuleContext,
    PNET_BUFFER_LIST  NetBufferLists,
    ULONG  SendCompleteFlags
    )
  {...}

Il tipo di funzione FILTER_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 garantisce che vengano utilizzate le annotazioni applicate al tipo di funzione FILTER_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

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

FilterAttach

FilterSetModuleOptions

NET_BUFFER

NET_BUFFER_LIST

NdisFRegisterFilterDriver

NdisFSendNetBufferLists

NdisFSendNetBufferListsComplete

NdisSetOptionalHandlers