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.
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 |
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour