FwpmSubLayerAdd0-Funktion (fwpmu.h)
Die FwpmSubLayerAdd0-Funktion fügt dem System eine neue Unterschicht hinzu.
Syntax
DWORD FwpmSubLayerAdd0(
[in] HANDLE engineHandle,
[in] const FWPM_SUBLAYER0 *subLayer,
[in, optional] PSECURITY_DESCRIPTOR sd
);
Parameter
[in] engineHandle
Typ: HANDLE
Handle für eine geöffnete Sitzung für die Filter-Engine. Rufen Sie FwpmEngineOpen0 auf, um eine Sitzung für die Filter-Engine zu öffnen.
[in] subLayer
Typ: FWPM_SUBLAYER0*
Die hinzuzufügende Unterschicht.
[in, optional] sd
Typ: PSECURITY_DESCRIPTOR
Sicherheitsinformationen für das Sublayerobjekt.
Rückgabewert
Art: DWORD
Rückgabecode/-wert | BESCHREIBUNG |
---|---|
|
Die Unterschicht wurde erfolgreich hinzugefügt. |
|
Ein WFP-spezifischer Fehler (Windows Filtering Platform). Weitere Informationen finden Sie unter WFP-Fehlercodes . |
|
Fehler bei der Kommunikation mit der Remote- oder lokalen Firewall-Engine. |
Hinweise
Wenn der Aufrufer einen NULL-Sicherheitsdeskriptor bereitstellt, weist das System einen Standardsicherheitsdeskriptor zu.
Diese Funktion kann nicht innerhalb einer schreibgeschützten Transaktion aufgerufen werden. Bei FWP_E_INCOMPATIBLE_TXN tritt ein Fehler auf. Weitere Informationen zu Transaktionen finden Sie unter Objektverwaltung .
Der Aufrufer benötigt FWPM_ACTRL_ADD Zugriff auf den Container der Sublayer und FWPM_ACTRL_ADD_LINK Zugriff auf den Anbieter (falls vorhanden). Weitere Informationen finden Sie unter Access Control.
FwpmSubLayerAdd0 ist eine spezifische Implementierung von FwpmSubLayerAdd. Weitere Informationen finden Sie unter WFP-Version-Independent Namen und Spezifische Windows-Versionen .
Beispiele
Das folgende C++-Beispiel veranschaulicht die Initialisierung eines Sublayerobjekts und das Hinzufügen des Unterschichtschlüssels zu einem Filterobjekt.
#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;
}
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows Vista [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2008 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | fwpmu.h |
Bibliothek | Fwpuclnt.lib |
DLL | Fwpuclnt.dll |