Compartir a través de


Función WlanDeleteProfile (wlanapi.h)

La función WlanDeleteProfile elimina un perfil inalámbrico para una interfaz inalámbrica en el equipo local.

Sintaxis

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

Parámetros

[in] hClientHandle

Identificador de sesión del cliente, obtenido por una llamada anterior a la función WlanOpenHandle .

[in] pInterfaceGuid

GUID de la interfaz desde la que se va a eliminar el perfil.

[in] strProfileName

Nombre del perfil que se va a eliminar. Los nombres de perfil distinguen mayúsculas de minúsculas. Esta cadena debe terminar en NULL.

Windows XP con SP3 y LAN inalámbrica API para Windows XP con SP2: El nombre proporcionado debe coincidir con el nombre del perfil derivado automáticamente del SSID de la red. Para un perfil de red de infraestructura, se debe proporcionar el SSID para el nombre del perfil. Para un perfil de red ad hoc, el nombre proporcionado debe ser el SSID de la red ad hoc seguido de -adhoc.

pReserved

Reservado para uso futuro. Debe establecerse en NULL.

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto es ERROR_SUCCESS.

Si se produce un error en la función, el valor devuelto puede ser uno de los siguientes códigos de retorno.

Código devuelto Descripción
ERROR_INVALID_PARAMETER
El parámetro hClientHandle es NULL o no es válido, el parámetro pInterfaceGuid es NULL, el parámetro strProfileName es NULL o pReserved no es NULL.
ERROR_INVALID_HANDLE
El identificador especificado en el parámetro hClientHandle no se encontró en la tabla handle.
ERROR_NOT_FOUND
El perfil inalámbrico especificado por strProfileName no se encontró en el almacén de perfiles.
ERROR_ACCESS_DENIED
El autor de la llamada no tiene permisos suficientes para eliminar el perfil.
RPC_STATUS
Varios códigos de error.

Comentarios

La función WlanDeleteProfile elimina un perfil inalámbrico para una interfaz inalámbrica en el equipo local.

Todas las funciones LAN inalámbricas requieren un GUID de interfaz para la interfaz inalámbrica al realizar operaciones de perfil. Cuando se quita una interfaz inalámbrica, su estado se borra del servicio LAN inalámbrico (WLANSVC) y no se pueden realizar operaciones de perfil.

La función WlanDeleteProfile puede producir un error con ERROR_INVALID_PARAMETER si la interfaz inalámbrica especificada en el parámetro pInterfaceGuid para el perfil laN inalámbrico se ha quitado del sistema (un adaptador inalámbrico USB que se ha quitado, por ejemplo).

Para eliminar un perfil en la línea de comandos, use el comando netsh wlan delete profile . Para obtener más información, consulte Netsh Commands for Wireless Local Area Network (wlan).

Ejemplos

En el ejemplo siguiente se enumeran las interfaces de LAN inalámbricas en el equipo local e intenta eliminar un perfil inalámbrico específico en cada interfaz LAN inalámbrica.

Nota Este ejemplo no se cargará en Windows Server 2008 y Windows Server 2008 R2 si el servicio LAN inalámbrico no está instalado e iniciado.
 
#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;
}


Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista, Windows XP con SP3 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado wlanapi.h (incluya Wlanapi.h)
Library Wlanapi.lib
Archivo DLL Wlanapi.dll
Redistribuible API de LAN inalámbrica para Windows XP con SP2

Consulte también

Permisos nativos de la API wifi

WlanGetProfile

WlanGetProfileList

WlanRenameProfile

WlanSetProfile