NdisQueryBufferSafe (Compact 2013)
3/26/2014
This function is the safe version of NdisQueryBuffer. Unlike NdisQueryBuffer, this function does not cause a bug check if system resources are low or exhausted. Drivers should call this function instead of NdisQueryBuffer.
Syntax
VOID NdisQueryBufferSafe(
PNDIS_BUFFER Buffer,
PVOID* VirtualAddress OPTIONAL,
PUINT Length,
MM_PAGE_PRIORITY Priority
);
Parameters
- Buffer
[in] Points to the buffer descriptor.
VirtualAddress
[out] Points to a caller-supplied variable in which this function returns the base virtual address of the range described, or set to NULL if:- System resources are low or exhausted and Prioritywas set toLowPagePriority or NormalPagePriority
- System resources are exhausted and Prioritywas set toHighPagePriority
- Length
[out] Points to a caller-supplied variable in which this function returns the number of bytes in the virtual range.
Priority
[in] Indicates the priority of the request as one of the following:- LowPagePriority
Specifies a low priority. It is acceptable for NdisQueryBufferSafe to fail if system resources are low. - NormalPagePriority
Specifies a normal priority. It is acceptable for NdisQueryBufferSafe to fail if system resources are low. - HighPagePriority
Specifies a high priority. It is not acceptable for NdisQueryBufferSafe to fail unless system resources are exhausted.
- LowPagePriority
Return Value
Returns the base virtual address if successful.
Remarks
NdisQueryBufferSafe retrieves the size of the range, and optionally its base virtual address, from a buffer descriptor.
NDIS drivers use NdisQueryBufferSafe to retrieve information from the buffer descriptors chained to incoming packets for subsequent transfer operations.
If Priority was set to LowPagePriority or NormalPagePriority, NdisQueryBufferSafe returns NULL if system resources are low or exhausted. If Priority was set to HighPagePriority, NdisQueryBufferSafe returns NULL if system resources are exhausted.
The driver must release any spin lock it is holding before calling NdisQueryBufferSafe.
Drivers should call NdisQueryBufferSafe instead of NdisQueryBuffer. If system resources are low or exhausted, calling NdisQueryBuffer causes a bug check. NDIS 5.1 miniports must call NdisQueryBufferSafe instead of NdisQueryBuffer.
Requirements
Header |
ndis.h |
See Also
Reference
NDIS 5.x Legacy Functions
NdisGetFirstBufferFromPacketSafe
NdisMoveMemory
NdisQueryBuffer
NdisQueryBufferOffset
NdisQueryPacket
NdisRawReadPortBufferUchar
NdisRawReadPortBufferUlong
NdisRawReadPortBufferUshort
NdisRawWritePortBufferUchar
NdisRawWritePortBufferUlong
NdisRawWritePortBufferUshort
NdisReleaseSpinLock