NdisAllocateBuffer function (ndis.h)
Note NDIS 5. x has been deprecated and is superseded by NDIS 6. x. For new NDIS driver development, see Network Drivers Starting with Windows Vista. For information about porting NDIS 5. x drivers to NDIS 6. x, see Porting NDIS 5.x Drivers to NDIS 6.0.
NdisAllocateBuffer creates a buffer descriptor mapping a specified virtual (sub)range within an already allocated, nonpaged memory block.
Syntax
void NdisAllocateBuffer(
[out] PNDIS_STATUS Status,
[out] PNDIS_BUFFER *Buffer,
[in, optional] NDIS_HANDLE PoolHandle,
[in] PVOID VirtualAddress,
[in] UINT Length
);
Parameters
[out] Status
Pointer to a caller-supplied variable in which this function returns the final status of the buffer allocation, which is NDIS_STATUS_SUCCESS if it returned a valid buffer descriptor pointer at Buffer and otherwise NDIS_STATUS_FAILURE.
[out] Buffer
Pointer to a caller-supplied variable in which this function returns a pointer to the allocated buffer descriptor.
[in, optional] PoolHandle
Specifies the handle returned by a preceding call to NdisAllocateBufferPool.
[in] VirtualAddress
Pointer to the base virtual address of previously allocated system-space memory to be mapped in the returned buffer descriptor.
[in] Length
Specifies the number of bytes to be mapped.
Return value
None
Remarks
Return value: None
NdisAllocateBuffer allocates storage for and initializes a buffer descriptor to map a specified range of previously allocated memory, such as memory used for a packet header or a NIC receive buffer.
Buffer descriptor allocation draws on the buffer pool that NdisAllocateBufferPool creates. A driver can call NdisAllocateBuffer as many times as necessary to allocate the buffer descriptors that it requires if it called NdisAllocateBufferPool during initialization.
All lower-level NDIS drivers must allocate all buffer descriptors that they chain to packets from buffer pool. Only highest-level protocol drivers can be given OS-dependent descriptors mapping virtual memory ranges, and, if these memory descriptors are equivalent to NDIS buffer descriptors, a highest-level protocol can pass such descriptors as parameters to NdisXxx functions.
- Target platform: Universal
Requirements
Requirement | Value |
---|---|
Header | ndis.h (include Ndis.h) |
Library | Ndis.lib |
IRQL | IRQL <= DISPATCH_LEVEL |