NDIS 驅動程式的版本資訊需求
提供版本資訊的 NDIS 結構具有 標頭 成員,該成員定義為 NDIS_OBJECT_HEADER 結構和 NDIS 驅動程式必須支援這類版本資訊。
NDIS 可支援比 目前版本的 NDIS 版本更高的或更低 NDIS 版本的驅動程式 (,也就是電腦執行) 作業系統所支援的 NDIS 版本。 此外, 註冊的 NDIS 版本 (亦即,驅動程式在初始化) 期間回報的版本可能低於驅動程式支援的最高版本。 例如,NDIS 5.1 驅動程式或 NDIS 6.1 驅動程式可以在執行 NDIS 6.0 的作業系統版本上執行。 NDIS 5.1 驅動程式只會在初始化期間註冊為 NDIS 5.1 驅動程式。 不過,NDIS 6.1 驅動程式必須檢查目前的 NDIS 版本,而且必須註冊為支援此範例中 (可用之最高層級 NDIS 的驅動程式,NDIS 6.0) 。 如需如何取得目前 NDIS 版本的詳細資訊,請參閱 取得 NDIS 版本。
注意 在稍後的 結構修訂中,不需要驅動程式才能支援所有功能。 例如,迷你埠驅動程式可以建立第 2 版結構,並提供適用于第 1 版結構的值。
若要存取具有版本資訊之結構中的成員,NDIS 驅動程式必須完成下列程式:
先檢查 Header.Revision 和 Header.Size 成員,再存取 結構中的任何成員。
對於舊版結構 (,其修訂編號低於驅動程式所支援之 NDIS 版本相關聯的數位) :
- 驅動程式必須確認Header.Size 值對 Header.Revision值是正確的。 例如,NDIS_SIZEOF_Xxx_REVISION_1的值對Xxx_REVISION_1是正確的,但對Xxx_REVISION_2而言太小。
- Header.Size值必須等於或大於NDIS_SIZEOF_Xxx_REVISION_Nn (,其中 Nn是驅動程式所使用的結構修訂編號) ,而且驅動程式必須正確處理結構中的資訊,因為該修訂適合。
對於更新版本結構 (,其修訂編號高於驅動程式所支援之 NDIS 版本所支援之數位的結構) ,驅動程式可以使用 結構,就像是舊版的結構一樣。 較高的版本結構一律與舊版相容。
驅動程式必須針對已註冊的 NDIS 版本的驅動程式使用正確的結構修訂。 例如,NDIS 6.1 驅動程式必須在 NDIS_OFFLOAD 結構中報告其卸載功能,方法是設定 NDIS_OBJECT_HEADER 結構中的成員來指出NDIS_OFFLOAD_REVISION_2。 不過,驅動程式不需要支援隨附于NDIS_OFFLOAD_REVISION_2的所有功能。
成功處理 OID 集合要求的驅動程式,必須在從 OID 集合要求傳回時,在NDIS_OID_REQUEST結構中設定SupportedRevision成員。 SupportedRevision成員會通知驅動程式支援的修訂要求啟動器。 例如,迷你埠驅動程式可以建立Xxx_REVISION_2結構、提供適用于Xxx_REVISION_1結構的值,並以零填滿結構的其餘部分。 迷你埠驅動程式會在 SupportedRevision 成員中回報Xxx_REVISION_1。 在此情況下,可支援Xxx_REVISION_2的通訊協定驅動程式將會使用迷你埠驅動程式支援的Xxx_REVISION_1資訊。
若要判斷基礎驅動程式已成功處理哪些資訊,發出 OID 要求的過度驅動程式必須在 OID 要求傳回之後,檢查 NDIS_OID_REQUEST 結構中 SupportedRevision 成員中的值。