IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

Connexion Wifi avec l'API Wlanapi.


Sujet :

Windows

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 148
    Points : 73
    Points
    73
    Par défaut Connexion Wifi avec l'API Wlanapi.
    Salut à tous,

    Je me suis arraché les cheveux toute la journée pour tenter de recoder le gestionnaire Wifi de Windows. Je gère pratiquement tous les fonctions de l'API Wlanapi de Microsoft, sauf une fonction pour me connecté avec un profile existant. Avec la fonction WlanConnect, j'arrive à me connecté sur un réseau non sécurisé (réseau publique style Freewifi), mais pas sur un réseau sécurisé par clé de cryptage et ayant un fichier profile (Document XML) comme le mien. Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    int connect_user(HANDLE handle, const GUID *id, PWSTR	strxml)
    {
    	DWORD error = ERROR_SUCCESS;
    	WLAN_CONNECTION_PARAMETERS	connect;
    
    	connect.wlanConnectionMode = wlan_connection_mode_temporary_profile;
    	connect.strProfile = strxml;
    	connect.pDot11Ssid = NULL;
    	connect.pDesiredBssidList->Header.Type = NDIS_OBJECT_TYPE_DEFAULT;
    	connect.pDesiredBssidList->Header.Revision = DOT11_BSSID_LIST_REVISION_1;
    	connect.pDesiredBssidList->Header.Size = sizeof(DOT11_BSSID_LIST);
    	connect.pDesiredBssidList->uNumOfEntries = 3;
    	connect.pDesiredBssidList->uTotalNumOfEntries = 5;
    	connect.dot11BssType = dot11_BSS_type_independent;
    	connect.dwFlags = WLAN_CONNECTION_IGNORE_PRIVACY_BIT;
    
    	error = WlanConnect(handle, id, &connect, NULL);
    	if (error != ERROR_SUCCESS)
    		cout << "CANNOT CONNECT\n";
    	else
    		cout << "CONNECTION SUCCESS\n";
    	return (0);
    }
    J'essaye de suivre pas à pas les instructions sur le site de MSDNA (http://msdn.microsoft.com/en-us/libr...=VS.85%29.aspx), mais rien n'y fait, j'obtiens toujours un ERROR_INVALID_PARAMETERS. Pourtant, je lui donne bien mon handle de connexion ouvert avec WlanOpenHandle(), le GUID de mon interface wifi et ma structure. Je pense que le problème viens surtout lorsque je remplis ma structure WLAN_CONNECTION_PARAMETERS connect.

    Si quelqu'un peux m'aider, ça serait cool.

    A+

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 148
    Points : 73
    Points
    73
    Par défaut
    Personne n'a jamais utiliser l'usine à gaz Wlanapi.dll ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 148
    Points : 73
    Points
    73
    Par défaut
    Un dernier UP en esperant une reponse !


  4. #4
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Citation Envoyé par katcha95 Voir le message
    Personne n'a jamais utiliser l'usine à gaz Wlanapi.dll ?
    Si mais pas pour établir une connexion. Regarde ici au cas où : Découverte de l'API Microsoft Native Wifi
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 148
    Points : 73
    Points
    73
    Par défaut
    Merci comme même, mais ce code je le connaît par cœur et il aide uniquement pour les débuts.
    Peut-être que tu peux m'aider en analysant mon code avec le prototypage de la fonction WlanConnect, je suis sûre que c'est moi qui fait n'importe quoi, mais je trouve vraiment pas l'erreur.

    A+

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 148
    Points : 73
    Points
    73
    Par défaut
    J'apporte du nouveau pour ceux qui voudront m'aider:

    Le switch case ma permit de détecter mon erreur, je rempli en effet mal ma structure, vu qu'il m'indique invalid parameters à chaque fois.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    int								connect_secure_network(HANDLE handle, const GUID *id, PWSTR	strxml)
    {
    	DWORD						error = ERROR_SUCCESS;
    	WLAN_CONNECTION_PARAMETERS	connect;
    
    	connect.wlanConnectionMode = wlan_connection_mode_temporary_profile;
    	connect.strProfile = strxml;
    	if((error = WlanConnect(handle, id, &connect,NULL)) != ERROR_SUCCESS)
    		cout<<"CANNOT CONNECT !\n"<<endl;
    	else
    		cout<<"CONNECT SUCCESS !\n"<<endl;
    	switch(error)
    	{
    	case ERROR_INVALID_HANDLE:
    		printf("INVALID HANDLE\n");
    		break;
    	case ERROR_ACCESS_DENIED:
    		printf("NO PERMISSION TO CONNECT\n");
    		break;
    	case ERROR_INVALID_PARAMETER:
    		printf("INVALID PARAMETERS\n");
    		break;
    	}
    	return (0);
    }
    Quelqu'un pourrait m'aider à mieux comprendre la structure de cette fonction: http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx

    A+

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 148
    Points : 73
    Points
    73
    Par défaut
    La variable strxml est une chaîne de caractère contenant mon profil de mon interface Wifi, le type est PWSTR.


  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 148
    Points : 73
    Points
    73
    Par défaut
    J'ai enfin résolu le problème et mon code fonctionne !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    int								connect_secure_network(HANDLE	handle, const GUID *id, PWSTR	strxml)
    {
    	DWORD						error = ERROR_SUCCESS;
    	WLAN_CONNECTION_PARAMETERS	connect;
    
    	memset(&connect, 0, sizeof(WLAN_CONNECTION_PARAMETERS));
    	connect.wlanConnectionMode = wlan_connection_mode_temporary_profile;
    	connect.strProfile = strxml;
    	connect.pDot11Ssid = NULL;
    	connect.pDesiredBssidList = 0;
    	connect.dot11BssType = dot11_BSS_type_infrastructure;
    	connect.dwFlags = WLAN_CONNECTION_IGNORE_PRIVACY_BIT;
    	if((error = WlanConnect(handle, id, &connect, NULL)) != ERROR_SUCCESS)
    		cout<<"CANNOT CONNECT !\n"<<endl;
    	else
    		cout<<"CONNECT SUCCESS !\n"<<endl;
    	switch(error)
    	{
    	case ERROR_INVALID_HANDLE:
    		printf("INVALID HANDLE\n");
    		break;
    	case ERROR_ACCESS_DENIED:
    		printf("NO PERMISSION TO CONNECT\n");
    		break;
    	case ERROR_INVALID_PARAMETER:
    		printf("INVALID PARAMETERS\n");
    		break;
    	}
    	return (0);
    }
    Il fallait mettre dot11_BSS_type_infrastructure à la place de dot11_BSS_type_independent, je choisissais mal le type de mon BSS. Ce code fonctionne uniquement pour ma propre configuration, si vous voulez tester ces fonctions, vous devez bufferisé votre propre profil XML dans ma variable strxml, grâce à la fonction WlanGetProfile.

    Enjoy !

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2008
    Messages : 10
    Points : 24
    Points
    24
    Par défaut Autre question please
    Super ton boulot ...

    J'ai deux petites questions :
    J'ai un panel PC qui tourne sur WIN CE 5.0.
    L'API est tres proche de l'API windows normal.

    1) Pourrais tu me filer un bout de code pour demarrer le WIFI, comme tu l'a fait ici.

    2) J'ai egualement besoin de changer le numero IP du panel PC par l'intermediaire de ma propre interface graphique et pas par le panneau de configuration.(l'utilisateur ne devra pas voir la fenetre pourri de windows qui lui demmande les nouvelles coordonnees IP du panel).
    Aurais tu une idee de comment faire ca? A priori l'API n'en parle pas...
    Si quelqu'un a une idee elle serait la bienvenue...
    Merci d'avance.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pertes de connexion WIFI avec QTdesigners
    Par netchose dans le forum PyQt
    Réponses: 2
    Dernier message: 17/04/2014, 18h47
  2. probléme de connexion wifi avec ubuntu
    Par supzero dans le forum Réseau
    Réponses: 0
    Dernier message: 20/04/2009, 13h48
  3. [Debian] Connexion wifi avec clés WPA
    Par gege2061 dans le forum Réseau
    Réponses: 8
    Dernier message: 14/10/2008, 22h03
  4. Problème de connexion Wifi avec mon pc portable
    Par alex6891 dans le forum Windows Vista
    Réponses: 7
    Dernier message: 12/10/2007, 15h24
  5. Connexion wifi avec SuSE10
    Par ms7 dans le forum Réseau
    Réponses: 2
    Dernier message: 17/05/2006, 13h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo