다음을 통해 공유


WlanDeleteProfile 함수(wlanapi.h)

WlanDeleteProfile 함수는 로컬 컴퓨터의 무선 인터페이스에 대한 무선 프로필을 삭제합니다.

구문

DWORD WlanDeleteProfile(
  [in] HANDLE     hClientHandle,
  [in] const GUID *pInterfaceGuid,
  [in] LPCWSTR    strProfileName,
       PVOID      pReserved
);

매개 변수

[in] hClientHandle

WlanOpenHandle 함수에 대한 이전 호출에서 얻은 클라이언트의 세션 핸들입니다.

[in] pInterfaceGuid

프로필을 삭제할 인터페이스의 GUID입니다.

[in] strProfileName

삭제할 프로필의 이름입니다. 프로필 이름은 대/소문자를 구분합니다. 이 문자열은 NULL로 종료되어야 합니다.

SP3이 있는 Windows XP 및 SP2를 사용하는 Windows XP용 무선 LAN API: 제공된 이름은 네트워크의 SSID에서 자동으로 파생된 프로필 이름과 일치해야 합니다. 인프라 네트워크 프로필의 경우 프로필 이름에 대해 SSID를 제공해야 합니다. 임시 네트워크 프로필의 경우 제공된 이름은 임시 네트워크의 SSID 뒤에 -adhoc가 있어야 합니다.

pReserved

다음에 사용하도록 예약됩니다. NULL로 설정해야 합니다.

반환 값

함수가 성공하면 반환 값이 ERROR_SUCCESS.

함수가 실패하면 반환 값은 다음 반환 코드 중 하나일 수 있습니다.

반환 코드 설명
ERROR_INVALID_PARAMETER
hClientHandle 매개 변수가 NULL이거나 유효하지 않거나, pInterfaceGuid 매개 변수가 NULL이거나, strProfileName 매개 변수가 NULL이거나, pReservedNULL이 아닙니다.
ERROR_INVALID_HANDLE
hClientHandle 매개 변수에 지정된 핸들이 핸들 테이블에 없습니다.
ERROR_NOT_FOUND
strProfileName으로 지정된 무선 프로필이 프로필 저장소에 없습니다.
ERROR_ACCESS_DENIED
호출자에게 프로필을 삭제할 수 있는 충분한 권한이 없습니다.
RPC_STATUS
다양한 오류 코드.

설명

WlanDeleteProfile 함수는 로컬 컴퓨터의 무선 인터페이스에 대한 무선 프로필을 삭제합니다.

모든 무선 LAN 함수는 프로필 작업을 수행할 때 무선 인터페이스에 대한 인터페이스 GUID가 필요합니다. 무선 인터페이스가 제거되면 WLANSVC(무선 LAN 서비스)에서 해당 상태가 지워지고 프로필 작업이 불가능합니다.

무선 LAN 프로필의 pInterfaceGuid 매개 변수에 지정된 무선 인터페이스가 시스템에서 제거된 경우(예: 제거된 USB 무선 어댑터) ERROR_INVALID_PARAMETER WlanDeleteProfile 함수가 실패할 수 있습니다.

명령줄에서 프로필을 삭제하려면 netsh wlan delete profile 명령을 사용합니다. 자세한 내용은 무선 로컬 영역 네트워크(wlan)에 대한 Netsh 명령을 참조하세요.

예제

다음 예제에서는 로컬 컴퓨터의 무선 LAN 인터페이스를 열거하고 각 무선 LAN 인터페이스에서 특정 무선 프로필을 삭제하려고 시도합니다.

참고 이 예제에서는 무선 LAN 서비스가 설치되어 시작되지 않은 경우 Windows Server 2008 및 Windows Server 2008 R2에서 로드되지 않습니다.
 
#ifndef UNICODE
#define UNICODE
#endif

#include <windows.h>
#include <wlanapi.h>
#include <objbase.h>
#include <wtypes.h>

#include <stdio.h>
#include <stdlib.h>

// Need to link with Wlanapi.lib and Ole32.lib
#pragma comment(lib, "wlanapi.lib")
#pragma comment(lib, "ole32.lib")

