Funzione WlanDeleteProfile (wlanapi.h)

La funzione WlanDeleteProfile elimina un profilo wireless per un'interfaccia wireless nel computer locale.

Sintassi

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

Parametri

[in] hClientHandle

Handle di sessione del client, ottenuto da una chiamata precedente alla funzione WlanOpenHandle .

[in] pInterfaceGuid

GUID dell'interfaccia da cui eliminare il profilo.

[in] strProfileName

Nome del profilo da eliminare. I nomi dei profili fanno distinzione tra maiuscole e minuscole. Questa stringa deve essere con terminazione NULL.

Windows XP con SP3 e API LAN wireless per Windows XP con SP2: Il nome specificato deve corrispondere al nome del profilo derivato automaticamente dall'SSID della rete. Per un profilo di rete dell'infrastruttura, è necessario specificare il valore SSID per il nome del profilo. Per un profilo di rete ad hoc, il nome specificato deve essere il SSID della rete ad hoc seguita da -adhoc.

pReserved

Riservato per utilizzi futuri. Deve essere impostato su NULL.

Valore restituito

Se la funzione ha esito positivo, il valore restituito viene ERROR_SUCCESS.

Se la funzione ha esito negativo, il valore restituito può essere uno dei codici restituiti seguenti.

Codice restituito Descrizione
ERROR_INVALID_PARAMETER
Il parametro hClientHandle è NULL o non valido, il parametro pInterfaceGuid è NULL, il parametro strProfileName è NULL o pReserved non è NULL.
ERROR_INVALID_HANDLE
L'handle specificato nel parametro hClientHandle non è stato trovato nella tabella handle.
ERROR_NOT_FOUND
Il profilo wireless specificato da strProfileName non è stato trovato nell'archivio profili.
ERROR_ACCESS_DENIED
Il chiamante non dispone di autorizzazioni sufficienti per eliminare il profilo.
RPC_STATUS
Vari codici di errore.

Commenti

La funzione WlanDeleteProfile elimina un profilo wireless per un'interfaccia wireless nel computer locale.

Tutte le funzioni LAN wireless richiedono un GUID di interfaccia per l'interfaccia wireless durante l'esecuzione di operazioni del profilo. Quando viene rimossa un'interfaccia wireless, il relativo stato viene cancellato dal servizio LAN wireless (WLANSVC) e non è possibile eseguire alcuna operazione di profilo.

La funzione WlanDeleteProfile può avere esito negativo con ERROR_INVALID_PARAMETER se l'interfaccia wireless specificata nel parametro pInterfaceGuid per il profilo LAN wireless è stata rimossa dal sistema (ad esempio una scheda wireless USB rimossa).

Per eliminare un profilo dalla riga di comando, usare il comando netsh wlan delete profile . Per altre informazioni, vedere Netsh Commands for Wireless Local Area Network (wlan).For more information, see Netsh Commands for Wireless Local Area Network (wlan).

Esempio

L'esempio seguente enumera le interfacce LAN wireless nel computer locale e tenta di eliminare un profilo wireless specifico in ogni interfaccia LAN wireless.

Nota Questo esempio non verrà caricato in Windows Server 2008 e Windows Server 2008 R2 se il servizio LAN wireless non è installato e avviato.
 
#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;
}


Requisiti

Requisito Valore
Client minimo supportato Windows Vista, Windows XP con SP3 [solo app desktop]
Server minimo supportato Windows Server 2008 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione wlanapi.h (include Wlanapi.h)
Libreria Wlanapi.lib
DLL Wlanapi.dll
Componente ridistribuibile API LAN wireless per Windows XP con SP2

Vedi anche

Autorizzazioni API Wi-Fi native

WlanGetProfile

WlanGetProfileList

WlanRenameProfile

WlanSetProfile