Modalità bypass dei dati
La modalità di bypass dei dati del driver di filtro può offrire prestazioni di sistema migliorate. NDIS non chiama funzioni FilterXxx ignorate. Ad esempio, se i servizi di invio e ricezione non sono necessari per un'applicazione di filtro specificata, il driver di filtro può ignorare le funzioni di invio e ricezione.
Un driver di filtro specifica i punti di ingresso predefiniti, per le funzioni che possono essere ignorate, durante l'inizializzazione del driver quando chiama la funzione NdisFRegisterFilterDriver . I punti di ingresso sono NULL per le funzioni ignorate per impostazione predefinita. Per altre informazioni sull'inizializzazione, vedere Inizializzazione di un driver di filtro.
Per modificare lo stato di bypass in fase di esecuzione, il driver deve specificare un punto di ingresso per la funzione FilterSetModuleOptions durante l'inizializzazione del driver. Il driver può inizializzare una struttura NDIS_FILTER_PARTIAL_CHARACTERISTICS e passare le nuove caratteristiche alla funzione NdisSetOptionalHandlers dall'interno del contesto di FilterSetModuleOptions.
NDIS chiama la funzione FilterSetModuleOptions , se presente, all'inizio di un'operazione di riavvio. Un driver di filtro può impostare la modalità di bypass in modo indipendente per ogni modulo di filtro. Per altre informazioni, vedere Avvio di un modulo filtro.
I driver di filtro possono ignorare le seguenti funzioni FilterXxx facoltative specificate nella struttura NDIS_FILTER_DRIVER_CHARACTERISTICS :
FilterSendNetBufferListsComplete
FilterCancelSendNetBufferLists
Per impostare una funzione FilterXxx per ignorare la modalità, un driver di filtro specifica NULL per il punto di ingresso della funzione. Tuttavia, se un driver chiama qualsiasi funzione NDIS con una funzione FilterXxx associata, deve fornire un punto di ingresso per tale funzione FilterXxx . Ad esempio, se un driver chiama la funzione NdisFIndicateReceiveNetBufferLists , deve fornire una funzione FilterReturnNetBufferLists .
Se un driver di filtro specifica una funzione FilterSendNetBufferLists e le code di richieste di invio, deve specificare anche una funzione FilterCancelSendNetBufferLists .
Se un driver di filtro specifica una funzione FilterReceiveNetBufferLists o FilterReturnNetBufferLists , il driver deve specificare anche una funzione FilterStatus .
Per modificare le impostazioni della modalità di bypass in fase di esecuzione, un driver di filtro può chiamare la funzione NdisFRestartFilter . NdisFRestartFilter pianifica un'operazione di sospensione seguita da un'operazione di riavvio per il modulo di filtro specificato. Quando NDIS chiama FilterSetModuleOptions, il driver di filtro può modificare le funzioni per tale modulo di filtro chiamando NdisSetOptionalHandlers e specificando un nuovo set di punti di ingresso.
Nota La sospensione e il riavvio potrebbero causare l'eliminazione di alcuni pacchetti di rete nel percorso di trasmissione o nel percorso di ricezione o entrambi. I protocolli di rete che forniscono un meccanismo di trasporto affidabile potrebbero riprovare l'operazione di I/O di rete nel caso di un pacchetto perso, ma altri protocolli che non garantiscono affidabilità non riprovano l'operazione.
Un driver di filtro può registrare funzioni facoltative aggiuntive che supportano i servizi driver facoltativi. Il driver registra questi servizi facoltativi nella funzione FilterSetOptions . Per altre informazioni su questi servizi facoltativi, vedere Configurazione di Servizi driver di filtro facoltativi.