A. 3 Summary of NDIS Library Functions for Full-NIC Drivers

This summarizes, in alphabetical order, all NDIS and filter library functions that legacy full-NIC drivers can call and the macros they can use.

Part I of the Network Driver Reference contains references for all functions and macros mentioned here that are also called by NDIS miniport and protocol drivers. References for functions called only by full-NIC drivers follow this summary. However, this summary has jumps to the references for every EthXxx, FddiXxx, NdisXxx, and TrXxx function and all macros that existing full-NIC drivers might use, including those in Part I.

For more information about Windows NT kernel-mode support routines and macros that an existing full-NIC driver might use, see also the Kernel-Mode Driver Reference.

EthChangeFilterAddresses 
Checks the current multicast address list for all currently bound protocols and, if changes are necessary, calls the driver’s MacChangeEthAddress function, which was set up with EthCreateFilter, given a pointer to the filter database, the handle to the open indicating the binding, the packet causing the change of addresses, whether the changes are caused by a set request (rather than a close), a variable-sized array of address specifications, and a count of elements in the array. This function restores the original multicast address list if the caller-supplied function returns anything except NDIS_STATUS_SUCCESS or NDIS_STATUS_PENDING.
ETH_COPY_NETWORK_ADDRESS 
Copies a given Ethernet address to a given location.
EthCreateFilter 
Creates and initializes an Ethernet filter database, given the address of the NIC, the number of multicast addresses it can support, three driver-supplied functions to be called when certain runtime changes occur, a caller-initialized spin lock used to synchronize access to the filter database, and a pointer to a variable that is set to the address of the filter database on return from this function.
EthDeleteFilter 
Releases the resources used for an Ethernet filter database when there are no remaining active filters.
EthDeleteFilterOpenAdapter 
Removes a binding that was set up with EthNoteFilterOpenAdapter from the filter database when the NIC is closed by the protocol, calling driver-supplied functions as necessary to modify the database, given the pointer to the Ethernet filter database, the binding and context handles set up when the NIC was opened by the protocol, and a pointer to the filter handle returned by EthNoteFilterOpenAdapter.
EthFilterAdjust 
Calls the driver’s MacChangeFilter function, which was set up with EthCreateFilter, when a particular filter class changes from being used to not used or vice versa, given a pointer to the filter database, the handle to the open indicating the binding, the packet causing the change of class usage, whether the change is caused by a set request (rather than a close), and the classes to be added or deleted. This function restores the original classes if the caller-supplied function returns anything except NDIS_STATUS_SUCCESS or NDIS_STATUS_PENDING.
EthFilterIndicateReceive 
Indicates the arrival of an Ethernet receive packet, passing in a pointer to the Ethernet filter database, a pointer to caller-supplied context that the protocol must pass back if it later requests a transfer of the packet data, the destination address in the received packet, the packet header and its size in bytes, a pointer to a lookahead buffer containing some packet data and its size in bytes, and the total size in bytes of the packet. This function forwards the receive information to the appropriate bound protocol(s).
EthFilterIndicateReceiveComplete
Indicates that a receive operation is done, that is, that EthFilterIndicateReceive has returned to the caller. EthFilterIndicateReceiveComplete, given a pointer to the Ethernet filter database, notifies the appropriate bound protocol(s).
EthNoteFilterOpenAdapter 
Adds a new binding to the existing filter database, given the pointer to an Ethernet filter database already initialized with EthCreateFilter, the binding and context handles set up when the NIC was opened by the protocol, and a pointer to caller-supplied storage for the filter handle that this function returns if the call succeeds.
ETH_NUMBER_OF_GLOBAL_FILTER_ADDRESSES
Returns the number of multicast addresses in the Ethernet database multicast list for the NIC, given a pointer to the filter database returned by EthCreateFilter.
EthNumberOfOpenFilterAddresses
Returns how any multicast addresses a particular binding is using, given a pointer to the Ethernet filter database and the binding handle.
EthQueryGlobalFilterAddresses
Returns a variable-sized array of the multicast addresses currently in use by all bound protocols, given a pointer to the Ethernet filter database, the number of addresses obtained from ETH_NUMBER_OF_GLOBAL_FILTER_ADDRESSES, and pointers to caller-supplied variables for returned status, the array of addresses, and the number of addresses actually returned in the array.
ETH_QUERY_FILTER_CLASSES 
Returns a value indicating the currently enabled filter classes, given a pointer to the filter database returned by EthCreateFilter.
EthQueryOpenFilterAddresses
Returns a variable-sized array of the multicast addresses a particular binding is using, given a pointer to the Ethernet filter database, the binding handle, the number of addresses obtained from EthNumberOfOpenFilterAddresses, and pointers to caller-supplied variables for returned status, the array of addresses, and the number of addresses actually returned in the array.
ETH_QUERY_PACKET_FILTER 
Returns a value indicating the currently enabled filter classes for a particular binding, given a pointer to the filter database returned by EthCreateFilter and a handle to the binding.
EthShouldAddressLoopBack 
Returns FALSE if a packet bound for a given Ethernet address cannot possibly loop back.
FDDI_COMPARE_NETWORK_ADDRESSES
Sets a caller-supplied variable to a value indicating whether a given FDDI address is greater than, less than, or equal to another given FDDI address.
FddiChangeFilterLongAddresses
Checks the current multicast long address list for all currently bound protocols and, if changes are necessary, calls the driver’s MacChangeFddiAddresses function, which was set up with FddiCreateFilter, given a pointer to the filter database, the binding handle, the packet causing the change of addresses, whether the changes are caused by a set request (rather than a close), a variable-sized array of long address specifications, and a count of elements in the array. This function restores the original multicast address list if the caller-supplied function returns anything except NDIS_STATUS_SUCCESS or NDIS_STATUS_PENDING.
FddiChangeFilterShortAddresses
Checks the current multicast short address list for all currently bound protocols and, if changes are necessary, calls the driver’s MacChangeFddiAddresses function, which was set up with FddiCreateFilter, given a pointer to the filter database, the binding handle, the packet causing the change of addresses, whether the changes are causesd by a set request (rather than a close), a variable-sized array of short address specifications, and a count of elements in the array. This function restores the original multicast address list if the caller-supplied function returns anything except NDIS_STATUS_SUCCESS or NDIS_STATUS_PENDING.
FddiCreateFilter 
Creates and initializes an FDDI filter database, given the long and short address of the NIC, the number of multicast long and short addresses it can support, three driver-supplied functions to be called when certain runtime changes occur, a caller-initialized spin lock used to synchronize access to the filter database, and a pointer to a variable that is set to the address of the filter database on return from this function.
FddiDeleteFilter 
Releases the resources used for an FDDI filter database when there are no remaining active filters.
FddiDeleteFilterOpenAdapter
Removes a binding that was set up with FddiNoteFilterOpenAdapter from the filter database when the NIC is closed by the protocol, calling driver-supplied functions as necessary to modify the database, given the pointer to the FDDI filter database, the binding and context handles set up when the NIC was opened by the protocol, and a pointer to the filter handle returned by FddiNoteFilterOpenAdapter.
FddiFilterAdjust 
Calls the driver’s MacChangeFilter function, which was set up with FddiCreateFilter, when a particular filter class changes from being used to not used or vice versa, given a pointer to the filter database, the binding handle, the packet causing the change of class usage, whether the change is caused by a set request (rather than a close), and the classes to be added or deleted. This function restores the original classes if the caller-supplied function returns anything except NDIS_STATUS_SUCCESS or NDIS_STATUS_PENDING.
FddiFilterIndicateReceive 
Indicates the arrival of an FDDI receive packet, passing in a pointer to the FDDI filter database, a pointer to caller-supplied context that the protocol must pass back if it later requests a transfer of the packet data, the destination address in the received packet and the address’s length, the packet header and its size in bytes, a pointer to a lookahead buffer containing some packet data and its size in bytes, and the total size in bytes of the packet. This function forwards the receive information to the appropriate bound protocol(s).
FddiFilterIndicateReceiveComplete
Indicates that a receive operation is done, that is, that FddiFilterIndicateReceive has returned to the caller. FddiFilterIndicateReceiveComplete, given a pointer to the FDDI filter database, notifies the appropriate bound protocol(s).
FDDI_IS_BROADCAST 
Sets a caller-supplied variable to a Boolean value indicating whether a given FDDI address is a broadcast address.
FDDI_IS_MULTICAST 
Sets a caller-supplied variable to a Boolean value indicating whether a given FDDI address is a multicast address.
FDDI_IS_SMT 
Sets a caller-supplied variable to a Boolean value indicating whether a given FDDI frame is SMT.
FddiNoteFilterOpenAdapter 
Adds a new binding to the existing filter database, given the pointer to an FDDI filter database already initialized with FddiCreateFilter, the binding and context handles set up when the NIC was opened by the protocol, and a pointer to caller-supplied storage for the filter handle that this function returns if the call succeeds.
FDDI_NUMBER_OF_GLOBAL_FILTER_LONG_ADDRESSES
Returns the number of addresses in the FDDI database long address list for the NIC, given a pointer to the filter database returned by FddiCreateFilter.
FDDI_NUMBER_OF_GLOBAL_FILTER_SHORT_ADDRESSES
Returns the number of addresses in the FDDI database short address list for the NIC, given a pointer to the filter database returned by FddiCreateFilter.
FddiNumberOfOpenFilterLongAddresses
Returns how many long addresses are in use by a particular binding, given the binding handle and a pointer to the FDDI filter database.
FddiNumberOfOpenFilterShortAddresses
Returns how many short addresses are in use by a particular binding, given the binding handle and a pointer to the FDDI filter database.
FDDI_QUERY_FILTER_CLASSES 
Returns a value indicating the currently enabled filter classes, given a pointer to the filter database returned by FddiCreateFilter.
FddiQueryGlobalFilterLongAddresses
Returns a variable-sized array of the long addresses currently in use by all bound protocols, given a pointer to the FDDI filter database, the number of addresses obtained from FDDI_NUMBER_OF_GLOBAL_FILTER_LONG_ADDRESSES, and pointers to caller-supplied variables for returned status, the array of addresses, and the number of addresses actually returned in the array.
FddiQueryGlobalFilterShortAddresses
Returns a variable-sized array of the short addresses currently in use by all bound protocols, given a pointer to the FDDI filter database, the number of addresses obtained from FDDI_NUMBER_OF_GLOBAL_FILTER_SHORT_ADDRESSES, and pointers to caller-supplied variables for returned status, the array of addresses, and the number of addresses actually returned in the array.
FddiQueryOpenFilterLongAddresses
Returns a variable-sized array of the long addresses currently in use by a particular bound protocol, given a pointer to the FDDI filter database, the binding handle set up when the protocol opened the adapter, the number returned by FddiNumberOfOpenFilterLongAddresses, and pointers to caller-supplied variables for returned status, the array of addresses, and the number of addresses actually returned in the array.
FddiQueryOpenFilterShortAddresses
Returns a variable-sized array of the short addresses currently in use by a particular bound protocol, given a pointer to the FDDI filter database, the binding handle set up when the protocol opened the adapter, the number returned by FddiNumberOfOpenFilterShortAddresses, and pointers to caller-supplied variables for returned status, the array of addresses, and the number of addresses actually returned in the array.
FDDI_QUERY_PACKET_FILTER 
Returns a value indicating the currently enabled filter classes for a particular binding, given a pointer to the filter database returned by FddiCreateFilter and a handle to the binding.
FddiShouldAddressLoopBack 
Returns FALSE if a packet bound for a given FDDI address cannot possibly loop back.
NdisAcquireSpinLock 
Acquires a spin lock so the caller can synchronize access to resources shared among nonISR driver routines in a multiprocessor-safe way.
NdisAdjustBufferLength 
Modifies the length specified in a given buffer descriptor that was allocated or copied by the caller.
NdisAllocateBuffer 
Creates a buffer descriptor describing a specified virtual (sub)range within an already allocated, nonpaged memory block, given a handle returned by NdisAllocateBufferPool.
NdisAllocateBufferPool 
Returns a handle with which the caller can allocate buffer descriptors by calling NdisAllocateBuffer.
NdisAllocateDmaChannel 
Reserves system resources during driver initialization for subsequent slave DMA operations and claims a DMA channel in the registry, returning a handle to be passed in subsequent calls to the NdisXxx DMA functions.
NdisAllocateMemory 
Allocates resident (nonpaged) system-space memory, optionally within a specified address limit, as a physically contiguous allocation, and/or as a noncached allocation.
NdisAllocatePacket 
Allocates a packet, given a handle returned by a preceding call to NdisAllocatePacketPool.
NdisAllocatePacketPool 
Allocates and initializes a block of nonpaged packet pool, given the number of packet descriptors and how many bytes each fixed-size packet should contain.
NdisAllocateSharedMemory 
Allocates and maps a memory range so it is simultaneously accessible from both the system and a busmaster DMA device, given a handle for the NIC returned by NdisRegisterAdapter, the number of bytes to be allocated, and whether the memory should be cached. Returns the base (system) virtual address of the allocation for use by the driver and a mapped base logical address for use by the NIC.
NdisAllocateSpinLock 
Initializes a variable of type NDIS_SPIN_LOCK, used to synchronize access to data shared among nonISR driver routines. An initialized spin lock, for which the caller supplies resident storage, is a required parameter to the Ndis..SpinLock and NdisInterlockedXxx functions.
NDIS_BUFFER_LINKAGE 
Returns a pointer to a linked buffer, given a pointer to an NDIS buffer descriptor.
NdisCancelTimer 
Cancels the immediately preceding call to NdisSetTimer, provided that the interval given to NdisSetTimer has not yet expired.
NdisChainBufferAtBack 
Links a given buffer descriptor at the end of the chain of buffer descriptors for a given packet.
NdisChainBufferAtFront 
Links a given buffer descriptor at the start of the chain of buffer descriptors for a given packet.
NdisCloseConfiguration 
Releases the handle returned by NdisOpenConfiguration after the caller has retrieved hardware configuration information for a NIC and/or, possibly, stored additional information about its NIC in the registry.
NdisCloseFile 
Releases a handle returned by NdisOpenFile and frees the memory allocated to hold the file contents when it was opened.
NdisCompleteBufferPhysicalMapping
Flushes any data remaining in a busmaster NIC’s internal cache at the end of a transfer operation that was set up with NdisStartBufferPhysicalMapping.
NdisCompleteCloseAdapter 
Notifies NDIS that the driver has completed a close-adapter request for which it previously returned NDIS_STATUS_PENDING, given the binding handle that identifies the protocol and the final status to be returned for the request. This function also releases resources that were allocated when the adapter was opened.
NdisCompleteDmaTransfer 
Completes a slave DMA transfer operation begun with a preceding call to NdisSetupDmaTransfer, ensuring that the data is flushed to system memory or to the NIC, depending on the transfer direction.
NdisCompleteOpenAdapter 
Notifies NDIS that the driver has completed an open-adapter request for which it previously returned NDIS_STATUS_PENDING, given the binding handle that identifies the protocol, the final status to be returned for the open request, and a second status with additional information if the driver set anything other than NDIS_STATUS_SUCCESS for the final status.
NdisCompleteQueryStatistics
Notifies NDIS that the driver has completed a non-protocol-specific open or query-information request for which it previously returned NDIS_STATUS_PENDING, given the handle to the NIC (returned by NdisRegisterAdapter), a pointer to the request, and the final status assigned by the caller.
NdisCompleteRequest 
Returns the packet and final status of a completed query- or set-information request for which the driver previously returned NDIS_STATUS_PENDING, so that NDIS can return the completed packet to the appropriate bound protocol driver.
NdisCompleteReset 
Returns the final status of a reset request for which the driver previously returned NDIS_STATUS_PENDING and indicates whether the reset operation on the NIC affected its network address information.
NdisCompleteSend 
Returns the packet and final status of a completed send request for which the driver previously returned NDIS_STATUS_PENDING, so that NDIS can return the completed packet to the appropriate bound protocol driver.
NdisCompleteTransferData 
Returns the packet and final status of a completed transfer request for which the driver previously returned NDIS_STATUS_PENDING, so that NDIS can return the completed packet to the appropriate bound protocol driver.
NdisCopyBuffer 
Creates a buffer descriptor for a specified virtual (sub)range, given a handle for a block of already allocated memory and a pointer to the memory descriptor for the block.
NdisCopyFromPacketToPacket 
Copies a specified number of bytes of data from one packet to another, starting at a specified offset in a given source packet’s data and copying the data to a specified offset in the target packet. Returns the number of bytes actually copied, which can be less than the requested number, depending on the source packet and specified starting offset for the copy operation.
NdisCreateLookaheadBufferFromSharedMemory
Returns the virtual address of a buffer within a block of memory shared with a busmaster DMA NIC so the caller can read(ahead) data in the buffer.
NdisDeregisterAdapter 
Releases resources that were originally allocated with NdisRegisterAdapter, given the adapter handle. Drivers call NdisDeregisterAdapter when they are unloading.
NdisDeregisterAdapterShutdownHandler
Removes a driver function when the driver is unloading from the set of shutdown handlers that were registered with NdisRegisterAdapterShutdownHandler.
NdisDeregisterMac 
Removes the caller from the set of drivers registered with NdisRegisterMac. Drivers call NdisDeregisterMac when they are unloading.
NdisDestroyLookaheadBufferFromSharedMemory
Releases access to the buffer obtained in the preceding call to NdisCreateLookaheadBufferFromSharedMemory.
NdisDprAcquireSpinLock 
Acquires a spin lock so the caller can synchronize access to resources shared among nonISR driver routines in a multiprocessor-safe way, provided that the caller is running at IRQL DISPATCH_LEVEL.
NdisDprReleaseSpinLock 
Releases a spin lock that was acquired in a preceding call to NdisDprAcquireSpinLock.
NdisFlushBuffer 
Flushes the memory region described by a given buffer descriptor from all processor caches.
NdisFreeBuffer 
Releases a buffer descriptor obtained in a preceding call to NdisAllocateBuffer or NdisCopyBuffer.
NdisFreeBufferPool 
Releases a handle obtained in a preceding call to NdisAllocateBufferPool.
NdisFreeDmaChannel 
Releases system resources, including claimed hardware resources in the registry, that were acquired with NdisAllocateDmaChannel. Drivers of slave DMA NICs call NdisFreeDmaChannel when they are unloading.
NdisFreeMemory 
Releases a handle, usually when the driver is being unloaded, that was obtained in a preceding call to NdisAllocateMemory.
NdisFreePacket 
Releases a packet that was allocated from packet pool with NdisAllocatePacket and returns it to the free list.
NdisFreePacketPool 
Releases a handle to a block of packet pool that was allocated with NdisAllocatePacketPool.
NdisFreeSharedMemory 
Releases system resources that were acquired with NdisAllocateSharedMemory. Drivers call NdisFreeSharedMemory when they are unloading.
NdisFreeSpinLock 
Releases a spin lock initialized in a preceding call to NdisAllocateSpinLock, usually when a driver is unloading.
NdisFreeString 
Frees the buffered string allocated with NdisInitializeString.
NdisGetBufferPhysicalArraySize
Returns the number of discontiguous physical blocks in a buffer, given a buffer descriptor.
NdisGetCacheFillSize 
Returns the size of the cache boundary to drivers setting up DMA alignment requirements during initialization.
NdisGetNextBuffer 
Returns the next buffer descriptor in a chain, given the current buffer descriptor.
NdisGetPhysicalAddressHigh 
Returns the high-order part of a given physical address.
NdisGetPhysicalAddressLow 
Returns the low-order part of a given physical address.
NdisImmediateReadPciSlotInformation
Returns a specified range of PCI configuration information to a caller-supplied buffer, given a handle to the wrapper configuration context and the slot number for the NIC on the I/O bus.
NdisImmediateReadPortUchar 
Reads a byte from a specified port on an I/O bus during driver initialization, given the handle to the wrapper configuration context. If necessary, this function maps the specified bus-relative port address in order to read the data.
NdisImmediateReadPortUlong 
Reads a ULONG from a specified port on an I/O bus during driver initialization, given a handle to the wrapper configuration context. If necessary, this function maps the specified bus-relative port address in order to read the data.
NdisImmediateReadPortUshort
Reads a USHORT from a specified port on an I/O bus during driver initialization, given a handle to the wrapper configuration context. If necessary, this function maps the specified bus-relative port address in order to read the data.
NdisImmediateReadSharedMemory
Reads a specified number of bytes into a caller-supplied buffer from shared device RAM, given the base physical address for the shared memory and a handle to the wrapper configuration context. If necessary, this function maps the specified bus-relative memory range in order to read the data.
NdisImmediateWritePciSlotInformation
Writes data from a caller-supplied buffer to a specified range of the PCI configuration space, given a handle to the wrapper configuration context and the slot number for the NIC on the I/O bus.
NdisImmediateWritePortUchar
Writes a byte to a specified port on an I/O bus during driver initialization, given the handle to the wrapper configuration context. If necessary, this function maps the specified bus-relative port address in order to write the data.
NdisImmediateWritePortUlong
Writes a ULONG to a specified port on an I/O bus during driver initialization, given the handle to the wrapper configuration context. If necessary, this function maps the specified bus-relative port address in order to write the data.
NdisImmediateWritePortUshort
Writes a USHORT to a specified port on an I/O bus during driver initialization, given the handle to the wrapper configuration context. If necessary, this function maps the specified bus-relative port address in order to write the data.
NdisImmediateWriteSharedMemory
Writes a specified number of bytes from a caller-supplied buffer to shared device RAM, given the base physical address for the shared memory and a handle to the wrapper configuration context. If necessary, this function maps the specified bus-relative memory range in order to write the data.
NdisIndicateReceive 
Notifies NDIS that a packet is being received on a particular NIC, identified by the adapter handle, and that the packet or some initial lookahead portion of the packet, along with the packet header, is available to be forwarded to the appropriate bound protocol driver(s).
NdisIndicateReceiveComplete
Notifies NDIS that a receive packet, identified in a preceding call to NdisIndicateReceive, has been fully transferred through a particular NIC, identified by the given adapter handle, so that NDIS can notify the appropriate bound protocol driver(s).
NdisIndicateStatus 
Notifies NDIS of a change in the runtime status of the NIC that might be corrected with a reset operation or possibly even require the NIC to be taken out of service, depending on the given NDIS_STATUS_XXX and additional driver-supplied information.
NdisIndicateStatusComplete 
Notifies NDIS that the driver, which has previously called NdisIndicateStatus one or more times to indicate hardware anomalies or runtime state changes in the NIC, is ready to resume normal device I/O operations.
NDIS_INIT_FUNCTION 
Marks a driver function as initialization-only driver code to be discarded after the function has executed.
NdisInitializeInterrupt 
Sets up a mapping between the driver’s ISR and DPC functions, and the bus-relative vector (or level), mode, and sharing mode at which its NIC interrupts, given a pointer to caller-allocated storage for interrupt state (to be used by the NDIS library), a pointer to a variable in which status is returned, and a handle for the NIC. The interrupt handle initialized in this call is a required parameter to NdisSynchronizeWithInterrupt.
NdisInitializeListHead 
Sets up a queue header for a driver’s internal queue, given a pointer to driver-supplied resident storage for the queue header and queue. Then, entries (usually packets) can be added to and removed from the doubly-linked queue with the NdisInterlocked..List functions.
NdisInitializeString 
Allocates a buffer for and initializes a counted string in the system-default character set, given a source string and a NULL pointer.
NdisInitializeTimer 
Sets up a caller-supplied time-out DPC function to be associated with a timer object during driver initialization; returns a handle at the caller-supplied resident storage for the timer object (to be used by the NDIS library). This handle is a required parameter to all other Ndis..Timer functions.
NdisInitializeWrapper 
Notifies NDIS that a new NIC driver is initializing and returns an NdisWrapperHandle to be passed in subsequent calls to NdisXxx initialization and configuration functions.
NdisInterlockedAddUlong 
Adds an unsigned long value to a given unsigned integer as an atomic operation, using a caller-supplied and initialized spin lock.
NdisInterlockedInsertHeadList
Inserts an entry, usually a packet, at the head of a doubly linked list using a caller-supplied and initialized spin lock so that access to queued entries is synchronized in a multiprocessor-safe way among nonISR driver functions.
NdisInterlockedInsertTailList
Inserts an entry, usually a packet, at the end of a doubly linked list using a caller-supplied and initialized spin lock so that access to queued entries is synchronized in a multiprocessor-safe way among nonISR driver functions.
NdisInterlockedRemoveHeadList
Removes an entry, usually a packet, from the head of a doubly linked list using a caller-supplied and initialized spin lock so that access to queued entries is synchronized in a multiprocessor-safe way among nonISR driver functions.
NdisMapFile 
Maps the contents of an already open file to a caller-accessible buffer if the file currently is unmapped, given a handle returned by NdisOpenFile.
NdisMapIoSpace 
Maps a given bus-relative physical range of device memory or a driver-allocated, long-term internal buffer onto system-space nonpaged pool and returns the mapped virtual base address.
NdisMoveFromMappedMemory 
Copies data from device memory or a driver-allocated buffer that was mapped with NdisMapIoSpace to a system-space buffer.
NdisMoveMappedMemory 
Copies data from one location to another in a memory block that was mapped with NdisMapIoSpace.
NdisMoveMemory 
Copies a specified number of bytes from one caller-supplied location to another.
NdisMoveToMappedMemory 
Copies data from a system-space buffer to device memory or a driver-allocated buffer that was mapped with NdisMapIoSpace.
NdisOpenConfiguration 
Returns a handle for a driver’s HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services
\
DriverName\Parameters registry key. This handle is a required parameter to all other NdisXxx configuration functions.
NdisOpenFile 
Returns a handle for an opened file, given its name and the highest acceptable address at which to allocate memory for the file data. The returned handle is a required parameter to NdisMapFile, which gives the caller exclusive access to the file data until it calls NdisUnmapFile.
NDIS_PAGABLE_FUNCTION 
Marks a driver function as pageable driver code.
NdisPciAssignResources 
Claims resources in the registry for the caller and returns the hardware configuration information, given a handle passed in to the driver’s DriverEntry function and the slot number of its NIC on the PCI bus.
NDIS_PHYSICAL_ADDRESS_CONST
Initializes a constant of type NDIS_PHYSICAL_ADDRESS.
NdisQueryBuffer 
Retrieves the size of the range, and optionally its base virtual address, specified in a given buffer descriptor.
NdisQueryBufferOffset 
Retrieves the base virtual address of the range specified in a given buffer descriptor.
NdisQueryPacket 
Returns at least a count of buffers chained to a given packet and can also return the total number of bytes in all buffers chained to the packet, the total number of physically discontiguous pieces for all chained buffers, and a pointer to the initial buffer in the chain.
NdisQuerySendFlags 
Retrieves the flags set by the protocol from a given send packet.
NdisRawReadPortBufferUchar 
Reads a specified number of bytes into a caller-supplied buffer, given an I/O port mapped in the initialization-time call to NdisRegisterAdapter.
NdisRawReadPortBufferUlong 
Reads a specified number of ULONGs into a caller-supplied buffer, given an I/O port mapped in the initialization-time call to NdisRegisterAdapter.
NdisRawReadPortBufferUshort
Reads a specified number of USHORTs into a caller-supplied buffer, given an I/O port mapped in the initialization-time call to NdisRegisterAdapter.
NdisRawReadPortUchar 
Reads a byte from a given I/O port mapped in the initialization-time call to NdisRegisterAdapter.
NdisRawReadPortUlong 
Reads a ULONG from a given I/O port mapped in the initialization-time call to NdisRegisterAdapter.
NdisRawReadPortUshort 
Reads a USHORT from a given I/O port mapped in the initialization-time call to NdisRegisterAdapter.
NdisRawWritePortBufferUchar
Writes a specified number of bytes from a caller-supplied buffer to a given I/O port mapped in the initialization-time call to NdisRegisterAdapter.
NdisRawWritePortBufferUlong
Writes a specified number of ULONGs from a caller-supplied buffer to a given I/O port mapped in the initialization-time call to NdisRegisterAdapter.
NdisRawWritePortBufferUshort
Writes a specified number of USHORTs from a caller-supplied buffer to a given I/O port mapped in the initialization-time call to NdisRegisterAdapter.
NdisRawWritePortUchar 
Writes a byte to a given I/O port mapped in the initialization-time call to NdisRegisterAdapter.
NdisRawWritePortUlong 
Writes a ULONG to a given I/O port mapped in the initialization-time call to NdisRegisterAdapter.
NdisRawWritePortUshort 
Writes a USHORT to a given I/O port mapped in the initialization-time call to NdisRegisterAdapter.
NdisReadBindingInformation 
Returns a pointer to the name of the NIC under a NIC driver’s Parameters key in the registry, given a handle obtained from NdisOpenConfiguration. Layered drivers can call this function, passing the returned string to NdisOpenAdapter.
NdisReadConfiguration 
Reads the value of a named entry of the specified type, given the registry handle for the caller’s Parameters key returned by NdisOpenConfiguration.
NdisReadDmaCounter 
Returns the number of bytes remaining to be transferred during a slave DMA operation if the NIC uses the host DMA controller’s autoinitialize mode, given a handle returned by NdisAllocateDmaChannel.
NdisReadEisaSlotInformation
Returns EISA configuration information to a caller-supplied buffer during initialization, given a handle to the wrapper configuration context and the slot number for the NIC on the I/O bus.
NdisReadEisaSlotInformationEx
Returns EISA configuration information, including the number of functions, to a caller-supplied buffer during initialization, given a handle to the wrapper configuration context and the slot number for the NIC on the I/O bus.
NdisReadMcaPosInformation 
Returns POS configuration information to a caller-supplied buffer during initialization, given a handle to the wrapper configuration context and the channel number for the NIC on the I/O bus.
NdisReadNetworkAddress 
Returns the size and value, in binary, of the NetworkAddress entry, specifying the setup-configured network address of the NIC, from the caller’s Parameters key in the registry, given the handle obtained from NdisOpenConfiguration.
NdisReadPciSlotInformation 
Returns a specified range of PCI configuration information to a caller-supplied buffer during initialization, given a handle to the adapter and the slot number for the NIC on the I/O bus.
NdisReadPortBufferUchar 
Reads a specified number of bytes from a given I/O port into a caller-supplied buffer, after mapping the port address if necessary.
NdisReadPortBufferUlong 
Reads a specified number of ULONGs from a given I/O port into a caller-supplied buffer, after mapping the port address if necessary.
NdisReadPortBufferUshort 
Reads a specified number of USHORTs from a given I/O port into a caller-supplied buffer, after mapping the port address if necessary.
NdisReadPortUchar 
Reads a byte from a given I/O port, after mapping the port address if necessary.
NdisReadPortUlong 
Reads a ULONG from a given I/O port, after mapping the port address if necessary.
NdisReadPortUshort 
Reads a USHORT from a given I/O port, after mapping the port address if necessary.
NdisReadRegisterUchar 
Reads a byte from a given register address.
NdisReadRegisterUlong 
Reads a ULONG from a given register address.
NdisReadRegisterUshort 
Reads a USHORT from a given register address.
NdisRecalculatePacketCounts
Resets the valid count for a given packet.
NdisRegisterAdapter 
Registers a NIC, recognized by the driver during initialization with calls to the NdisXxx configuration functions, with the NDIS library. This function also allocates system resources and claims hardware resources in the registry for the NIC, given the handle returned by NdisRegisterMac, a pointer to caller-allocated resident storage in which the driver maintains runtime context for the NIC, the handle returned by NdisInitializeWrapper, a pointer to a caller-supplied string naming the NIC, and a pointer to a caller-initialized NDIS_ADAPTER_INFORMATION structure specifying hardware configuration requirements of the NIC. NdisRegisterAdapter returns the status of the registration attempt and, if the call is successful, an adapter handle for the NIC, which can be used by protocols in open-adapter requests.
NdisRegisterAdapterShutdownHandler
Registers a driver-supplied MacShutdown function to be called with a pointer to a caller-supplied context buffer when the system is about to be shut down, given a handle passed in to the driver’s DriverEntry function. Such a MacShutdown function restores the NIC to a known state.
NdisRegisterMac 
Registers a driver’s upper-edge entry points and name with the NDIS library, given a handle obtained from NdisInitializeWrapper and a pointer to the NDIS_MAC_CHARACTERISTICS structure set up by the caller. NdisRegisterMac returns the status of the registration attempt and, if the call is successful, a handle to the driver.
NdisReinitializePacket 
Removes any chained buffers from a given packet and reinitializes it for reuse.
NdisReleaseAdapterResources
Releases claimed hardware resources for a NIC in the registry when the driver is unloading.
NdisReleaseSpinLock 
Releases a spin lock that was acquired in a preceding call to NdisAcquireSpinLock.
NdisRemoveInterrupt 
Releases the mapping created with an initialization-time call to NdisInitializeInterrupt. Drivers call NdisRemoveInterrupt when they are unloading.
NdisSetPhysicalAddressHigh 
Changes the high-order part of a given physical address to a given value.
NdisSetPhysicalAddressLow 
Changes the low-order part of a given physical address to a given value.
NdisSetTimer 
Sets a caller-initialized timer object to a specified interval and queues the driver’s timer-DPC function to run when the given interval expires.
NdisSetupDmaTransfer 
Sets up the host DMA controller to transfer a specified range of data from a given buffer, given the handle returned by a preceding call to NdisAllocateDmaChannel and the transfer direction.
NdisStallExecution 
Stalls the caller on the current processor for a given interval.
NdisStartBufferPhysicalMapping
Sets up a busmaster NIC for a DMA transfer operation, given a handle for the NIC, the direction of the transfer, a pointer to the buffer descriptor, an index to the initial map register, a pointer to caller-allocated memory for a variable-size array of NDIS_PHYSICAL_UNIT structures, and the number of elements in the array.
NdisSynchronizeWithInterrupt
Synchronizes the execution of a caller-supplied function with that of the ISR associated with the given initialized interrupt handle. When it runs, the supplied function can access data shared with the ISR in a multiprocessor-safe way.
NdisTerminateWrapper 
Releases system resources allocated when the driver called NdisInitializeWrapper. Drivers call NdisTerminateWrapper during initialization if they cannot find and successfully initialize at least one NIC or when they are unloading.
NdisUnchainBufferAtBack 
Removes a given buffer descriptor at the end of the chain of buffer descriptors for a given packet and returns a pointer to the buffer descriptor.
NdisUnchainBufferAtFront 
Removes a given buffer descriptor at the start of the chain of buffer descriptors for a given packet and returns a pointer to the buffer descriptor.
NdisUnmapFile 
Releases the file mapping set up by the preceding call to NdisMapFile.
NdisUnmapIoSpace 
Releases a mapping obtained with NdisMapIoSpace, usually when a driver is unloading.
NdisUpdateSharedMemory 
Ensures that data read from shared memory is current when the NIC has just written data to shared memory on platforms that require explicit coherency support from the system.
NdisWriteConfiguration 
Writes a caller-supplied value entry in the registry, given the handle for the caller’s Parameters key returned by NdisOpenConfiguration 
NdisWriteErrorLogEntry 
Allocates an error-log record, fills it in, and writes it to the I/O error log, given a handle for the NIC, an NDIS_XXX error code, a count of caller-supplied error values, and a corresponding number of ULONGs specifying additional information about the I/O error.
NdisWritePciSlotInformation
Writes data from a caller-supplied buffer to a specified range of the PCI configuration space, given a handle to the adapter and the slot number for the NIC on the I/O bus.
NdisWritePortBufferUchar 
Writes a specified number of bytes from a caller-supplied buffer to a given I/O port, after mapping the port address if necessary.
NdisWritePortBufferUlong 
Writes a specified number of ULONGs from a caller-supplied buffer to a given I/O port, after mapping the port address if necessary.
NdisWritePortBufferUshort 
Writes a specified number of USHORTs from a caller-supplied buffer to a given I/O port, after mapping the port address if necessary.
NdisWritePortUchar 
Writes a given byte to a given I/O port, mapping the port address if necessary.
NdisWritePortUlong 
Writes a given ULONG to a given I/O port, after mapping the port address if necessary.
NdisWritePortUshort 
Writes a given USHORT to a given I/O port, after mapping the port address if necessary.
NdisWriteRegisterUchar 
Writes a given byte to a given register address.
NdisWriteRegisterUlong 
Writes a given ULONG to a given register address.
NdisWriteRegisterUshort 
Writes a given USHORT to a given register address.
NdisZeroMappedMemory 
Fills a block of memory that was mapped in a preceding call to NdisMapIoSpace with zeros, given a pointer to the block and the length in bytes to be filled.
NdisZeroMemory 
Fills a block of memory with zeros, given a pointer to the block and the length in bytes to be filled.
TrChangeFunctionalAddress 
Checks the current functional address array for all currently bound protocols and, if a change is necessary, calls the driver’s MacChangeTrAddress function, which was set up with TrCreateFilter, given a pointer to the filter database, the binding handle for the protocol that initiated the set/close request, the packet causing the change of functional addresses, whether the change is caused by a set request (rather than a close), and an address specification. This function restores the original functional address array if the caller-supplied function returns anything except NDIS_STATUS_SUCCESS or NDIS_STATUS_PENDING.
TrChangeGroupAddress 
Checks the current group address array for all currently bound protocols and, if a change is necessary, calls the driver’s MacChangeGroup function, which was set up with TrCreateFilter, given a pointer to the filter database, the binding handle for the protocol that initiated the set/close request, the packet causing the change of group addresses, whether the change is caused by a set request (rather than a close), and an address specification. This function restores the original group address array if the caller-supplied function returns anything except NDIS_STATUS_SUCCESS or NDIS_STATUS_PENDING.
TR_COMPARE_NETWORK_ADDRESSES
Sets a caller-supplied variable to a value indicating whether a given Token Ring address is greater than, less than, or equal to another given Token Ring address.
TR_COPY_NETWORK_ADDRESS 
Copies a given Token Ring address to a given location.
TrCreateFilter 
Creates and initializes a Token Ring filter database, given the address of the NIC, the number of multicast addresses it can support, four driver-supplied functions to be called when certain runtime changes occur, a caller-initialized spin lock used to synchronize access to the filter database, and a pointer to a variable that is set to the address of the filter database on return from this function.
TrDeleteFilter 
Releases the resources used for a Token Ring filter database when there are no remaining active filters.
TrDeleteFilterOpenAdapter 
Removes a binding that was set up with TrNoteFilterOpenAdapter from the filter database when the NIC is closed by the protocol, calling driver-supplied functions as necessary to modify the database, given the pointer to the Token Ring filter database, the binding and context handles set up when the NIC was opened by the protocol, and a pointer to the filter handle returned by TrNoteFilterOpenAdapter.
TrFilterAdjust 
Calls the driver’s MacChangeFilter function, which was set up with TrCreateFilter, when a particular filter class changes from being used to not used or vice versa, given a pointer to the filter database, the binding handle, the packet causing the change of class usage, whether the change is caused by a set request (rather than a close), and the classes to be added or deleted. This function restores the original classes if the caller-supplied function returns anything except NDIS_STATUS_SUCCESS or NDIS_STATUS_PENDING.
TrFilterIndicateReceive 
Indicates the arrival of a Token Ring receive packet, passing in a pointer to the Token Ring filter database, a pointer to caller-supplied context that the protocol must pass back if it later requests a transfer of the packet data, the packet header and its size in bytes, a pointer to a lookahead buffer containing some packet data and its size in bytes, and the total size in bytes of the packet. This function forwards the receive information to the appropriate bound protocol(s).
TrFilterIndicateReceiveComplete
Indicates that a receive operation is done, that is, that TrFilterIndicateReceive has returned to the caller. TrFilterIndicateReceiveComplete, given a pointer to the TokenRing filter database, notifies the appropriate bound protocol(s).
TR_IS_BROADCAST 
Sets a caller-supplied variable to a Boolean value indicating whether a given Token Ring address is a broadcast address.
TR_IS_FUNCTIONAL 
Sets a caller-supplied variable to a Boolean value indicating whether a given Token Ring address is a functional address.
TR_IS_GROUP 
Sets a caller-supplied variable to a Boolean value indicating whether a given Token Ring address is a group address.
TR_IS_NOT_DIRECTED 
Sets a caller-supplied variable to a Boolean value indicating whether a given Token Ring address is neither a functional nor a group address.
TR_IS_SOURCE_ROUTING 
Sets a caller-supplied variable to a Boolean value indicating whether a given Token Ring address is a source-routing address.
TrNoteFilterOpenAdapter 
Adds a new binding to the existing filter database, given the pointer to a Token Ring filter database already initialized with TrCreateFilter, the binding and context handles set up when the NIC was opened by the protocol, and a pointer to caller-supplied storage for the filter handle that this function returns if the call succeeds.
TR_QUERY_FILTER_ADDRESSES 
Returns a value indicating the currently enabled functional address, given a pointer to the filter database returned by TrCreateFilter.
TR_QUERY_FILTER_BINDING_ADDRESS
Returns a value indicating the functional address for a particular binding, given a pointer to the filter database returned by TrCreateFilter and the binding handle.
TR_QUERY_FILTER_BINDING_GROUP
Returns TRUE if a particular binding is using the currently enabled group address, given a pointer to the filter database returned by TrCreateFilter and the binding handle.
TR_QUERY_FILTER_CLASSES 
Returns a value indicating the currently enabled filter classes, given a pointer to the filter database returned by TrCreateFilter.
TR_QUERY_FILTER_GROUP 
Returns a value indicating the currently enabled group address, given a pointer to the filter database returned by TrCreateFilter.
TR_QUERY_PACKET_FILTER 
Returns a value indicating the currently enabled filter classes for a particular binding, given a pointer to the filter database returned by TrCreateFilter and the binding handle.
TrShouldAddressLoopBack 
Returns FALSE if a packet bound for a given Token Ring address cannot possibly loop back.