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
サブレイヤー オブジェクトのセキュリティ情報。
戻り値
型: DWORD
リターン コード/値 | Description |
---|---|
|
サブレイヤーが正常に追加されました。 |
|
Windows フィルタリング プラットフォーム (WFP) 固有のエラー。 詳細については、「 WFP エラー コード 」を参照してください。 |
|
リモートまたはローカルのファイアウォール エンジンとの通信に失敗しました。 |
注釈
呼び出し元が null セキュリティ記述子を提供する場合、システムは既定のセキュリティ記述子を割り当てます。
この関数は、読み取り専用トランザクション内から呼び出すことはできません。 FWP_E_INCOMPATIBLE_TXNでは失敗します。 トランザクションの詳細については、「 オブジェクト管理 」を参照してください。
呼び出し元は 、 サブレイヤーのコンテナーにFWPM_ACTRL_ADDアクセスし、プロバイダーへのアクセス をFWPM_ACTRL_ADD_LINK する必要があります (存在する場合)。 詳細については、「Access Control」を参照してください。
FwpmSubLayerAdd0 は、FwpmSubLayerAdd の特定の実装です。 詳細については、「 WFP 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 |
ヘッダー | fwpmu.h |
Library | Fwpuclnt.lib |
[DLL] | Fwpuclnt.dll |