Sospensione di un modulo di filtro
Per sospendere un modulo filtro in esecuzione, NDIS chiama la funzione FilterPause del driver di filtro. Il modulo di filtro passa allo stato Sospensione all'inizio dell'esecuzione nella funzione FilterPause .
NDIS sospende un modulo di filtro come parte di un'operazione Plug and Play per sospendere uno stack di driver. Per una panoramica della sospensione dello stack di driver, vedere Sospensione di uno stack di driver.
Per conto di un modulo di filtro che si trova nello stato Sospensione , il driver di filtro:
Non deve avere origine alcuna nuova indicazione di ricezione.
Per altre informazioni sulle operazioni di invio e ricezione, vedere Filtrare le operazioni di invio e ricezione del modulo.
Se sono presenti operazioni di ricezione che il driver di filtro ha avuto origine e che NDIS non è stato completato, il driver di filtro deve attendere il completamento di tali operazioni da parte di NDIS. L'operazione di sospensione non viene completata fino a quando NDIS chiama la funzione FilterReturnNetBufferLists per tutte le indicazioni di ricezione in sospeso.
Deve restituire eventuali indicazioni in sospeso che i driver sottostanti hanno avuto origine immediatamente a NDIS. L'operazione di sospensione non viene completata fino a quando il driver chiama la funzione NdisFReturnNetBufferLists per tali indicazioni di ricezione in sospeso. Queste indicazioni di ricezione in sospeso possono esistere se il driver accoda i buffer ricevuti dai driver sottostanti.
Dovrebbe restituire nuove indicazioni di ricezione che i driver sottostanti hanno origine immediatamente a NDIS chiamando la funzione NdisFReturnNetBufferLists . Se necessario, il driver può copiare le indicazioni e accodarle prima di restituirle.
Nota:NdisFReturnNetBufferLists non deve essere chiamato per i numeri di rete indicati con NDIS_RECEIVE_FLAGS_RESOURCES flag impostato in una chiamata FilterReceiveNetBufferLists corrispondente. Tali valori NBLs vengono restituiti in modo sincrono a NDIS restituendo dalla routine FilterReceiveNetBufferLists .
Non deve avere origine alcuna nuova richiesta di invio.
Se sono presenti operazioni di invio che il driver di filtro ha avuto origine e che NDIS non è stato completato, il driver di filtro deve attendere il completamento di tali operazioni da parte di NDIS. L'operazione di sospensione non viene completata fino a quando NDIS chiama la funzione FilterSendNetBufferListsComplete per tutte le richieste di invio in sospeso.
Dovrebbe restituire immediatamente tutte le nuove richieste di invio effettuate alla funzione FilterSendNetBufferLists chiamando la funzione NdisFSendNetBufferListsComplete . Il driver di filtro deve impostare il membro Status in ogni struttura NET_BUFFER_LIST su NDIS_STATUS_PAUSED.
Può fornire indicazioni sullo stato con la funzione NdisFIndicateStatus .
Per altre informazioni sulle indicazioni sullo stato, vedere Indicazioni sullo stato del modulo di filtro.
Deve gestire le indicazioni di stato nella funzione FilterStatus .
Deve gestire le richieste OID nella funzione FilterOidRequest .
Per altre informazioni sulle richieste OID, vedere Filtrare le richieste OID del modulo.
Può avviare richieste OID.
Non deve liberare le risorse allocate dal driver durante l'operazione di collegamento.
Deve annullare i timer, se necessario per arrestare le operazioni di invio e ricezione.
Per altre informazioni sui timer, vedere Servizi timer NDIS 6.0.
Dopo che il driver di filtro sospende correttamente le operazioni di invio e ricezione, è necessario completare l'operazione di sospensione. Il driver di filtro può completare l'operazione di sospensione in modo sincrono o asincrono restituendo rispettivamente NDIS_STATUS_SUCCESS o NDIS_STATUS_PENDING da FilterPause.
Se il driver restituisce NDIS_STATUS_PENDING, deve chiamare la funzione NdisFPauseComplete dopo aver completato l'operazione di sospensione.
Per conto di un modulo di filtro che si trova nello stato Sospeso , il driver di filtro:
Non deve avere origine nuove indicazioni di ricezione.
Dovrebbe restituire nuove indicazioni di ricezione che i driver sottostanti hanno origine immediatamente a NDIS chiamando la funzione NdisFReturnNetBufferLists . Se necessario, il driver può copiare le indicazioni e accodarle prima di restituirle.
Non deve avere origine nuove richieste di invio.
Dovrebbe restituire immediatamente tutte le nuove richieste di invio effettuate alla funzione FilterSendNetBufferLists chiamando la funzione NdisFSendNetBufferListsComplete . Il driver di filtro deve impostare il membro Status in ogni struttura NET_BUFFER_LIST su NDIS_STATUS_PAUSED.
Può fornire indicazioni sullo stato con la funzione NdisFIndicateStatus .
Deve gestire le indicazioni di stato nella funzione FilterStatus .
Deve gestire le richieste OID nella funzione FilterOidRequest .
Può avviare richieste OID.
NDIS non avvia altre operazioni Plug and Play, ad esempio, collegare, scollegare o riavviare le richieste, mentre il driver di filtro si trova nello stato sospensione . NDIS può avviare richieste di scollegamento o riavvio dopo che un driver di filtro è nello stato Sospeso . Per altre informazioni su come scollegare un modulo di filtro, vedere Scollegamento di un modulo filtro. Per altre informazioni su come riavviare un modulo di filtro, vedere Avvio di un modulo di filtro.