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

C++ Discussion :

Handle et creatfile


Sujet :

C++

  1. #1
    Membre éclairé Avatar de Nono Sto
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 350
    Par défaut Handle et creatfile
    Hello World

    Je dois creer un fichier via create file et les handles. J'ai codé ceci qui ne genere aucune erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    TCHAR *argv[1]; 
    argv[0] = "E:\Test\log.txt"; 
    HANDLE hFile; 
    hFile = CreateFile(argv[0], 
                              GENERIC_ALL, 
                              FILE_SHARE_WRITE, 
                              NULL, OPEN_ALWAYS, 
                              FILE_ATTRIBUTE_NORMAL, 
                             NULL); 
    CloseHandle(hFile);
    Le disque E et le fichier test existent, mais rien ne ce passe auriez vous une idées SVP?

    Merci

  2. #2
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 281
    Par défaut
    Ton code ouvre le fichier et le ferme tout de suite. Tu as donc l'impression que rien ne se passe. Sous réserve que celui-ci s'ouvre bien, le retour n'étant pas testé.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par défaut
    Pi si le fichier existe déjà, tu testes comment sa création ? Ou tu testes juste l'ouverture ? Dans tous les cas, vérifier les retours de fonction est rarement optionel.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  4. #4
    Membre éclairé Avatar de Nono Sto
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 350
    Par défaut
    Merci

    Il ne fait que ouvrir le fichier je penser qu'avec createfile je creer le fichier...comment faire alors pour creer un fichier text avec ce Handle?

  5. #5
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Par défaut
    Dédoubler les '\' ?Et, bien sûr, comme déjà dit, vérifier la valeur de retour de CreateFile.
    La valeur de handle est-elle bien différente de INVALID_HANDLE_VALUE ?

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par défaut
    CreateFile peut créer un fichier (ce serait un peu con sinon vu son nom), en y passant les bon paramètres. Pour cela, suffit de lire la doc.
    Sinon pourquoi vouloir utiliser cette fonction quand std::fstream voire std::filesystem en C++17 existent ?
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  7. #7
    Membre éclairé Avatar de Nono Sto
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 350
    Par défaut
    avec un watch j'ai ceci:

    Je code sur une très veille archi avec VS2003, je dois passer par les handle.

  8. #8
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 281
    Par défaut
    Il serait plus logique d'avoir une fonction openfile pour ouvrir un fichier. C'était le cas avant il me semble, mais maintenant c'est createfile pour less 2.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  9. #9
    Membre éclairé Avatar de Nono Sto
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 350
    Par défaut
    Sur cette archi openfile fonctionne pas....handle obligatoire.

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par Nono Sto Voir le message
    avec un watch j'ai ceci:

    Je code sur une très veille archi avec VS2003, je dois passer par les handle.
    Doit-on t'accompagner à chaque étape ?
    Tu récupères un code d'erreur, exactement INVALID_HANDLE_VALUE qui est très clairement montré dans la doc. Même doc qui indique, comme pour quasiment tous les retours d'erreur de fonctions Windows, d'appeler GetLastError pour avoir plus d'information sur l'erreur en question... Puis de fil en aiguille tu sauras quel est ton problème.
    Quant à OpenFile, il a à priori les mêmes pré-requis.
    L'un retourne un HANDLE, l'autre un HFILE... mué bon à ce niveau c'est kifkif, c'est juste des identifiants nommés différemment... mais CreateFile est l'API conseillé, OpenFile est déprécié.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  11. #11
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 281
    Par défaut
    Donc Openfile existe toujours. Par contre :
    Note This function has limited capabilities and is not recommended. For new application development, use the CreateFile function.
    1er élement de la doc.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  12. #12
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 599
    Par défaut
    Bonjour,

    Parmi les erreurs, celles de la 1ère ligne du code ne me semblent pas avoir été signalées.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const TCHAR *argv[1] = { _T("E:\\Test\\log.txt") }; //
    Il faut un buffer pour mettre une chaîne, celui-ci doit contenir des TCHAR, ils sont const et il faut des doubles backslashs.
    D'ailleurs je comprends pas pourquoi la ligne 2 compilerait? En est bien C++ pas en C?

  13. #13
    Membre éclairé Avatar de Nono Sto
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 350
    Par défaut
    Je suis débutant. J'ai essayé GetLastError:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (hFile == INVALID_HANDLE_VALUE)
    {
    DWORD lasterror = GetLastError();
    }
    Mais j'arrive a avoir plus d'info.

  14. #14
    Membre éclairé Avatar de Nono Sto
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 350
    Par défaut
    Finalement j'ai reussi a faire fonctionner ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    const TCHAR *argv[1] = {("D:\\Test\\log.txt")}; 
    HANDLE hFile; 
    hFile = CreateFile(argv[0], 
                              GENERIC_ALL, 
                              FILE_SHARE_WRITE, NULL, 
                              OPEN_ALWAYS, 
                              FILE_ATTRIBUTE_NORMAL, 
                              NULL); 
    DWORD lasterror; 
    lasterror = GetLastError(); 
    CloseHandle(hFile);
    D est une sorte de disque virtuel. Maintenant je dois mount un les disque dur tel un E ou F....c'est expliquer dans la doc de mon bouzin.
    Avant de mettre le sujet en résolu j'ai un message d'erreur qui apparait a la fin d'execution du code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Main thread should not return.
    Si vous avez une idée SVP?

    Merci

  15. #15
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 599
    Par défaut
    Bonjour,

    "main thread should not return" ça fait penser à une application qui finirait la fonction main() ou WinMain() alors qu'il reste au moins un thread actif, ce qui amène le programme dans un état "pas vraiment terminé"!
    Alors, est-que tu as créé des thread? Et quel est ton environnement : Console, Fenêtré, MFC, Win32, ... ?

  16. #16
    Membre éclairé Avatar de Nono Sto
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 350
    Par défaut
    J'ai modifié mon main avec un retrun0; et sa marche. Merci

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 05/07/2003, 11h52
  2. Manipulation des handle contexte
    Par rockbiker dans le forum DirectX
    Réponses: 1
    Dernier message: 09/05/2003, 18h51
  3. Question sur les handles et les couleurs...
    Par MrDuChnok dans le forum C++Builder
    Réponses: 7
    Dernier message: 29/10/2002, 08h45
  4. pb de récup de handle à partir d'une dll
    Par yokito dans le forum Langage
    Réponses: 2
    Dernier message: 20/08/2002, 12h29
  5. pb de handle en C
    Par deedje dans le forum C
    Réponses: 3
    Dernier message: 21/06/2002, 16h19

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