指示已从微型端口驱动程序收到数据

下图演示了微型端口驱动程序接收指示。

说明微型端口驱动程序接收指示的示意图。

微型端口驱动程序调用 NdisMIndicateReceiveNetBufferLists 函数来指示从网络接收数据。 NdisMIndicateReceiveNetBufferLists 函数将指示的 NET_BUFFER_LIST 结构列表沿堆栈向上传递到上层驱动程序。

如果微型端口驱动程序在 NdisMIndicateReceiveNetBufferListsReceiveFlags 参数中设置 NDIS_RECEIVE_FLAGS_RESOURCES 标志,那么这表明微型端口驱动程序必须立即重新获得 NET_BUFFER_LIST 结构的所有权。 在这种情况下,NDIS 不调用微型端口驱动程序的 MiniportReturnNetBufferLists 函数来返回 NET_BUFFER_LIST 结构。 微型端口驱动程序在 NdisMIndicateReceiveNetBufferLists 返回后立即重新获得所有权。

如果微型端口驱动程序未在 NdisMIndicateReceiveNetBufferListsReceiveFlags 参数中设置 NDIS_RECEIVE_FLAGS_RESOURCES 标志,则 NDIS 会将指示的 NET_BUFFER_LIST 结构返回给微型端口驱动程序的 MiniportReturnNetBufferLists 函数。 在这种情况下,微型端口驱动程序将放弃指示的结构的所有权,直到 NDIS 将这些结构返回给 MiniportReturnNetBufferLists