Fonction FwpmSubLayerAdd0 (fwpmu.h)
La fonction FwpmSubLayerAdd0 ajoute un nouveau sous-couche au système.
Syntaxe
DWORD FwpmSubLayerAdd0(
[in] HANDLE engineHandle,
[in] const FWPM_SUBLAYER0 *subLayer,
[in, optional] PSECURITY_DESCRIPTOR sd
);
Paramètres
[in] engineHandle
Type : HANDLE
Gérer pour une session ouverte sur le moteur de filtre. Appelez FwpmEngineOpen0 pour ouvrir une session sur le moteur de filtre.
[in] subLayer
Type : FWPM_SUBLAYER0*
Sous-couche à ajouter.
[in, optional] sd
Type : PSECURITY_DESCRIPTOR
Informations de sécurité pour l’objet de sous-couche.
Valeur retournée
Type : DWORD
Code/valeur de retour | Description |
---|---|
|
La sous-couche a été ajoutée avec succès. |
|
Erreur spécifique à la plateforme de filtrage Windows (PAM). Pour plus d’informations, consultez Codes d’erreur PAM . |
|
Échec de la communication avec le moteur de pare-feu distant ou local. |
Remarques
Si l’appelant fournit un descripteur de sécurité null, le système affecte un descripteur de sécurité par défaut.
Cette fonction ne peut pas être appelée à partir d’une transaction en lecture seule. Elle échoue avec FWP_E_INCOMPATIBLE_TXN. Pour plus d’informations sur les transactions, consultez Gestion des objets.
L’appelant doit FWPM_ACTRL_ADD accès au conteneur des sous-couches et FWPM_ACTRL_ADD_LINK accès au fournisseur (le cas échéant). Pour plus d’informations, consultez Access Control.
FwpmSubLayerAdd0 est une implémentation spécifique de FwpmSubLayerAdd. Pour plus d’informations , voir PAM Version-Independent noms et Ciblage de versions spécifiques de Windows .
Exemples
L’exemple C++ suivant illustre l’initialisation d’un objet de sous-couche et l’ajout de la clé de sous-couche à un objet de filtre.
#include <windows.h>
#include <fwpmu.h>
#include <rpc.h>
#include <stdio.h>
#pragma comment(lib, "Fwpuclnt.lib")
#pragma comment(lib, "Rpcrt4.lib")
void main()
{
FWPM_FILTER0 fwpFilter;
FWPM_SUBLAYER0 fwpFilterSubLayer;
HANDLE engineHandle = NULL;
DWORD result = ERROR_SUCCESS;
RPC_STATUS rpcStatus = RPC_S_OK;
memset(&fwpFilterSubLayer, 0, sizeof(fwpFilterSubLayer));
rpcStatus = UuidCreate(&fwpFilterSubLayer.subLayerKey);
if (RPC_S_OK != rpcStatus)
{
printf("UuidCreate failed (%d).\n", rpcStatus);
return;
}
result = FwpmEngineOpen0( NULL, RPC_C_AUTHN_WINNT, NULL, NULL, &engineHandle );
if (result != ERROR_SUCCESS)
{
printf("FwpmEngineOpen0 failed.\n");
return;
}
fwpFilterSubLayer.displayData.name = L"MyFilterSublayer";
fwpFilterSubLayer.displayData.description = L"My filter sublayer";
fwpFilterSubLayer.flags = 0;
fwpFilterSubLayer.weight = 0x100;
printf("Adding filter sublayer.\n");
result = FwpmSubLayerAdd0(engineHandle, &fwpFilterSubLayer, NULL);
if (result != ERROR_SUCCESS)
{
printf("FwpmSubLayerAdd0 failed (%d).\n", result);
return;
}
// Add sublayer key to a filter.
memset(&fwpFilter, 0, sizeof(FWPM_FILTER0));
if (&fwpFilterSubLayer.subLayerKey != NULL)
fwpFilter.subLayerKey = fwpFilterSubLayer.subLayerKey;
// Finish initializing filter...
return;
}
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows Vista [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2008 [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | fwpmu.h |
Bibliothèque | Fwpuclnt.lib |
DLL | Fwpuclnt.dll |