NdisAllocateFragmentNetBufferList 函式 (ndis/nblapi.h)
呼叫 NdisAllocateFragmentNetBufferList 函式,根據現有NET_BUFFER_LIST結構中的數據建立新的分散 NET_BUFFER_LIST 結構。
語法
NDIS_EXPORTED_ROUTINE NET_BUFFER_LIST * NdisAllocateFragmentNetBufferList(
[in] NET_BUFFER_LIST *OriginalNetBufferList,
NDIS_HANDLE NetBufferListPool,
NDIS_HANDLE NetBufferPool,
[in] ULONG StartOffset,
[in] ULONG MaximumLength,
[in] ULONG DataOffsetDelta,
[in] ULONG DataBackFill,
[in] ULONG AllocateFragmentFlags
);
參數
[in] OriginalNetBufferList
現有NET_BUFFER_LIST結構的指標。
NetBufferListPool
從呼叫取得的句柄 NdisAllocateNetBufferListPool 函式。
NetBufferPool
先前從呼叫傳回的NET_BUFFER結構集區句柄 NdisAllocateNetBufferPool。
[in] StartOffset
每個 NET_BUFFER 結構中數據開頭的額外位元組位移。 這個位移除了每個NET_BUFFER結構中指定的 DataOffset 成員值之外。
[in] MaximumLength
新NET_BUFFER_LIST結構中每個片段的最大長度,以位元組為單位。 每個片段都會由NET_BUFFER結構描述。
[in] DataOffsetDelta
NDIS 應該在新的NET_BUFFER結構中提供的額外 已使用數據空間 量。
[in] DataBackFill
除了需要配置時要配置的 DataOffsetDelta 參數值之外,還需要配置的數據空間量。 如果 NDIS 必須配置記憶體來提供 DataOffsetDelta 所要求的數據空間,它也應該配置 DataBackFill 所指定的額外空間。
[in] AllocateFragmentFlags
可與 OR 作業結合的 NDIS 旗標。 將此參數設定為零。 目前沒有為此函式定義的旗標。
傳回值
NdisAllocateFragmentNetBufferList 會傳回新片段NET_BUFFER_LIST結構的指標。 如果配置失敗,則傳回值為 NULL。
備註
NdisAllocateFragmentNetBufferList 會配置並初始化新的片段 NET_BUFFER_LIST 結構和 NET_BUFFER 結構,這些結構描述呼叫者傳遞給 NdisAllocateFragmentNetBufferList 之NET_BUFFER_LIST結構所描述的相同數據。
如果片段NET_BUFFER_LIST結構應具有與指定集區相關聯的屬性,呼叫端必須在 NetBufferListPoolHandle 或 NetBufferPoolHandle 參數中指定集區句柄。 例如,NET_BUFFER_LIST 結構的 ProtocolType 成員會與集區相關聯。
針對指定來源NET_BUFFER_LIST結構中的每個NET_BUFFER結構,NDIS 會建立片段NET_BUFFER結構,如下所示:
- NDIS 會從來源NET_BUFFER結構 中已使用之數據空間 的開頭開始建立片段,並依 StartOffset 參數中指定的值位移。
- NDIS 會將來源NET_BUFFER結構中 StartOffset ) 的已使用數據空間 (分割成片段。
- 每個片段 已使用之數據空間 的長度小於或等於 MaximumLength 參數中指定的值。 最後一個片段 的已使用資料空間 可以小於 MaximumLength 。
- 每個片段都會由新的NET_BUFFER結構和一組新的 MDL 鏈結來描述。
- 新的NET_BUFFER結構的數據位移會經過壓縮, (DataOffset 成員的值會減少) DataOffsetDelta 參數中指定的位元組數目。
- 如果 NDIS 必須配置記憶體來提供 DataOffsetDelta 所要求的數據空間,它也應該配置 DataBackFill 所指定的額外空間。
呼叫 NdisFreeFragmentNetBufferList 函式可釋放NET_BUFFER_LIST結構,以及先前呼叫 NdisAllocateFragmentNetBufferList 所配置的所有相關NET_BUFFER結構和 MDL 鏈結。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | NDIS 6.0 和更新版本支援。 |
目標平台 | Universal |
標頭 | ndis/nblapi.h (包含 ndis.h) |
程式庫 | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
DDI 合規性規則 | Irql_NetBuffer_Function (ndis) 、NdisAllocateFragmentNetBufferList (ndis) ,NdisAllocateFragmentNetBufferList_InitFail (ndis) |