Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
The NdisMCoIndicateReceiveNetBufferLists function indicates that the miniport driver received data from the network.
Syntax
void NdisMCoIndicateReceiveNetBufferLists(
[in] IN NDIS_HANDLE NdisVcHandle,
[in] IN PNET_BUFFER_LIST NetBufferLists,
[in] IN ULONG NumberOfNetBufferLists,
[in] IN ULONG CoReceiveFlags
);
Parameters
[in] NdisVcHandle
A handle that identifies a virtual connection (VC). The miniport driver obtained this handle as an input parameter to its MiniportCoCreateVc function, either when a client set up an outgoing call or when the call manager created a VC for a client-registered service access point (SAP) to indicate an incoming-call notification on.
[in] NetBufferLists
A linked list of NET_BUFFER_LIST structures that the miniport driver allocated.
[in] NumberOfNetBufferLists
The number of NET_BUFFER_LIST structures that are in the linked list of structures that NetBufferLists specifies.
[in] CoReceiveFlags
Flags that define attributes for the send operation. The flags can be combined with a bitwise OR operation. To clear all of the flags, set this parameter to zero. NdisMCoIndicateReceiveNetBufferLists supports the following flags:
NDIS_RECEIVE_FLAGS_DISPATCH_LEVEL
The current IRQL is DISPATCH_LEVEL. For more information about this flag, see Dispatch IRQL Tracking.
NDIS_RECEIVE_FLAGS_RESOURCES
The miniport driver reclaims ownership of the NET_BUFFER_LIST structures and any attached NET_BUFFER structures immediately after NdisMCoIndicateReceiveNetBufferLists returns.
Return value
None
Remarks
A miniport driver typically calls the NdisMCoIndicateReceiveNetBufferLists function from its MiniportInterruptDPC function. When a miniport driver calls NdisMCoIndicateReceiveNetBufferLists, it specifies a list of NET_BUFFER_LIST structures at the NetBufferLists parameter. NDIS then passes the NET_BUFFER_LIST structures to bound protocol drivers.
Miniport drivers must set the SourceHandle member of each NET_BUFFER_LIST structure to the same value as the NdisVcHandle parameter so that NDIS can return the NET_BUFFER_LIST structures to the correct miniport driver.
If a miniport driver calls NdisMCoIndicateReceiveNetBufferLists and clears the NDIS_RECEIVE_FLAGS_RESOURCES flag in the CoReceiveFlags parameter, NDIS returns the NET_BUFFER_LIST structures that NetBufferLists specifies to the miniport driver's MiniportReturnNetBufferLists function. In this case, the miniport driver must not reclaim the NET_BUFFER_LIST structures until NDIS returns the NET_BUFFER_LIST structures to the miniport driver's MiniportReturnNetBufferLists function.
If a miniport driver calls NdisMCoIndicateReceiveNetBufferLists and sets the NDIS_RECEIVE_FLAGS_RESOURCES flag in the CoReceiveFlags parameter, the miniport driver must regain ownership of the NET_BUFFER_LIST structures immediately. In this case, NDIS does not call the miniport driver's MiniportReturnNetBufferLists function to return the NET_BUFFER_LIST structures. Instead, NDIS returns the NET_BUFFER_LIST structures to the miniport driver when NdisMCoIndicateReceiveNetBufferLists returns. The miniport driver should reclaim the NET_BUFFER_LIST structures immediately after NdisMCoIndicateReceiveNetBufferLists returns. To reclaim the NET_BUFFER_LIST structures, a miniport driver can call its own MiniportReturnNetBufferLists function.
If a miniport driver sets the NDIS_RECEIVE_FLAGS_RESOURCES flag in the CoReceiveFlags parameter, the protocol drivers must copy the network data and release the NET_BUFFER_LIST structures to the miniport driver. You should design your miniport drivers with enough preallocated NET_BUFFER_LIST structures to avoid unnecessary copying.
The caller of NdisMCoIndicateReceiveNetBufferLists must properly initialize the NET_BUFFER_LIST structures, the attached NET_BUFFER structures, and any attached memory descriptor lists (MDLs).
Requirements
Requirement | Value |
---|---|
Minimum supported client | Supported in NDIS 6.0 and later. |
Target Platform | Desktop |
Header | ndis.h (include Ndis.h) |
Library | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
DDI compliance rules | Irql_MCO_Function(ndis) |