NDIS_PD_SET_RECEIVE_FILTER función de devolución de llamada (ndis.h)
La plataforma PacketDirect (PD) llama a la función NdisPDSetReceiveFilter del controlador de miniporte compatible con PD para dirigir flujos específicos de paquetes a una cola de recepción de PD específica.
Sintaxis
NDIS_PD_SET_RECEIVE_FILTER NdisPdSetReceiveFilter;
NTSTATUS() NdisPdSetReceiveFilter(
[in] NDIS_PD_PROVIDER_HANDLE ProviderHandle,
[in] const NDIS_PD_FILTER_PARAMETERS *FilterParameters,
[out] NDIS_PD_FILTER_HANDLE *FilterHandle
)
{...}
Parámetros
[in] ProviderHandle
Identificador de proveedor que identifica el objeto de proveedor del controlador de miniporte compatible con PD.
[in] FilterParameters
Parámetros que identifican cualquier información necesaria para el filtro. Para obtener más información, consulte la estructura NDIS_PD_FILTER_PARAMETERS .
[out] FilterHandle
Identificador del filtro.
Valor devuelto
Esta función devuelve STATUS_SUCCESS cuando se completa correctamente; de lo contrario, devuelve el código de error adecuado.
Comentarios
Los filtros pd se aplican antes de que se produzca la propagación, por lo que el paquete que coincide con un filtro PD se puede colocar en su cola de PD dedicada y el resto de los paquetes se pueden distribuir por RSS como de costumbre. El cliente pd es responsable de los filtros ambiguos no superpuestos de fontanería. Sin embargo, algunas proporciona pd pueden permitir filtros ambiguos superpuestos siempre que el cliente pd pueda pasar un valor de prioridad que indique qué filtro se debe aplicar primero. El proveedor de PD puede producir un error en las solicitudes de conjunto de filtros con STATUS_NOT_SUPPORTED si el cliente intenta establecer filtros con perfiles en conflicto o condiciones de coincidencia superpuestas. La estructura de NDIS_PD_CAPABILITIES no permite al proveedor anunciar todas las combinaciones válidas de perfiles que el cliente de PD puede usar simultáneamente, por lo que el cliente de PD detecta algunas de las funcionalidades en tiempo de ejecución cuando y si el proveedor de PD produce un error en la solicitud de conjunto de filtros con STATUS_NOT_SUPPORTED
Ejemplos
Para definir una función NdisPDSetReceiveFilter , primero debe proporcionar una declaración de función que identifique el tipo de función que va a definir. Windows proporciona un conjunto de tipos de función para controladores. Declarar una función mediante los tipos de función ayuda a Code Analysis for Drivers, Static Driver Verifier (SDV) y otras herramientas de comprobación a encontrar errores y es un requisito para escribir controladores para el sistema operativo Windows.Por ejemplo, para definir una función NdisPDSetReceiveFilter denominada "MyPDSetReceiveFilter", use el tipo NDIS_PD_SET_RECEIVE_FILTER como se muestra en este ejemplo de código:
NDIS_PD_SET_RECEIVE_FILTER MyPDSetReceiveFilter;
A continuación, implemente la función de la siguiente manera:
_Use_decl_annotations_
VOID
MyPDSetReceiveFilter(
NDIS_PD_PROVIDER_HANDLE ProviderHandle,
CONST NDIS_PD_FILTER_PARAMETERS* FilterParameters,
NDIS_PD_FILTER_HANDLE* FilterHandle
)
{...}
El tipo de función NDIS_PD_SET_RECEIVE_FILTER se define en el archivo de encabezado Ntddndis.h. Para identificar con más precisión los errores al ejecutar las herramientas de análisis de código, asegúrese de agregar la anotación Use_decl_annotations a la definición de función. La anotación Use_decl_annotations garantiza que se usen las anotaciones que se aplican al tipo de función NDIS_PD_SET_RECEIVE_FILTER en el archivo de encabezado. Para obtener más información sobre los requisitos de las declaraciones de función, vea Declarar funciones mediante tipos de roles de función para controladores NDIS.
Para obtener información sobre Use_decl_annotations, consulte Anotación del comportamiento de la función.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 10 |
Servidor mínimo compatible | Windows Server 2016 |
Plataforma de destino | Windows |
Encabezado | ndis.h |
IRQL | PASSIVE_LEVEL |
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de