標頭版本的 NDIS 支援概觀
許多 NDIS 結構都包含結構版本資訊。 NDIS 或 NDIS 驅動程式會初始化每個結構所需的這類結構中的 Header 成員。 NDIS 驅動程式應該先檢查每個結構中的版本資訊,然後再存取結構成員。
Header成員是NDIS_OBJECT_HEADER結構。 這個結構包含包含 Header 成員之結構的修訂編號、類型和大小。
包含 Header 成員的結構符合下列需求:
如果新的資訊新增至新 NDIS 版本的成員清單,結構將會有新的修訂值。 例如,如果結構的 NDIS 6.1 版本在成員清單的結尾、聯集或位元遮罩中有新的成員,則其修訂值會與 NDIS 6.0 版本不同。
變更結構之後,結構的後續修訂大小可以等於或大於結構先前修訂的大小,但不會較小。 如果新大小大於先前修訂的大小,則會在成員清單結尾新增新成員。
如果先前的修訂資訊仍然有效且完成,結構將只會有新的修訂。 也就是說,新版本的結構包含舊版成員的超集合。 注意 如果無法符合上述任何條件,NDIS 會以新的名稱提供新的結構,以取代現有結構,而不是提供現有結構的修訂版本。
NDIS 驅動程式應該一律使用預先定義的修訂值。 NDIS 會分別針對NDIS_OBJECT_HEADER的Revision和Size成員,以Xxx_REVISION_Nn格式和NDIS_SIZEOF_Xxx_REVISION_Nn提供這類定義。 此外,Xxx 代表結構的名稱,而 Nn 是修訂編號。 例如, NDIS_FILTER_PARTIAL_CHARACTERISTICS 結構第一個修訂的修訂和大小分別NDIS_FILTER_PARTIAL_CHARACTERISTICS_REVISION_1和NDIS_SIZEOF_FILTER_PARTIAL_CHARACTERISTICS_REVISION_1。
Header.Size值必須與Header.Revision值一致。 也就是說,如果 Revision 成員包含Xxx_REVISION_1, Size 成員值必須等於或大於NDIS_SIZEOF_Xxx_REVISION_1。