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.

Nota Si cada paquete de la lista vinculada de estructuras de NET_BUFFER_LIST usa el mismo puerto de origen, la extensión debe establecer la marca NDIS_RETURN_FLAGS_SWITCH_SINGLE_SOURCE en el parámetro ReturnFlags de FilterReturnNetBufferLists cuando se complete la solicitud de recepción. La extensión debe establecer esta marca en el parámetro ReturnFlags si llama a NdisFReturnNetBufferLists para devolver paquetes que no se originaron ni clonaron.
 

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)

Consulte también

FilterAttach

FilterReceiveNetBufferLists

FilterReturnNetBufferLists

NDIS_RECEIVE_QUEUE_PARAMETERS

NET_BUFFER

NET_BUFFER_LIST

NdisMAllocatePort

Recepción de datos en un controlador de filtro