PROTOCOL_SEND_NET_BUFFER_LISTS_COMPLETE funzione di callback (ndis.h)
La funzione ProtocolSendNetBufferListsComplete completa un'operazione di invio avviata dal driver del protocollo con una chiamata all'oggetto Funzione NdisSendNetBufferLists .
Sintassi
PROTOCOL_SEND_NET_BUFFER_LISTS_COMPLETE ProtocolSendNetBufferListsComplete;
void ProtocolSendNetBufferListsComplete(
[in] NDIS_HANDLE ProtocolBindingContext,
[in] PNET_BUFFER_LIST NetBufferList,
[in] ULONG SendCompleteFlags
)
{...}
Parametri
[in] ProtocolBindingContext
Handle in un'area di contesto allocata dal driver del protocollo per mantenere le informazioni sullo stato su un'associazione. Questo handle è stato passato a NDIS in una chiamata precedente a NdisOpenAdapterEx.
[in] NetBufferList
Puntatore a un elenco di strutture NET_BUFFER_LIST fornite dal driver di protocollo in una chiamata precedente a NdisSendNetBufferLists.
[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 il flag 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
ProtocolSendNetBufferListsComplete è una funzione necessaria per i driver del protocollo. ProtocolSendNetBufferListsComplete esegue qualsiasi post-elaborazione necessaria per completare un'operazione di invio. Ad esempio, il driver del protocollo può notificare ai client che hanno richiesto il protocollo di inviare i dati di rete che l'operazione di invio è stata completata.
NDIS chiama ProtocolSendNetBufferListsComplete dopo che il driver miniport sottostante chiama il Funzione NdisMSendNetBufferListsComplete . Il completamento di un'operazione di invio implica in genere che il driver miniport sottostante ha trasmesso i dati di rete specificati. Tuttavia, un driver miniport può indicare che un'operazione di invio è stata completata non appena trasferisce i dati di rete alla scheda di interfaccia di rete.
Quando NDIS chiama ProtocolSendNetBufferListsComplete, 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 protocollo al driver miniport sottostante nell'ordine determinato dal protocollo passato a NdisSendNetBufferLists. Tuttavia, il driver sottostante può completare le richieste di invio in qualsiasi ordine. Vale a dire, i driver di protocollo possono basarsi su NDIS per inviare i dati di rete in FIFO per il driver sottostante. Tuttavia, i driver di protocollo non possono basarsi sul driver sottostante per chiamare NdisMSendNetBufferListsComplete nello stesso ordine.
NDIS chiama ProtocolSendNetBufferListsComplete in IRQL<= DISPATCH_LEVEL.
Esempi
Per definire una funzione ProtocolSendNetBufferListsComplete , è 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 ProtocolSendNetBufferListsComplete denominata "MySendNetBufferListsComplete ", usare il tipo PROTOCOL_SEND_NET_BUFFER_LISTS_COMPLETE , come illustrato in questo esempio di codice:
PROTOCOL_SEND_NET_BUFFER_LISTS_COMPLETE MySendNetBufferListsComplete;
Implementare quindi la funzione come indicato di seguito:
_Use_decl_annotations_
VOID
MySendNetBufferListsComplete(
NDIS_HANDLE ProtocolBindingContext,
PNET_BUFFER_LIST NetBufferLists,
ULONG SendCompleteFlags
)
{...}
Il tipo di funzione PROTOCOL_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_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 |