Partager via


API PAM

L’API DE plateforme de filtrage Windows (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. Note Ces types de données sont documentés dans le Kit de développement du pilote Microsoft Windows (DDK).
fwpstypes.h
fwpstypes.idl
Fonctions et types énumérés utilisés pour implémenter des légendes. Note Ces fonctions et types énumérés sont documentés dans le DDK.
fwpsu.h
fwpsk.h
API IKE/AuthIP (IKEEXT)${REMOVE}$
Types et structures énumérés utilisés pour gérer les associations de stratégie et de sécurité en mode main (MM) et IKE et AuthIP.
iketypes.h
iketypes.idl
Fonctions utilisées pour gérer les associations de stratégie et de sécurité IKE et AuthIP MM.
fwpmu.h
fwpmk.h
API IPsec (IPSEC)${REMOVE}$
Types et structures énumérés utilisés pour la gestion des stratégies IPsec et des associations de sécurité.
ipsectypes.h
ipsectypes.idl
Fonctions utilisées pour la gestion des stratégies IPsec et des associations de sécurité.
fwpmu.h
fwpmk.h
API de gestion (FWPM)${REMOVE}$
Types et structures énumérés utilisés pour la gestion du moteur de filtre.
fwpmtypes.h
fwpmtypes.idl
Fonctions utilisées pour la gestion du 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érer des statistiques IPsec.
  • Configurez la plateforme de filtrage Windows.
fwpmu.h
fwpmk.h
API partagée (FWP) Types et structures énumérés fondamentaux partagés sur la plateforme de filtrage Windows.
fwptypes.h
fwptypes.idl

Les noms de type de données sont tous en majuscules et délimités par des traits 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 à casse mixte et délimités par la casse. Le nom commence toujours par un préfixe qui identifie son groupe de composants, tel que FwpmProviderContextAdd0.

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

Chaque composant n’est pas autonome. Par exemple, les stratégies IKE main mode (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êtes publics

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 renvoient une valeur NTSTATUS qui représente un code de status NT. Par conséquent, les noms et la sémantique des fonctions sont identiques entre le mode utilisateur et le mode noyau, mais les signatures de fonction ne le sont pas. Cela nécessite des en-têtes spécifiques au mode utilisateur et au 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 dans le DDK uniquement.
fwpmu.h Prototypes de fonction en mode utilisateur pour les composants FWPM, IPsec et IKEEXT. Disponible dans le Kit de développement logiciel (SDK) Microsoft Windows uniquement.
fwpsk.h Prototypes de fonction en mode noyau et types énumérés pour le composant FWPS. Disponible dans le DDK uniquement.
fwpsu.h Prototypes de fonction en mode utilisateur et types énumérés pour le composant FWPS. Disponible dans le Kit de développement logiciel (SDK) Windows uniquement. Note 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.
Note 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, qui sont 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 lors du 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 certaine couche de moteur de filtrage, le programmeur doit utiliser un type FWPM, comme : filter.layerKey = FWPM_LAYER_INBOUND_IPPACKET. Pour case activée 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 étendent 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, comme : 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 des GUID(16 octets), tandis que les identificateurs de couche de filtrage FWPS sont UINT16 (16 bits). La taille plus petite des types de données FWPS améliore les performances du système, car les comparaisons d’entiers l’emportent sur les comparaisons DE GUID 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

Gestion des objets de l’API PAM