NDIS_PD_SET_RECEIVE_FILTER fonction de rappel (ndis.h)

La plateforme PacketDirect (PD) appelle la fonction NdisPDSetReceiveFilter d’un pilote miniport compatible PD pour diriger des flux spécifiques de paquets vers une file d’attente de réception PD spécifique.

Note Vous devez déclarer la fonction à l’aide du type NDIS_PD_SET_RECEIVE_FILTER . Pour plus d’informations, consultez la section Exemples suivante.

 

Syntaxe

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
)
{...}

Paramètres

[in] ProviderHandle

Handle de fournisseur qui identifie l’objet fournisseur du pilote miniport compatible PD.

[in] FilterParameters

Paramètres qui identifient toutes les informations nécessaires pour le filtre. Pour plus d’informations, consultez la structure NDIS_PD_FILTER_PARAMETERS .

[out] FilterHandle

Handle du filtre.

Valeur retournée

Cette fonction retourne STATUS_SUCCESS lorsqu’elle se termine correctement, sinon elle retourne le code d’erreur approprié.

Remarques

Les filtres PD sont appliqués avant toute propagation, c’est pourquoi les paquets correspondant à un filtre PD peuvent être placés dans leur file d’attente PD dédiée, et le reste des paquets peut être réparti par RSS comme d’habitude. Le client PD est responsable de la plomberie des filtres ambigus qui ne se chevauchent pas. Toutefois, certains fournisseurs de pdd peuvent autoriser les filtres ambigus qui se chevauchent tant que le client PD peut passer une valeur de priorité qui indique quel filtre doit être appliqué en premier. Le fournisseur PD peut échouer dans les demandes de jeu de filtres avec STATUS_NOT_SUPPORTED si le client tente de définir des filtres avec des profils en conflit ou des conditions de correspondance qui se chevauchent. La structure NDIS_PD_CAPABILITIES ne permet pas au fournisseur de publier toutes les combinaisons valides de profils que le client PD peut utiliser simultanément. C’est pourquoi certaines des fonctionnalités sont découvertes par le client PD au moment de l’exécution lorsque et si le fournisseur PD échoue, la demande de jeu de filtres avec STATUS_NOT_SUPPORTED

Exemples

Pour définir une fonction NdisPDSetReceiveFilter , vous devez d’abord fournir une déclaration de fonction qui identifie le type de fonction que vous définissez. Windows fournit un ensemble de types de fonctions pour les pilotes. La déclaration d’une fonction à l’aide des types de fonction permet à l’analyse du code pour les pilotes, le vérificateur de pilotes statique (SDV) et d’autres outils de vérification de trouver les erreurs, et il s’agit d’une exigence pour l’écriture de pilotes pour le système d’exploitation Windows.

Par exemple, pour définir une fonction NdisPDSetReceiveFilter nommée « MyPDSetReceiveFilter », utilisez le type NDIS_PD_SET_RECEIVE_FILTER comme indiqué dans cet exemple de code :

NDIS_PD_SET_RECEIVE_FILTER MyPDSetReceiveFilter;

Ensuite, implémentez votre fonction comme suit :

_Use_decl_annotations_
VOID
 MyPDSetReceiveFilter(
    NDIS_PD_PROVIDER_HANDLE  ProviderHandle,
    CONST NDIS_PD_FILTER_PARAMETERS*  FilterParameters,
    NDIS_PD_FILTER_HANDLE*  FilterHandle
    )
  {...}

Le type de fonction NDIS_PD_SET_RECEIVE_FILTER est défini dans le fichier d’en-tête Ntddndis.h. Pour identifier plus précisément les erreurs lors de l’exécution des outils d’analyse du code, veillez à ajouter l’annotation Use_decl_annotations à votre définition de fonction. L’annotation Use_decl_annotations garantit que les annotations appliquées au type de fonction NDIS_PD_SET_RECEIVE_FILTER dans le fichier d’en-tête sont utilisées. Pour plus d’informations sur la configuration requise pour les déclarations de fonction, consultez Déclaration de fonctions à l’aide de types de rôles de fonction pour les pilotes NDIS.

Pour plus d’informations sur Use_decl_annotations, consultez Annotating Function Behavior.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 10
Serveur minimal pris en charge Windows Server 2016
Plateforme cible Windows
En-tête ndis.h
IRQL PASSIVE_LEVEL