Training
Module
Manage drivers and device peripherals - Training
This module introduces device drivers. Student will learn how drivers work and the tools used to manage common peripheral devices such as printers.
This browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
Miniport drivers typically call NdisAllocateNetBufferListPool from MiniportInitializeEx to create a pool of NET_BUFFER_LIST structures. Miniport drivers use these structures to indicate received data.
Typically, a miniport driver that allocates a NET_BUFFER_LIST structure will allocate and queue one NET_BUFFER structure on that NET_BUFFER_LIST structure. It is more efficient to preallocate NET_BUFFER structures when you allocate a pool of NET_BUFFER_LIST structures than to allocate NET_BUFFER_LIST structures and NET_BUFFER structures separately.
Miniport drivers can call NdisAllocateNetBufferListPool and set the AllocateNetBuffer parameter to TRUE to indicate that NET_BUFFER structures are preallocated. In this case, a NET_BUFFER structure is preallocated with each NET_BUFFER_LIST structure that the driver allocates from the pool. Such drivers must call NdisAllocateNetBufferAndNetBufferList to allocate structures from this pool.
Typically, a miniport driver calls NdisAllocateNetBufferAndNetBufferList from MiniportInitializeEx to allocate as many buffers as it will require for subsequent receive operations. In this case, the driver manages an internal list of free buffers.
The MiniportReturnNetBufferLists function can prepare a returned NET_BUFFER_LIST structure for reuse in a subsequent receive indication. Although MiniportReturnNetBufferLists could return the NET_BUFFER_LIST structures to a pool (for example, it could call NdisFreeNetBufferList), it can be more efficient to reuse the structures without returning them to the pool.
A miniport driver should free all the NET_BUFFER_LIST structures and associated data when NDIS halts the adapter. A driver can call NdisFreeNetBufferList to free the structures and the NdisFreeNetBufferListPool function to free the NET_BUFFER_LIST pool.
Training
Module
Manage drivers and device peripherals - Training
This module introduces device drivers. Student will learn how drivers work and the tools used to manage common peripheral devices such as printers.