[Visual studio c++] initialiser un HANDLE

Résolu/Fermé
daronmaster Messages postés 326 Date d'inscription vendredi 12 janvier 2007 Statut Membre Dernière intervention 11 mai 2009 - 5 mai 2008 à 20:30
daronmaster Messages postés 326 Date d'inscription vendredi 12 janvier 2007 Statut Membre Dernière intervention 11 mai 2009 - 11 mai 2008 à 17:55
Bonjour,

voila je suis en train de faire un petit projet sous visual studio 2008, c'est un projet du type "Win32 console application".

dans ce projet, j'utilise une fonction qui doit prendre plusieurs argument dont un HANDLE, or je ne trouve pas comment initialiser ce HANDLE.

à mon avis la difficulté vient du fait que c'est une application console win32 et que d'habitude se sont des projets utilisant des winform qui utilisent des HANDLE.

j'espère m'être bien exprimé, si tel n'est pas le cas faites le moi savoir.

merci pour votre aide
A voir également:

11 réponses

peut tu donner la fonction que tu utilise et sa liste d'arguments ?
si il s'agit d'un handle de fenetre et que tu n'en utilise pas tu peut passer la valeur NULL a priori, ensuite ca depend de la fonction bien sûr ;)
0
en fait le handle "WIFI" doit etre obtenu par "wlanOpenHAndle", une fonction que tu doit appeler avant.

https://docs.microsoft.com/en-us/windows/win32/api/wlanapi/nf-wlanapi-wlanopenhandle?redirectedfrom=MSDN

tu passe 1 ou 2 dans le parametre "clientversion" suivant la version de ton Windows,
puis en retour tu obtiendra dans "phClientHandle" le handle a utiliser dans la fonction suivante.

(une recherche google sur ces 2 noms de fonctions dervait te retourner quelques exemples, en fonction du language que tu utilise)

bon courage :)
0
daronmaster Messages postés 326 Date d'inscription vendredi 12 janvier 2007 Statut Membre Dernière intervention 11 mai 2009 44
6 mai 2008 à 11:37
bon ce qui est bien sur un forum c'"est que tu peux te repondre à toi meme :

dans WlanopenHandle si les deux dernier parametres sont à null alors la focntion retourne un code d'erreur donc pas d'initialisation à null pour out1 et out2.

bon ok pour mais maintenant j'ai ça comme message d'erreur:

Run-Time Check Failure #3 - The variable 'out2' is being used without being initialized.

et là je crois ne pa pouvoir m'aider alors "please help me"

comment initilaiser un pointeur sans le mettre à null ?
0
daronmaster Messages postés 326 Date d'inscription vendredi 12 janvier 2007 Statut Membre Dernière intervention 11 mai 2009 44
5 mai 2008 à 20:37
voici la fonction utilisée :

DWORD WINAPI WlanGetAvailableNetworkList(
__in HANDLE hClientHandle,
__in const GUID* pInterfaceGuid,
__in DWORD dwFlags,
__reserved PVOID pReserved,
__out PWLAN_AVAILABLE_NETWORK_LIST* ppAvailableNetworkList
);


le probleme c'est que le handle n epeut pas etre null

merci pour ton aide
-1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
daronmaster Messages postés 326 Date d'inscription vendredi 12 janvier 2007 Statut Membre Dernière intervention 11 mai 2009 44
5 mai 2008 à 20:44
au passage je suis aller voir sur la msdn et je ne voit pas comment faire
-1
bitrate Messages postés 439 Date d'inscription vendredi 25 avril 2008 Statut Membre Dernière intervention 22 mars 2011 98
5 mai 2008 à 21:03
comme indiqué sur MSDN le HANDLE demandé en entrée est retourné par la fonction WlanOpenHandle

faut juste appeler avant

++
-1
daronmaster Messages postés 326 Date d'inscription vendredi 12 janvier 2007 Statut Membre Dernière intervention 11 mai 2009 44
6 mai 2008 à 10:26
salut les gens, tout d'abord merci, ensuite encore besoin d'aide

voici la fameuse fonction à utiliser pour choper le handle :

DWORD WINAPI WlanOpenHandle(
__in DWORD dwClientVersion,
__reserved PVOID pReserved,
__out PDWORD pdwNegotiatedVersion,
__out PHANDLE phClientHandle
);

ma 1ère question (certainement bête) : PHANDLE est un pointer sur un HANDLE ?

2nde question : voici le code tel que je l'utilise:

