NdisAllocateBuffer 函数 (ndis.h)

注意 NDIS 5. x 已弃用,由 NDIS 6 取代。 x。 有关新的 NDIS 驱动程序开发,请参阅 从 Windows Vista 开始的网络驱动程序。 有关移植 NDIS 5 的信息。 NDIS 6 的 x 驱动程序。 x,请参阅 将 NDIS 5.x 驱动程序移植到 NDIS 6.0

NdisAllocateBuffer 创建一个缓冲区描述符,该描述符映射已分配的非分页内存块内的指定虚拟 (子) 范围。

语法

void NdisAllocateBuffer(
  [out]          PNDIS_STATUS Status,
  [out]          PNDIS_BUFFER *Buffer,
  [in, optional] NDIS_HANDLE  PoolHandle,
  [in]           PVOID        VirtualAddress,
  [in]           UINT         Length
);

参数

[out] Status

指向调用方提供的变量的指针,此函数在该变量中返回缓冲区分配的最终状态,如果它在 Buffer 处返回了有效的缓冲区描述符指针,则NDIS_STATUS_SUCCESS,否则NDIS_STATUS_FAILURE。

[out] Buffer

指向调用方提供的变量的指针,此函数在该变量中返回指向分配的缓冲区描述符的指针。

[in, optional] PoolHandle

指定前面对 NdisAllocateBufferPool 的调用返回的句柄。

[in] VirtualAddress

指向以前分配的系统空间内存的基虚拟地址的指针,该地址将在返回的缓冲区描述符中映射。

[in] Length

指定要映射的字节数。

返回值

备注

返回值:无

NdisAllocateBuffer 为 分配存储,并初始化缓冲区描述符以映射先前分配的内存的指定范围,例如用于数据包标头或 NIC 接收缓冲区的内存。

缓冲区描述符分配在 NdisAllocateBufferPool 创建的缓冲池上绘制。 如果驱动程序在初始化期间调用 了 NdisAllocateBufferPool ,则可以根据需要多次调用 NdisAllocateBuffer 来分配所需的缓冲区描述符。

所有较低级别的 NDIS 驱动程序都必须分配它们链接到缓冲池中数据包的所有缓冲区描述符。 只能为最高级别协议驱动程序提供与操作系统相关的描述符来映射虚拟内存范围,并且,如果这些内存描述符等效于 NDIS 缓冲区描述符,则最高级别的协议可以将此类描述符作为参数传递给 NdisXxx 函数。

要求

要求
Header ndis.h (包括 Ndis.h)
Library Ndis.lib
IRQL IRQL <= DISPATCH_LEVEL

另请参阅