int _cdecl wmain(int argc, WCHAR ** argv)
{

    // Declare and initialize variables.

    HANDLE hClient = NULL;
    DWORD dwMaxClient = 2;      //    
    DWORD dwCurVersion = 0;
    DWORD dwResult = 0;
    DWORD dwRetVal = 0;
    int iRet = 0;

    WCHAR GuidString[39] = { 0 };

    unsigned int i;

    /* variables used for WlanEnumInterfaces  */

    PWLAN_INTERFACE_INFO_LIST pIfList = NULL;
    PWLAN_INTERFACE_INFO pIfInfo = NULL;

    LPCWSTR pProfileName = NULL;

    // Validate the parameters
    if (argc < 2) {
        wprintf(L"usage: %s <profile>\n", argv[0]);
        wprintf(L"   Deletes a wireless profile\n");
        wprintf(L"   Example\n");
        wprintf(L"       %s \"Default Wireless\"\n", argv[0]);
        exit(1);
    }

    pProfileName = argv[1];

    wprintf(L"Information for profile: %ws\n\n", pProfileName);

    dwResult = WlanOpenHandle(dwMaxClient, NULL, &dwCurVersion, &hClient);
    if (dwResult != ERROR_SUCCESS) {
        wprintf(L"WlanOpenHandle failed with error: %u\n", dwResult);
        return 1;
        // You can use FormatMessage here to find out why the function failed
    }

    dwResult = WlanEnumInterfaces(hClient, NULL, &pIfList);
    if (dwResult != ERROR_SUCCESS) {
        wprintf(L"WlanEnumInterfaces failed with error: %u\n", dwResult);
        return 1;
        // You can use FormatMessage here to find out why the function failed
    } else {
        wprintf(L"WLAN_INTERFACE_INFO_LIST for this system\n");

        wprintf(L"Num Entries: %lu\n", pIfList->dwNumberOfItems);
        wprintf(L"Current Index: %lu\n", pIfList->dwIndex);
        for (i = 0; i < pIfList->dwNumberOfItems; i++) {
            pIfInfo = (WLAN_INTERFACE_INFO *) & pIfList->InterfaceInfo[i];
            wprintf(L"  Interface Index[%u]:\t %lu\n", i, i);
            iRet =
                StringFromGUID2(pIfInfo->InterfaceGuid, (LPOLESTR) & GuidString,
                                sizeof (GuidString) / sizeof (*GuidString));
            // For c rather than C++ source code, the above line needs to be
            // iRet = StringFromGUID2(&pIfInfo->InterfaceGuid, (LPOLESTR) &GuidString, 
            //     sizeof(GuidString)/sizeof(*GuidString)); 
            if (iRet == 0)
                wprintf(L"StringFromGUID2 failed\n");
            else {
                wprintf(L"  InterfaceGUID[%d]: %ws\n", i, GuidString);
            }
            wprintf(L"  Interface Description[%d]: %ws", i,
                    pIfInfo->strInterfaceDescription);
            wprintf(L"\n");
            wprintf(L"  Interface State[%d]:\t ", i);
            switch (pIfInfo->isState) {
            case wlan_interface_state_not_ready:
                wprintf(L"Not ready\n");
                break;
            case wlan_interface_state_connected:
                wprintf(L"Connected\n");
                break;
            case wlan_interface_state_ad_hoc_network_formed:
                wprintf(L"First node in a ad hoc network\n");
                break;
            case wlan_interface_state_disconnecting:
                wprintf(L"Disconnecting\n");
                break;
            case wlan_interface_state_disconnected:
                wprintf(L"Not connected\n");
                break;
            case wlan_interface_state_associating:
                wprintf(L"Attempting to associate with a network\n");
                break;
            case wlan_interface_state_discovering:
                wprintf
                    (L"Auto configuration is discovering settings for the network\n");
                break;
            case wlan_interface_state_authenticating:
                wprintf(L"In process of authenticating\n");
                break;
            default:
                wprintf(L"Unknown state %ld\n", pIfInfo->isState);
                break;
            }
            wprintf(L"\n");

            dwResult = WlanDeleteProfile(hClient,
                                         &pIfInfo->InterfaceGuid,
                                         pProfileName, NULL);

            if (dwResult != ERROR_SUCCESS) {
                wprintf
                    (L"WlanDeleteProfile failed on this interface with error: %u\n",
                     dwResult);
                if (dwResult == ERROR_NOT_FOUND)
                    wprintf
                        (L"  Error was the following profile was not found: %ws\n",
                         pProfileName);
                // You can use FormatMessage to find out why the function failed
            } else {
                wprintf(L"Successfully deleted Profile Name: %ws\n",
                        pProfileName);
            }
            wprintf(L"\n");
        }

    }
    if (pIfList != NULL) {
        WlanFreeMemory(pIfList);
        pIfList = NULL;
    }

    return dwRetVal;
}


요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista, WINDOWS XP SP3 [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2008 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 wlanapi.h(Wlanapi.h 포함)
라이브러리 Wlanapi.lib
DLL Wlanapi.dll
재배포 가능 파일 SP2를 사용하는 Windows XP용 무선 LAN API

추가 정보

네이티브 Wifi API 권한

WlanGetProfile

WlanGetProfileList

WlanRenameProfile

WlanSetProfile