Funzione FwpmSubLayerAdd0 (fwpmu.h)
La funzione FwpmSubLayerAdd0 aggiunge un nuovo sottostrato al sistema.
Sintassi
DWORD FwpmSubLayerAdd0(
[in] HANDLE engineHandle,
[in] const FWPM_SUBLAYER0 *subLayer,
[in, optional] PSECURITY_DESCRIPTOR sd
);
Parametri
[in] engineHandle
Tipo: HANDLE
Handle per una sessione aperta al motore di filtro. Chiamare FwpmEngineOpen0 per aprire una sessione al motore di filtro.
[in] subLayer
Tipo: FWPM_SUBLAYER0*
Sottostrato da aggiungere.
[in, optional] sd
Tipo: PSECURITY_DESCRIPTOR
Informazioni di sicurezza per l'oggetto sottostrato.
Valore restituito
Tipo: DWORD
Codice/valore restituito | Descrizione |
---|---|
|
Il sottostrato è stato aggiunto correttamente. |
|
Errore specifico di Windows Filtering Platform (WFP). Per informazioni dettagliate, vedere Codici di errore WFP . |
|
Non è possibile comunicare con il motore firewall remoto o locale. |
Commenti
Se il chiamante fornisce un descrittore di sicurezza Null, il sistema assegna un descrittore di sicurezza predefinito.
Questa funzione non può essere chiamata dall'interno di una transazione di sola lettura. Avrà esito negativo con FWP_E_INCOMPATIBLE_TXN. Per altre informazioni sulle transazioni, vedere Gestione oggetti .
Il chiamante deve FWPM_ACTRL_ADD l'accesso al contenitore dei sottostrati e FWPM_ACTRL_ADD_LINK l'accesso al provider (se presente). Per altre informazioni, vedere Controllo di accesso.
FwpmSubLayerAdd0 è un'implementazione specifica di FwpmSubLayerAdd. Per altre informazioni , vedere Nomi Version-Independent WFP e Versioni specifiche di Windows .
Esempio
L'esempio C++ seguente illustra l'inizializzazione di un oggetto sottostrato e l'aggiunta della chiave del sottostrato a un oggetto filtro.
#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;
}
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows Vista [solo app desktop] |
Server minimo supportato | Windows Server 2008 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | fwpmu.h |
Libreria | Fwpuclnt.lib |
DLL | Fwpuclnt.dll |