funzione FILTER_SYNCHRONOUS_OID_REQUEST (ndis.h)
NDIS chiama la funzione FilterSynchronousOidRequest di un driver di filtro per visualizzare in anteprima una richiesta OID sincrona prima che la richiesta venga assegnata al driver miniport sottostante.
Questa funzione è supportata in NDIS 6.81 e versioni successive.
Sintassi
NDIS_STATUS FILTER_SYNCHRONOUS_OID_REQUEST(
NDIS_HANDLE FilterModuleContext,
[in, out] NDIS_OID_REQUEST *OidRequest,
[out] PVOID *CallContext
);
Parametri
FilterModuleContext
Handle per l'area di contesto per il modulo di filtro che rappresenta la destinazione di questa richiesta. Il driver di filtro ha creato e inizializzato questa area di contesto nella funzione FilterAttach .
[in, out] OidRequest
Puntatore a una struttura NDIS_OID_REQUEST che specifica l'operazione richiesta.
[out] CallContext
Uno slot di archiviazione di dimensioni PVOID per il driver di filtro per condividere lo stato tra i gestori FilterSynchronousOidRequest e FilterSynchronousOidRequestComplete . NDIS garantisce che questo punta inizialmente a un valore zero. Per altre informazioni, vedere la sezione Osservazioni.
Valore restituito
Questa funzione restituisce uno dei codici di NDIS_STATUS appropriati seguenti:
Codice restituito | Descrizione |
---|---|
NDIS_STATUS_SUCCESS | Consentire alla richiesta OID di continuare a propagarsi fino al driver miniport. I driver di filtro devono restituire questo codice di stato per qualsiasi tipo non riconosciuto di OID. |
NDIS_STATUS_ALREADY_COMPLETE | Arrestare la propagazione della richiesta OID verso il basso e restituirla al chiamante con lo stato NDIS_STATUS_SUCCESS. |
|
Uguale a FilterDirectOidRequest. |
NDIS_STATUS_RESOURCES | Uguale a FilterDirectOidRequest, ma con cautela che le richieste OID sincrone devono essere completate rapidamente e pertanto i driver di filtro devono in genere evitare di allocare risorse. |
NDIS_STATUS_NOT_SUPPORTED | I driver di filtro non devono restituire questo codice semplicemente perché l'OID non è riconosciuto. I driver di filtro possono restituire questo risultato solo se il filtro riconosce l'operazione, ma non può eseguirla per qualche motivo. |
Commenti
FilterSynchronousOidRequest è una funzione facoltativa. Se un driver di filtro non deve osservare o modificare le richieste OID sincrone inviate al driver miniport, il driver di filtro deve impostare il punto di ingresso per questa funzione su NULL quando chiama NdisFRegisterFilterDriver.
NDIS chiama la funzione FilterSynchronousOidRequest del driver di filtro per elaborare le richieste OID sincrone originate da driver eccessivamente. I driver di filtro possono leggere o modificare alcuni campi nella struttura NDIS_OID_REQUEST come indicato di seguito:
Campo | Filtrare l'accesso |
---|---|
Intestazione | Sola lettura |
RequestType | Lettura/Scrittura |
PortNumber | Lettura/Scrittura |
Timeout | Non accedere |
RequestId | Non accedere |
Requesthandle | Lettura/Scrittura |
DATA | Lettura/Scrittura |
NdisReserved | Non accedere |
MiniportReserved | Non accedere |
SourceReserved | Non accedere |
SupportedRevision | Lettura/Scrittura |
Reserved1, Reserved2 | Non accedere |
SwitchId | Lettura/Scrittura |
VPortId | Lettura/Scrittura |
Flags | Lettura/Scrittura |
Oltre a modificare la struttura di NDIS_OID_REQUEST , i driver di filtro possono controllare la richiesta usando il codice restituito da FilterSynchronousOidRequest:
- NDIS_STATUS_SUCCESS: l'OID continua a propagarsi fino al driver miniport.
- NDIS_STATUS_ALREADY_COMPLETE: l'OID viene immediatamente completato ai driver overlying, senza prima propagarsi al driver miniport. La richiesta OID viene completata al driver overlying con NDIS_STATUS_SUCCESS.
- Qualsiasi altro codice di stato: l'OID viene immediatamente completato ai driver overlying, senza prima propagarsi al driver miniport. La richiesta OID viene completata al driver overlying con il codice di stato restituito dal driver di filtro.
Se il driver del filtro registra anche un gestore FilterSynchronousOidRequestComplete , NDIS garantisce che il gestore FilterSynchronousOidRequestComplete venga chiamato se e solo se il gestore FilterSynchronousOidRequest restituisce NDIS_STATUS_SUCCESS.
Il gestore FilterSynchronousOidRequest può scrivere qualsiasi valore di dimensioni PVOID in *CallContext e lo stesso valore verrà restituito al gestore FilterSynchronousOidRequestComplete del driver di filtro al termine della richiesta OID. Il driver di filtro può usarlo per trasportare lo stato tra i due gestori. Poiché il gestore FilterSynchronousOidRequestComplete viene richiamato solo se il gestore FilterSynchronousOidRequest restituisce NDIS_STATUS_SUCCESS, non esiste alcun motivo per scrivere un valore in *CallContext quando restituisce qualsiasi altro codice. Analogamente, non esiste alcun motivo per scrivere un valore in *CallContext se il driver di filtro non fornisce un gestore FilterSynchronousOidRequestComplete .
I driver di filtro non devono restituire NDIS_STATUS_PENDING da un gestore FilterSynchronousOidRequest . Le richieste OID sincrone non possono essere sospese o annullate.
I driver di filtro devono essere restituiti rapidamente dal gestore FilterSynchronousOidRequest , senza bloccare, attendere o dormire. Le richieste OID sincrone vengono usate solo per le operazioni a bassa latenza e i driver di filtro devono cercare di continuare o completarli entro diversi millisecondi. NDIS non serializza le richieste OID sincrone tra loro, rispetto ad altre richieste OID o a FilterPause. È responsabilità del driver di filtro implementare qualsiasi sincronizzazione necessaria.
NDIS serializza le richieste OID sincrone su FilterDetach: NDIS garantisce che nessuna richiesta OID sincrona sarà attiva una volta richiamato FilterDetach .
I driver di filtro non devono chiamare NdisAllocateCloneOidRequest o NdisCancelOidRequest in una richiesta OID sincrona. I driver di filtro non devono chiamare NdisFSynchronousOidRequest su una richiesta OID ricevuta tramite un gestore FilterSynchronousOidRequest .
Se un driver di filtro genera irQL nel gestore FilterSynchronousOidRequest , deve ripristinare irQL al livello iniziale prima di restituire dal gestore FilterSynchronousOidRequest .
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 10, versione 1709 |
Piattaforma di destinazione | Windows |
Intestazione | ndis.h (include Ndis.h) |
IRQL | <= DISPATCH_LEVEL |
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per