Fonction WlanDeleteProfile (wlanapi.h)

La fonction WlanDeleteProfile supprime un profil sans fil pour une interface sans fil sur l’ordinateur local.

Syntaxe

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

Paramètres

[in] hClientHandle

Handle de session du client, obtenu par un appel précédent à la fonction WlanOpenHandle .

[in] pInterfaceGuid

GUID de l’interface à partir de laquelle supprimer le profil.

[in] strProfileName

Nom du profil à supprimer. Les noms de profil respectent la casse. Cette chaîne doit être terminée par null.

Windows XP avec SP3 et API LAN sans fil pour Windows XP avec SP2 : Le nom fourni doit correspondre au nom de profil dérivé automatiquement du SSID du réseau. Pour un profil réseau d’infrastructure, le SSID doit être fourni pour le nom du profil. Pour un profil réseau ad hoc, le nom fourni doit être le SSID du réseau ad hoc suivi de -adhoc.

pReserved

Réservé pour un usage futur. Doit être défini sur NULL.

Valeur retournée

Si la fonction réussit, la valeur de retour est ERROR_SUCCESS.

Si la fonction échoue, la valeur de retour peut être l’un des codes de retour suivants.

Code de retour Description
ERROR_INVALID_PARAMETER
Le paramètre hClientHandle est NULL ou non valide, le paramètre pInterfaceGuid est NULL, le paramètre strProfileName est NULL ou pReserved n’est pas NULL.
ERROR_INVALID_HANDLE
Le handle spécifié dans le paramètre hClientHandle est introuvable dans la table de handle.
ERROR_NOT_FOUND
Le profil sans fil spécifié par strProfileName est introuvable dans le magasin de profils.
ERROR_ACCESS_DENIED
L’appelant ne dispose pas des autorisations suffisantes pour supprimer le profil.
RPC_STATUS
Différents codes d’erreur.

Remarques

La fonction WlanDeleteProfile supprime un profil sans fil pour une interface sans fil sur l’ordinateur local.

Toutes les fonctions LAN sans fil nécessitent un GUID d’interface pour l’interface sans fil lors de l’exécution d’opérations de profil. Lorsqu’une interface sans fil est supprimée, son état est effacé du service LAN sans fil (WLANSVC) et aucune opération de profil n’est possible.

La fonction WlanDeleteProfile peut échouer avec ERROR_INVALID_PARAMETER si l’interface sans fil spécifiée dans le paramètre pInterfaceGuid pour le profil LAN sans fil a été supprimée du système (un adaptateur sans fil USB qui a été supprimé, par exemple).

Pour supprimer un profil sur la ligne de commande, utilisez la commande netsh wlan delete profile . Pour plus d’informations, consultez Commandes Netsh pour le réseau local sans fil (wlan).

Exemples

L’exemple suivant énumère les interfaces LAN sans fil sur l’ordinateur local et tente de supprimer un profil sans fil spécifique sur chaque interface LAN sans fil.

Note Cet exemple ne peut pas être chargé sur Windows Server 2008 et Windows Server 2008 R2 si le service LAN sans fil n’est pas installé et démarré.
 
#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;
}


Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista, Windows XP avec SP3 [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2008 [applications de bureau uniquement]
Plateforme cible Windows
En-tête wlanapi.h (incluez Wlanapi.h)
Bibliothèque Wlanapi.lib
DLL Wlanapi.dll
Composant redistribuable API LAN sans fil pour Windows XP avec SP2

Voir aussi

Autorisations de l’API Wifi native

WlanGetProfile

WlanGetProfileList

WlanRenameProfile

WlanSetProfile