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.

Nota Debe declarar la función mediante el tipo NDIS_PD_SET_RECEIVE_FILTER . Para obtener más información, consulte la sección Ejemplos siguientes.

 

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