![]() |
---|
This is retired content. This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This content may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist. |
This function initializes a doubly linked, driver-maintained interlocked queue or doubly linked list.
VOID NdisInitializeListHead( IN PLIST_ENTRY ListHead );
Parameters
Remarks
This function can be called from a MiniportInitializefunction or from a protocol driver's DriverEntryfunction if the driver queues requests internally. However, miniport drivers seldom set up internal queues because the NDIS library serializes requests and packets sent to miniports.
Any NDIS driver that maintains an internal queue is responsible for synchronizing driver functions' accesses to queued entries. The NdisInterlocked XXXListfunctions ensure that only one driver function can access queued entries at any moment, even if the driver is running on a multiprocessor machine, because the queue is protected by a caller-supplied spin lock.
For an interlocked queue, the driver must also provide nonpaged storage for a spin lock. It must initialize the spin lock with NdisAllocateSpinLockbefore passing a pointer to that spin lock to any of the NdisInterlocked XXXListfunctions.
A driver that calls this function usually runs at IRQL PASSIVE_LEVEL because this function is commonly called at initialization.
Requirements
Runs on | Versions | Defined in | Include | Link to |
---|---|---|---|---|
Windows CE OS | 2.0 and later | Ndis.h |
Note This API is part of the complete Windows CE OS package as provided by Microsoft. The functionality of a particular platform is determined by the original equipment manufacturer (OEM) and some devices may not support this API.
See Also
NdisAllocateSpinLock, NdisInterlockedInsertHeadList, NdisInterlockedInsertTailList, NdisInterlockedRemoveHeadList
Last updated on Tuesday, July 13, 2004