다음을 통해 공유


NetworkIsolationGetAppContainerConfig 함수(networkisolation.h)

NetworkIsolationGetAppContainerConfig 함수는 하나 이상의 앱 컨테이너에 대한 구성 정보를 검색하는 데 사용됩니다.

구문

DWORD NetworkIsolationGetAppContainerConfig(
  [out] DWORD               *pdwNumPublicAppCs,
  [out] PSID_AND_ATTRIBUTES *appContainerSids
);

매개 변수

[out] pdwNumPublicAppCs

형식: DWORD*

appContainerSids 멤버의 앱 컨테이너 수입니다.

[out] appContainerSids

형식: PSID_AND_ATTRIBUTES*

루프백 트래픽을 보낼 수 있는 앱 컨테이너의 SID(보안 식별자)입니다. 디버깅 목적으로 사용됩니다.

반환 값

형식:DWORD

성공하면 ERROR_SUCCESS 반환하고, 그렇지 않으면 오류 값을 반환합니다.

설명

PSID_AND_ATTRIBUTES 구조와 연결된 메모리를 해제하는 것은 호출 프로그램의 책임입니다. 다음 코드 샘플에서는 이 함수를 호출하는 방법을 보여줍니다. FreeAppContainerConfig 함수는 연결된 모든 메모리를 해제하는 방법을 보여줍니다.


#include "stdafx.h"
#include <netfw.h>

typedef DWORD
(WINAPI *FN_NETWORKISOLATIONGETAPPCONTAINERCONFIG)(
    _Out_ DWORD *pdwNumPublicAppCs,
    _Outptr_result_buffer_(*pdwNumPublicAppCs) PSID_AND_ATTRIBUTES *appContainerSids
    );

void
FreeAppContainerConfig(
    __in DWORD sidCount,
    __in_ecount(sidCount) SID_AND_ATTRIBUTES *srcSidAttrib
    )
{
    DWORD dwIndex = 0;

    for (dwIndex = 0; dwIndex < sidCount; dwIndex++)
    {
        HeapFree(GetProcessHeap(), 0, srcSidAttrib[dwIndex].Sid);
    }

    HeapFree(GetProcessHeap(), 0, srcSidAttrib);
}

int _tmain(int argc, _TCHAR* argv[])
{
    DWORD dwErr = 0;
    PSID_AND_ATTRIBUTES appContainerSids = NULL;
    DWORD dwCount = 0;
    HMODULE hModule = NULL;
    FN_NETWORKISOLATIONGETAPPCONTAINERCONFIG pfnNetworkIsolationGetAppContainerConfig = NULL;

    hModule = LoadLibraryW(L"FirewallAPI.dll");
    if (hModule == NULL)
    {
        dwErr = GetLastError();
        goto Cleanup;
    }

    pfnNetworkIsolationGetAppContainerConfig = (FN_NETWORKISOLATIONGETAPPCONTAINERCONFIG)GetProcAddress(
        hModule, 
        "NetworkIsolationGetAppContainerConfig"
        );
    if (pfnNetworkIsolationGetAppContainerConfig == NULL)
    {
        dwErr = GetLastError();
        goto Cleanup;
    }

    dwErr = pfnNetworkIsolationGetAppContainerConfig(
        &dwCount, 
        &appContainerSids
        );
    if (dwErr != ERROR_SUCCESS)
    {
        goto Cleanup;
    }

    // Process the app container sids

Cleanup:

    FreeAppContainerConfig(
        dwCount, 
        appContainerSids
        );

    if (hModule != NULL)
    {
        FreeLibrary(hModule);
    }

	return 0;
}

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 8 [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2012 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 networkisolation.h(Netfw.h 포함)
DLL Firewallapi.dll