Функция FwpmSubLayerAdd0 (fwpmu.h)
Функция FwpmSubLayerAdd0 добавляет в систему новый подслой.
Синтаксис
DWORD FwpmSubLayerAdd0(
[in] HANDLE engineHandle,
[in] const FWPM_SUBLAYER0 *subLayer,
[in, optional] PSECURITY_DESCRIPTOR sd
);
Параметры
[in] engineHandle
Тип: HANDLE
Дескриптор открытого сеанса для подсистемы фильтрации. Вызовите FwpmEngineOpen0 , чтобы открыть сеанс для подсистемы фильтрации.
[in] subLayer
Тип: FWPM_SUBLAYER0*
Добавляемый подслой.
[in, optional] sd
Тип: PSECURITY_DESCRIPTOR
Сведения о безопасности для объекта подслоя.
Возвращаемое значение
Тип: DWORD
Возвращаемый код/значение | Описание |
---|---|
|
Подслой успешно добавлен. |
|
Ошибка, определяемая платформой фильтрации Windows (WFP). Дополнительные сведения см. в разделе Коды ошибок ВПП . |
|
Сбой связи с подсистемой удаленного или локального брандмауэра. |
Комментарии
Если вызывающий объект предоставляет пустой дескриптор безопасности, система назначит дескриптор безопасности по умолчанию.
Эту функцию нельзя вызвать из транзакции, доступной только для чтения. При FWP_E_INCOMPATIBLE_TXN произойдет сбой. Дополнительные сведения о транзакциях см. в разделе Управление объектами.
Вызывающему объекту требуется FWPM_ACTRL_ADD доступ к контейнеру вложенных слоев и FWPM_ACTRL_ADD_LINK доступ к поставщику (если таковой имеется). Дополнительные сведения см. в разделе контроль доступа.
FwpmSubLayerAdd0 — это конкретная реализация FwpmSubLayerAdd. Дополнительные сведения см. в разделах ИМЕНА Version-Independent ВПП и Выбор конкретных версий Windows .
Примеры
В следующем примере C++ показана инициализация объекта подслоя и добавление ключа подслоя в объект фильтра.
#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;
}
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 [только классические приложения] |
Целевая платформа | Windows |
Header | fwpmu.h |
Библиотека | Fwpuclnt.lib |
DLL | Fwpuclnt.dll |