Requisiti per le informazioni sulla versione per i driver NDIS
Le strutture NDIS che forniscono informazioni sulla versione hanno un membro Intestazione definito come struttura NDIS_OBJECT_HEADER e driver NDIS devono fornire supporto per tali informazioni sulla versione.
NDIS può supportare i driver che supportano una versione NDIS superiore o inferiore rispetto alla versione corrente di NDIS , ovvero la versione di NDIS supportata nella versione del sistema operativo in cui è in esecuzione un computer. Anche la versione NDIS registrata , ovvero la versione segnalata dal driver durante l'inizializzazione, del driver può essere inferiore alla versione più alta supportata dal driver. Ad esempio, un driver NDIS 5.1 o un driver NDIS 6.1 può essere eseguito in una versione del sistema operativo che esegue NDIS 6.0. Il driver NDIS 5.1 registra semplicemente come driver NDIS 5.1 durante l'inizializzazione. Tuttavia, il driver NDIS 6.1 deve controllare la versione corrente di NDIS e deve registrarsi come driver che supporta il livello più alto di NDIS disponibile (in questo esempio, NDIS 6.0). Per altre informazioni su come ottenere la versione NDIS corrente, vedere Ottenere la versione NDIS.
Nota Un driver non è necessario per supportare tutte le funzionalità in una revisione successiva di una struttura. Ad esempio, un driver miniport può creare una struttura della versione 2 e fornire valori appropriati per una struttura versione 1.
Per accedere ai membri nelle strutture con informazioni sulla versione, i driver NDIS devono completare il processo seguente:
Controllare i membri Header.Revision e Header.Size prima di accedere a tutti i membri della struttura.
Per le strutture delle versioni precedenti, ovvero strutture con un numero di revisione inferiore rispetto al numero associato alla versione NDIS supportata dal driver:
- Il driver deve verificare che il valore Header.Size sia corretto per il valore Header.Revision . Ad esempio, il valore di NDIS_SIZEOF_Xxx_REVISION_1 è corretto per Xxx_REVISION_1, ma è troppo piccolo per Xxx_REVISION_2.
- Il valore Header.Size deve essere uguale o maggiore di NDIS_SIZEOF_Xxx_REVISION_Nn (dove Nn è il numero di revisione della struttura usata dal driver) e il driver deve gestire correttamente le informazioni nella struttura come appropriato per tale revisione.
Per le strutture di versione successive, ovvero strutture con un numero di revisione superiore al numero associato alla versione NDIS supportata dal driver, il driver può usare la struttura come se fosse una revisione precedente della struttura. La struttura della versione superiore è sempre compatibile con la versione precedente.
I driver devono usare la revisione corretta di una struttura per la versione NDIS registrata del driver. Ad esempio, un driver NDIS 6.1 deve segnalare le funzionalità di offload nelle strutture NDIS_OFFLOAD impostando i membri nella strutturaNDIS_OBJECT_HEADER per indicare NDIS_OFFLOAD_REVISION_2. Tuttavia, il driver non deve supportare tutte le funzionalità incluse in NDIS_OFFLOAD_REVISION_2.
Un driver che gestisce correttamente una richiesta di set OID deve impostare il membro SupportedRevision nella struttura NDIS_OID_REQUEST alla restituzione dalla richiesta del set OID. Il membro SupportedRevision notifica all'iniziatore della richiesta della revisione supportata dal driver. Ad esempio, un driver miniport può creare una struttura Xxx_REVISION_2, fornire valori appropriati per una struttura Xxx_REVISION_1 e riempire il resto della struttura con zero. Il driver miniport segnala Xxx_REVISION_1 nel membro SupportedRevision . In questo caso, un driver di protocollo che può supportare un Xxx_REVISION_2 userà Xxx_REVISION_1 informazioni supportate dal driver miniport.
Per determinare quali informazioni sono state gestite correttamente da un driver sottostante, i driver che generano richieste OID devono controllare il valore nel membro SupportedRevision nella struttura NDIS_OID_REQUEST dopo che la richiesta OID restituisce.