Compartir a través de


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 miniporte. Los números de puerto del adaptador de miniport se asignan llamando a la función NdisMAllocatePort. Un valor cero identifica el puerto predeterminado de un adaptador de miniport.

[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 NET_BUFFER_LIST de la lista de NetBufferLists tengan el mismo tipo de protocolo (EtherType).

NDIS_RECEIVE_FLAGS_SINGLE_VLAN

Especifica que todas las estructuras 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 incluyan solo los datos que coincidan 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 miniport 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 Flags miembro 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_LISTrecibido, 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 miniporte 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 Hyper-V.

Para obtener más información, vea Hyper-V extensible Switch Send and Receive Flags.

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 de NDIS_RETURN_FLAGS_SWITCH_SINGLE_SOURCE en el parámetro returnFlags de FilterReturnNetBufferLists cuando se completa 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 NET_BUFFER_LIST estructuras se reenviarán al mismo puerto de destino extensible del conmutador.

Para obtener más información, vea Hyper-V extensible Switch Send and Receive Flags.

Valor devuelto

Ninguno

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 dichas 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 NDIS_RECEIVE_FLAG_RESOURCES en el parámetro ReceiveFlags, NDIS devuelve las estructuras 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 filter driver's FilterReturnNetBufferLists para devolver las estructuras de NET_BUFFER_LIST. En su lugar, NDIS devuelve las estructuras de NET_BUFFER_LIST al controlador de filtro tras la devolución de NdisFIndicateReceiveNetBufferLists. El controlador de filtro debe reclamar las estructuras de NET_BUFFER_LIST inmediatamente después de NdisFIndicateReceiveNetBufferLists devuelve. Para reclamar las estructuras de NET_BUFFER_LIST, un controlador de filtro puede llamar a su propia función de FilterReturnNetBufferLists.

Al establecer la marca de NDIS_RECEIVE_FLAG_RESOURCES en el parámetro ReceiveFlags, se fuerza a los controladores que se superponen para copiar los datos de red y liberar las estructuras de NET_BUFFER_LIST en el controlador de filtro.

Requisitos

Requisito Valor
cliente mínimo admitido Se admite en NDIS 6.0 y versiones posteriores.
de la plataforma de destino de Escritorio
encabezado de ndis.h (incluya Ndis.h)
biblioteca de 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

recibir datos en un controlador de filtro