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 參數中指定集區句柄。 例如,ProtocolType NET_BUFFER_LIST 結構的成員與集區相關聯。
針對指定來源NET_BUFFER_LIST結構中的每個NET_BUFFER結構,NDIS 會建立片段NET_BUFFER結構,如下所示:
- NDIS 會從來源NET_BUFFER結構 使用的數據空間 開始建立片段,並依 StartOffset 參數中指定的值位移。
- NDIS 會將來源NET_BUFFER結構中 StartOffset 中所使用的數據空間分割成片段。
- 每個片段的數據空間 長度小於或等於 MaximumLength 參數中指定的值。 最後一個片段 已使用的數據空間可以小於 MaximumLength 。
- 每個片段都會由新的NET_BUFFER結構和一組新的 MDL 鏈結來描述。
- 新NET_BUFFER結構的數據位移會由 DataOffsetDelta 參數中指定的位元元數目縮減(DataOffset 成員的值)。
- 如果 NDIS 必須配置記憶體,以提供 dataOffsetDelta 所要求的數據空間,它也應該配置 dataBackFill 指定 的額外空間。
呼叫 NdisFreeFragmentNetBufferList 函式,以釋放NET_BUFFER_LIST結構和先前透過呼叫 NdisAllocateFragmentNetBufferList配置的所有相關聯NET_BUFFER結構和 MDL 鏈結。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | NDIS 6.0 和更新版本支援。 |
目標平臺 | 普遍 |
標頭 | ndis/nblapi.h (include ndis.h) |
連結庫 | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
DDI 合規性規則 | Irql_NetBuffer_Function(ndis),NdisAllocateFragmentNetBufferList(ndis),NdisAllocateFragmentNetBufferList_InitFail(ndis) |