Función NdisFIndicateReceiveNetBufferLists (ndis.h)
Un controlador de filtro llama a NdisFIndicateReceiveNetBufferLists para indicar que ha recibido datos de red. Para obtener más información, consulte Recepción de datos en un controlador de filtro.
Sintaxis
void NdisFIndicateReceiveNetBufferLists(
[in] NDIS_HANDLE NdisFilterHandle,
[in] PNET_BUFFER_LIST NetBufferLists,
[in] NDIS_PORT_NUMBER PortNumber,
[in] ULONG NumberOfNetBufferLists,
[in] ULONG ReceiveFlags
);
Parámetros
[in] NdisFilterHandle
Identificador NDIS que identifica este módulo de filtro. NDIS pasó el identificador al controlador de filtro en una llamada a la función FilterAttach .
[in] NetBufferLists
Lista vinculada de estructuras de NET_BUFFER_LIST . Cada estructura de NET_BUFFER_LIST contiene una estructura NET_BUFFER .
[in] PortNumber
Número de puerto que identifica un puerto de adaptador de minipuerto. Los números de puerto del adaptador de miniport se asignan mediante una llamada a la función NdisMAllocatePort . Un valor cero identifica el puerto predeterminado de un adaptador de minipuerto.
[in] NumberOfNetBufferLists
Número de estructuras de NET_BUFFER_LIST que se encuentran en la lista vinculada de estructuras en NetBufferLists .
[in] ReceiveFlags
Marcas que definen atributos para la indicación de recepción. Las marcas se pueden combinar con una operación OR. Para borrar todas las marcas, establezca este miembro en cero. Esta función admite las marcas siguientes:
NDIS_RECEIVE_FLAGS_DISPATCH_LEVEL
Especifica que el IRQL actual está DISPATCH_LEVEL. Para obtener más información sobre esta marca, vea Dispatch IRQL Tracking.
NDIS_RECEIVE_FLAGS_RESOURCES
Especifica que el controlador de filtro reclama la propiedad de las estructuras de NET_BUFFER_LIST y las estructuras de NET_BUFFER adjuntas inmediatamente después de la llamada a NdisFIndicateReceiveNetBufferLists devuelve.
NDIS_RECEIVE_FLAGS_SINGLE_ETHER_TYPE
Especifica que todas las estructuras de NET_BUFFER_LIST de la lista de NetBufferLists tienen el mismo tipo de protocolo (EtherType).
NDIS_RECEIVE_FLAGS_SINGLE_VLAN
Especifica que todas las estructuras de NET_BUFFER_LIST de la lista de NetBufferLists pertenecen a la misma VLAN.
NDIS_RECEIVE_FLAGS_PERFECT_FILTERED
Especifica que todas las estructuras de NET_BUFFER_LIST de la lista de NetBufferLists incluyen solo los datos que coinciden con el filtro de paquetes y la lista de direcciones de multidifusión que se asignan al adaptador de miniport.
NDIS_RECEIVE_FLAGS_SINGLE_QUEUE
Especifica que todas las estructuras de NET_BUFFER_LIST de la lista de NetBufferLists pertenecen a la misma cola de máquinas virtuales. Un controlador de minipuerto debe establecer esta marca para todas las indicaciones de recepción en una cola si la marca de NDIS_RECEIVE_QUEUE_PARAMETERS_PER_QUEUE_RECEIVE_INDICATION se estableció en el miembro Flags del NDIS_RECEIVE_QUEUE_PARAMETERS estructura cuando se asignó esa cola.
NDIS_RECEIVE_FLAGS_SHARED_MEMORY_INFO_VALID
Especifica que todas las estructuras de NET_BUFFER_LIST de la lista de NetBufferLists contienen información de memoria compartida válida. Cuando esta marca se establece en un NET_BUFFER_LIST recibido, NDIS trata la información de memoria compartida como válida. Cuando no se establece esta marca, los controladores y NDIS omiten la información de memoria compartida. Por ejemplo, los controladores intermedios que modifican los datos de paquetes pueden usar esta marca para determinar si se deben copiar los datos. Los controladores de minipuerto pueden usar la marca para determinar cómo liberar la memoria asociada a una cola de máquina virtual cuando se elimina una cola.
NDIS_RECEIVE_FLAGS_MORE_NBLS
Reservado.
NDIS_RECEIVE_FLAGS_SWITCH_SINGLE_SOURCE
Si se establece esta marca, todos los paquetes de una lista vinculada de NET_BUFFER_LIST estructuras originadas en el mismo puerto de origen de conmutador extensible de Hyper-V.
Para obtener más información, consulte Marcas de envío y recepción de conmutador extensible de Hyper-V.
NDIS_RECEIVE_FLAGS_SWITCH_DESTINATION_GROUP
Si se establece esta marca, todos los paquetes de una lista vinculada de estructuras de NET_BUFFER_LIST se reenviarán al mismo puerto de destino de conmutador extensible.
Para obtener más información, consulte Marcas de envío y recepción de conmutador extensible de Hyper-V.
Valor devuelto
None
Observaciones
Cuando un controlador de filtro llama a la función NdisFIndicateReceiveNetBufferLists , especifica una lista de estructuras de NET_BUFFER_LIST en el parámetro NetBufferLists . NDIS pasa las estructuras de NET_BUFFER_LIST a los controladores de exceso.
Los controladores de filtro pueden llamar a NdisFIndicateReceiveNetBufferLists para originar una indicación de recepción.
Los controladores de filtro también pueden filtrar las indicaciones de recepción que se originan en los controladores subyacentes. NDIS llama a Función FilterReceiveNetBufferLists para filtrar estas indicaciones de recepción.
Un controlador de filtro debe establecer el miembro SourceHandle de cada estructura de NET_BUFFER_LIST que se origina en el mismo valor que el parámetro NdisFilterHandle . El controlador de filtro no debe modificar el miembro SourceHandle en ninguna estructura de NET_BUFFER_LIST que no se originó.
El controlador de filtro debe inicializar correctamente las estructuras de NET_BUFFER_LIST , las estructuras de NET_BUFFER adjuntas y las MDL adjuntas.
Si un controlador de filtro llama a la función NdisFIndicateReceiveNetBufferLists y borra la marca de NDIS_RECEIVE_FLAG_RESOURCES en el parámetro ReceiveFlags , NDIS devuelve las estructuras de NET_BUFFER_LIST indicadas al controlador de filtro. Función FilterReturnNetBufferLists . En este caso, el controlador de filtro no debe reclamar las estructuras de NET_BUFFER_LIST hasta que NDIS devuelva las estructuras de NET_BUFFER_LIST a FilterReturnNetBufferLists.
Si un controlador de filtro llama a NdisFIndicateReceiveNetBufferLists y establece la marca NDIS_RECEIVE_FLAG_RESOURCES en el parámetro ReceiveFlags , esto indica que el controlador de filtro debe recuperar la propiedad de las estructuras de NET_BUFFER_LIST inmediatamente. En este caso, NDIS no llama a la función FilterReturnNetBufferLists del controlador de filtro para devolver las estructuras de NET_BUFFER_LIST . En su lugar, NDIS devuelve las estructuras de NET_BUFFER_LIST al controlador de filtro al volver desde NdisFIndicateReceiveNetBufferLists. El controlador de filtro debe reclamar las estructuras de NET_BUFFER_LIST inmediatamente después de que NdisFIndicateReceiveNetBufferLists devuelva. Para reclamar las estructuras de NET_BUFFER_LIST , un controlador de filtro puede llamar a su propia función FilterReturnNetBufferLists .
Al establecer la marca de NDIS_RECEIVE_FLAG_RESOURCES en el parámetro ReceiveFlags , los controladores que se sobreponen a copiar los datos de red y liberar las estructuras de NET_BUFFER_LIST en el controlador de filtro.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Compatible con NDIS 6.0 y versiones posteriores. |
Plataforma de destino | Escritorio |
Encabezado | ndis.h (incluya Ndis.h) |
Library | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
Reglas de cumplimiento de DDI | Irql_Filter_Driver_Function(ndis) |