設定NET_BUFFER_LIST資訊
標頭資料分割提供者必須在NET_BUFFER_LIST結構的NblFlags成員中設定標頭資料分割旗標,才能接收指示。 對於分割框架,NIC 也必須在每個NET_BUFFER結構的DataPhysicalAddress成員中,提供所接收框架之資料部分的實體位址。
注意 迷你埠驅動程式可以設定NET_BUFFER結構的 DataPhysicalAddress 成員,即使NET_BUFFER未與分割框架相關聯也一樣。 在此情況下, DataPhysicalAddress 包含標頭 MDL 的實體位址。
標頭資料分割提供者會將 NblFlags 成員中的旗標與位 OR 運算結合。
即使標頭資料分割提供者未分割框架,也可以設定下列旗標:
NDIS_NBL_FLAGS_IS_IPV4
NET_BUFFER_LIST中的所有畫面都是 IPv4 畫面。 如果設定此旗標,則不得設定NDIS_NBL_FLAGS_IS_IPV6旗標。
NDIS_NBL_FLAGS_IS_IPV6
NET_BUFFER_LIST中的所有畫面都是 IPv6 畫面。 如果設定此旗標,則不得設定NDIS_NBL_FLAGS_IS_IPV4旗標。
NDIS_NBL_FLAGS_IS_TCP
NET_BUFFER_LIST中的所有畫面都是 TCP 框架。 如果設定此旗標,則不得設定NDIS_NBL_FLAGS_IS_UDP。 而且必須設定NDIS_NBL_FLAGS_IS_IPV4或NDIS_NBL_FLAGS_IS_IPV6。
NDIS_NBL_FLAGS_IS_UDP
NET_BUFFER_LIST中的所有畫面都是 UDP 畫面。 如果設定此旗標,則不得設定NDIS_NBL_FLAGS_IS_TCP。 而且必須設定NDIS_NBL_FLAGS_IS_IPV4或NDIS_NBL_FLAGS_IS_IPV6。
任何 NDIS 驅動程式都可以設定上述旗標以進行偵錯、測試或其他用途。 如果驅動程式設定這些旗標,這些值必須正確描述所接收框架的內容。 建議設定這些旗標。
標頭資料分割提供者可以設定下列標頭資料分割旗標:
NDIS_NBL_FLAGS_HD_SPLIT
標頭和資料會分割在與 NET_BUFFER_LIST 結構相關聯的所有乙太網路框架中。
NDIS_NBL_FLAGS_SPLIT_AT_UPPER_LAYER_PROTOCOL_HEADER
NET_BUFFER_LIST結構中的所有畫面都會在 最上層通訊協定標頭的開頭分割。 如果設定此旗標,則必須設定NDIS_NBL_FLAGS_IS_IPV4或NDIS_NBL_FLAGS_IS_IPV6。 此外,也可以設定NDIS_NBL_FLAGS_IS_TCP或NDIS_NBL_FLAGS_IS_UDP。 而且NDIS_NBL_FLAGS_SPLIT_AT_UPPER_LAYER_PROTOCOL_PAYLOAD不得設定。
NDIS_NBL_FLAGS_SPLIT_AT_UPPER_LAYER_PROTOCOL_PAYLOAD
NET_BUFFER_LIST結構中的所有畫面都會在 TCP 承載的開頭 或 UDP 承載的開頭進行分割。 如果設定此旗標,則必須設定NDIS_NBL_FLAGS_IS_IPV4或NDIS_NBL_FLAGS_IS_IPV6。 必須設定NDIS_NBL_FLAGS_IS_TCP或NDIS_NBL_FLAGS_IS_UDP。 此外,不得設定NDIS_NBL_FLAGS_SPLIT_AT_UPPER_LAYER_PROTOCOL_HEADER。
如果標頭資料分割提供者未分割框架,則必須以 NblFlags 中清除的下列旗標來指出框架:
NDIS_NBL_FLAGS_HD_SPLIT
NDIS_NBL_FLAGS_SPLIT_AT_UPPER_LAYER_PROTOCOL_HEADER
NDIS_NBL_FLAGS_SPLIT_AT_UPPER_LAYER_PROTOCOL_PAYLOAD