Partager via


API PAM

L’API WINDOWS Filtering Platform (PAM) est divisée en composants suivants.

Composant Description Fichiers d’en-tête
API de légende (FWPS)${REMOVE}$
types de données utilisés par les légendes.Remarque Ces types de données sont documentés dans le Kit de développement de pilotes Microsoft Windows (DDK).
fwpstypes.h
fwpstypes.idl
Functions et types énumérés utilisés pour implémenter des légendes.Remarque Ces fonctions et types énumérés sont documentés dans le DDK.
fwpsu.h
fwpsk.h
API IKE/AuthIP (IKEEXT)${REMOVE}$
types énumérés et structures utilisées pour gérer les associations de stratégie et de sécurité IKE et AuthIP (MM).
iketypes.h
iketypes.idl
Functions utilisé pour gérer les associations de stratégie et de sécurité MM IKE et AuthIP.
fwpmu.h
fwpmk.h
API IPsec (IPSEC)${REMOVE}$
les types énumérés et les structures utilisées pour gérer les stratégies IPsec et les associations de sécurité.
ipsectypes.h
ipsectypes.idl
Functions utilisée pour gérer les stratégies IPsec et les associations de sécurité.
fwpmu.h
fwpmk.h
API de gestion (FWPM)${REMOVE}$
types énumérés et structures utilisées pour gérer le moteur de filtre.
fwpmtypes.h
fwpmtypes.idl
Functions utilisé pour gérer le moteur de filtre. Ces fonctions sont utilisées pour effectuer les tâches suivantes :
  • Définissez et interrogez des filtres, des fournisseurs et des légendes.
  • Récupérez les statistiques IPsec.
  • Configurez la plateforme de filtrage Windows.
fwpmu.h
fwpmk.h
API partagée (FWP) Les types énumérés et les structures fondamentales partagées sur la plateforme de filtrage Windows.
fwptypes.h
fwptypes.idl

Les noms de type de données sont tous délimités en majuscules et en trait de soulignement. Le nom commence toujours par un préfixe qui identifie son groupe de composants, tel que FWPM_PROVIDER0.

Les noms de fonction sont délimités par une casse mixte et une casse. Le nom commence toujours par un préfixe qui identifie son groupe de composants, tel que FwpmProviderContextAdd0.

La plupart des données et des noms de fonction se terminent par un numéro de version. Le fichier d’en-tête fwpvi.h mappe les noms de données indépendantes des versions et des fonctions à la version appropriée pour une utilisation avec un système d’exploitation donné. Pour plus d’informations, consultez PAM Version-Independent noms et ciblage de versions spécifiques de Windows.

Chaque composant n’est pas autonome. Par exemple, les stratégies de mode principal IKE (MM) sont définies dans le composant IKEEXT, mais sont stockées dans un contexte de fournisseur et sont associées à un filtre qui se trouve dans le composant API FWPM.

User-Mode et Kernel-Mode fichiers d’en-tête public

La plupart des fonctions PAM peuvent être appelées à partir du mode utilisateur ou du mode noyau. Toutefois, les fonctions en mode utilisateur retournent une valeur DWORD qui représente un code d’erreur Win32, tandis que les fonctions en mode noyau retournent une valeur NTSTATUS qui représente un code d’état NT. Par conséquent, les noms de fonction et la sémantique sont identiques entre le mode utilisateur et le mode noyau, mais les signatures de fonction ne sont pas. Cela nécessite des en-têtes spécifiques en mode utilisateur et en mode noyau distincts pour les prototypes de fonction. Les noms de fichiers d’en-tête en mode utilisateur se terminent par « u » et les noms de fichiers d’en-tête en mode noyau se terminent par « k ».

Le tableau suivant répertorie les fichiers d’en-tête Win32 qui définissent les fonctions PAM.

Fichiers d’en-tête Description
fwpmk.h Prototypes de fonction en mode noyau pour les composants FWPM, IPsec et IKEEXT. Disponible uniquement dans le DDK.
fwpmu.h Prototypes de fonction en mode utilisateur pour les composants FWPM, IPsec et IKEEXT. Disponible uniquement dans le Kit de développement logiciel (SDK) Microsoft Windows.
fwpsk.h Prototypes de fonction en mode noyau et types énumérés pour le composant FWPS. Disponible uniquement dans le DDK.
fwpsu.h Prototypes de fonction en mode utilisateur et types énumérés pour le composant FWPS. Disponible uniquement dans le Kit de développement logiciel (SDK) Windows.Remarque Les types énumérés FWPS en mode utilisateur sont identiques aux types énumérés FWPS en mode noyau. Par conséquent, ces types sont documentés dans le DDK uniquement.
Remarque Les prototypes de fonction FWPS en mode utilisateur sont identiques aux prototypes de fonction FWPS en mode noyau à l’exception du code de retour. Les fonctions FWPS en mode utilisateur retournent un DWORD, tandis que les fonctions FWPS en mode noyau retournent un NTSTATUS . Par conséquent, ces fonctions sont documentées dans le DDK uniquement.

Toutes les fonctions en mode utilisateur sont exportées à partir de fwpuclnt.dll. Toutes les fonctions en mode noyau sont exportées à partir de fwpkclnt.sys.

Types de données de gestion (FWPM) et de légende (FWPS)

La plupart des types de données FWPM, utilisés pour les tâches de gestion, telles que l’ajout de filtres ou de légendes à partir d’une application ou d’un pilote, ont des équivalents FWPS. Les types de données FWPS sont utilisés pendant le filtrage réel du trafic réseau, dans le contexte d’une routine de légende pour la classification.

Par exemple, pour ajouter un filtre à une couche de moteur de filtrage spécifique, le programmeur doit utiliser un type FWPM, comme : filter.layerKey = FWPM_LAYER_INBOUND_IPPACKET. Pour vérifier la couche à partir de laquelle une légende est appelée, le programmeur doit utiliser le type FWPS correspondant : if (inFixedValues->layerId == FWPS_LAYER_INBOUND_IPPACKET).

Certains équivalents FWPS aux types de données FWPM développent les types de données FWPM d’origine. Par exemple, pour ajouter une condition de filtre à de nombreuses couches de moteur de filtrage, le programmeur spécifie le filterCondition.fieldKey = FWPM_CONDITION_IP_PROTOCOL quelle que soit la couche du moteur de filtrage. Pour rechercher une valeur de condition de filtre, le programmeur spécifie un type FWPS spécifique à la couche, par exemple : inFixedValues->incomingValue[FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_IP_PROTOCOL].

Les types de données FWPS sont généralement plus petits que leurs équivalents FWPM. Par exemple, les identificateurs de couche de filtrage FWPM sont GUIDs (16 octets), tandis que les identificateurs de couche de filtrage FWPS sont UINT16 (16 bits). La plus petite taille pour les types de données FWPS améliore les performances système, car les comparaisons d’entiers l’emportent sur GUID comparaisons pour le trafic en temps réel. En outre, la mémoire du noyau est utilisée efficacement, car les types FWPS sont tous utilisés dans le noyau pour gérer les filtres, tandis que les types FWPM sont stockés en mode utilisateur pour gérer les différentes couches.

modèle objet de l’API PAM

PAM API Object Management