初始化標頭數據分割提供者
若要支持標頭數據分割,迷你埠驅動程序必須註冊為 NDIS 6.1 或更新版本的驅動程式。 迷你埠驅動程式的來源檔案必須指定 DNDIS61_MINIPORT=1,而不是 DNDIS60_MINIPORT=1。 迷你埠驅動程式也必須在 NDIS_MINIPORT_DRIVER_CHARACTERISTICS 結構中指定 NDIS 6.1 或更新版本。
若要註冊其標頭數據分割屬性,NDIS 6.1 迷你埠驅動程式會從其 MiniportInitializeEx 函式呼叫 NdisMSetMiniportAttributes 函式,並傳遞 NdisMSetMiniportAttributes 初始化的 NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES 結構。
NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES 結構包含下列資訊:
HDSplitAttributes 成員 NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES 包含一個指向 NDIS_HD_SPLIT_ATTRIBUTES 結構的指標,該結構指定了迷你埠介面卡所提供的標頭-數據分割功能。
HardwareCapabilities NDIS_HD_SPLIT_ATTRIBUTES 的成員包含迷你埠配接器支援的標頭數據分割功能。 這些功能可能包括目前被 INF 檔案設定或 進階 屬性頁面停用的功能。
CurrentCapabilities 是 NDIS_HD_SPLIT_ATTRIBUTES 的成員,包含迷你埠網卡支援的目前標頭資料分割功能。 如果透過 *HeaderDataSplit 標準化 INF 關鍵詞啟用標頭數據分割,迷你埠驅動程式會使用與 HardwareCapabilities 成員相同的旗標來指出目前的標頭數據分割組態。 如需 *HeaderDataSplit的詳細資訊,請參閱 Header-Data Split的標準化 INF 關鍵詞。
HDSplitFlags 成員的NDIS_HD_SPLIT_ATTRIBUTES包含標頭數據分割的組態旗標。 迷你埠驅動程式應該先將此成員設定為零,再呼叫 NdisMSetMiniportAttributes。 NDIS 會將這個成員設定為組態旗標的位 OR。 NdisMSetMiniportAttributes 成功傳回之後,迷你埠驅動程式必須在 HDSplitFlags 中檢查旗標設定,並據以設定硬體。
NDIS 會使用 NDIS_HD_SPLIT_ENABLE_HEADER_DATA_SPLIT 旗標來啟用迷你埠配接器的標頭數據分割。 如果迷你埠驅動程式未在 NDIS_HD_SPLIT_ATTRIBUTES 結構的 CurrentCapabilities 成員中設定NDIS_HD_SPLIT_CAPS_SUPPORTS_HEADER_DATA_SPLIT旗標,NDIS 將不會設定NDIS_HD_SPLIT_ENABLE_HEADER_DATA_SPLIT。 如果 NDIS 設定NDIS_HD_SPLIT_ENABLE_HEADER_DATA_SPLIT旗標,迷你埠驅動程式應該在 NIC 中啟用標頭數據分割。
迷你埠驅動程式應該先將 BackfillSize NDIS_HD_SPLIT_ATTRIBUTES 結構的成員設定為零,再呼叫 NdisMSetMiniportAttributes。 如果迷你埠驅動程序必須在分割框架的數據緩衝區中預先配置回填記憶體,NDIS 會設定 BackfillSize 成員。 NdisMSetMiniportAttributes 成功傳回之後,迷你埠驅動程式必須使用 NDIS 指定的 BackfillSize 值,並預先配置數據緩衝區。 如需資料緩衝區回填大小的詳細資訊,請參閱 配置資料緩衝區的回填。
迷你埠驅動程式應該先將 MaxHeaderSizeNDIS_HD_SPLIT_ATTRIBUTES 結構的成員設定為零,然後再呼叫 NdisMSetMiniportAttributes。 NDIS 會將這個成員設定為分割框架標頭緩衝區允許的大小上限。 NdisMSetMiniportAttributes 成功傳回之後,迷你埠驅動程式必須使用 NDIS 指定的 MaxHeaderSize 值。 如需標頭大小上限的詳細資訊,請參閱 配置標頭緩衝區。