PDWORD out1=NULL;

PHANDLE out2=NULL;

if (WlanOpenHandle(1,NULL,out1,out2) != ERROR_SUCCESS ) cout << "error openHandle" << endl;

PWLAN_AVAILABLE_NETWORK_LIST p;

char c1;

GUID g;

HRESULT res = CoCreateGuid(&g);

if (res != S_OK) cout << "erreur CoCreateGuid" << endl;

DWORD d = WlanGetAvailableNetworkList(*out2,(const GUID *)&g ,0x00000001,NULL,&p);

//la j'ai un switch sur le resultat d pour savoir si j'ai une erreur

lorsque je compile j'ai une erreur :

Unhandled exception at 0x00412128 in Scan.exe: 0xC0000005: Access violation reading location 0x00000000.

Scan étant le nom du projet

bon est-ce que cela viendrait du troisieme parametre de lWlanGetAvailableNetworkList ?



merci encore
-1
daronmaster Messages postés 326 Date d'inscription vendredi 12 janvier 2007 Statut Membre Dernière intervention 11 mai 2009 44
6 mai 2008 à 11:24
bon tout compte fait, je viens de voir que le message d'erreur dans la console etait "error openHandle" donc le probleme doit venir des argument passés. il me semble pourtant ne pas m'etre trompé.

je besoin de votre aide

merci
-1
daronmaster Messages postés 326 Date d'inscription vendredi 12 janvier 2007 Statut Membre Dernière intervention 11 mai 2009 44
6 mai 2008 à 11:51
voici mon nouveau code:

DWORD out1;

HANDLE out2;

DWORD d1 = WlanOpenHandle(2,null,&out1,&out2);

switch(d1){

case ERROR_INVALID_PARAMETER :cout <<" error: parameter" << endl;break;

case ERROR_NOT_ENOUGH_MEMORY :cout <<" error: memory allocation" << endl;break;

case ERROR_REMOTE_SESSION_LIMIT_EXCEEDED:cout <<" error: too much handle" << endl;break;

case ERROR_SUCCESS:cout << "no problem" << endl;break;

default: cout << "default" << endl;break;
}

PWLAN_AVAILABLE_NETWORK_LIST p;

char c1;

GUID g;

HRESULT res = CoCreateGuid(&g);

if (res != S_OK) cout << "error :CoCreateGuid" << endl;

DWORD d = WlanGetAvailableNetworkList(out2,(const GUID *)&g ,WLAN_AVAILABLE_NETWORK_INCLUDE_ALL_MANUAL_HIDDEN_PROFILES,NULL,&p);

switch(d){

case ERROR_SUCCESS : cout << " no problem " << endl;break;

case ERROR_INVALID_PARAMETER : cout << " error: parameter " << endl;break;

case ERROR_INVALID_HANDLE : cout << " error :handle " << endl;break;

case ERROR_NDIS_DOT11_POWER_STATE_INVALID : cout << " error :wifi turned off() " << endl;break;

//case RPC_STATUS : cout << " probleme ??? " << endl; exit(-1);break;

case ERROR_NOT_ENOUGH_MEMORY : cout << " error :memory allocation" << endl;break;

default:break;
}



/*

resultat dans la console (grace aux cout):

default
error :handle

ensuite une fenetre s'ouvre avec comme message d'erreur :

Windows has triggered a breakpoint in Scan.exe.

This may be due to a corruption of the heap, which indicates a bug in Scan.exe or any of the DLLs it has loaded.

This may also be due to the user pressing F12 while Scan.exe has focus.

The output window may have more diagnostic information.

on peut cliquer sur break ou continue

je fais continue et le programme termine


cela ne me satisfait pas car ça signifie qu'il y a toujours un pb avec le HANDLE



merci pour votre aide, je revient sur le forum ce soir, la je dois y aller

*/
-1
daronmaster Messages postés 326 Date d'inscription vendredi 12 janvier 2007 Statut Membre Dernière intervention 11 mai 2009 44
6 mai 2008 à 19:32
besoin d'aide please
-1
daronmaster Messages postés 326 Date d'inscription vendredi 12 janvier 2007 Statut Membre Dernière intervention 11 mai 2009 44
6 mai 2008 à 21:02
please
-1
daronmaster Messages postés 326 Date d'inscription vendredi 12 janvier 2007 Statut Membre Dernière intervention 11 mai 2009 44
11 mai 2008 à 17:55
je passe en résolu
-1