Partager via


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
ERROR_SUCCESS
0
La sous-couche a été ajoutée avec succès.
code d’erreur FWP_E_*
0x80320001 0x80320039
Erreur spécifique à la plateforme de filtrage Windows (PAM). Pour plus d’informations, consultez Codes d’erreur PAM .
code d’erreur RPC_*
0x80010001 — 0x80010122
É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

Voir aussi

FWPM_SUBLAYER0

Fonctions de gestion

Fonctions pam