NdisQueryBufferSafe (Windows Embedded CE 6.0)
1/6/2010
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 Priority was set toLowPagePriority or NormalPagePriority
- System resources are exhausted and Priority was 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 |
Windows Embedded CE | Windows CE .NET 4.0 and later |
See Also
Reference
NDIS Library Functions
NdisGetFirstBufferFromPacketSafe
NdisMoveFromMappedMemory
NdisMoveMemory
NdisMoveToMappedMemory
NdisQueryBuffer
NdisQueryBufferOffset
NdisQueryPacket
NdisRawReadPortBufferUchar
NdisRawReadPortBufferUlong
NdisRawReadPortBufferUshort
NdisRawWritePortBufferUchar
NdisRawWritePortBufferUlong
NdisRawWritePortBufferUshort
NdisReleaseSpinLock
NdisUnchainBufferAtBack
NdisUnchainBufferAtFront