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 :

probleme avec CreateFileMapping ou MapViewOfFile


Sujet :

Windows

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 340
    Par défaut probleme avec CreateFileMapping ou MapViewOfFile
    bonjour,

    je desire utiliser CreateFileMapping et MapViewOfFile pour lire un fichier. Voici le 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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    #include <stdio.h>
    #include <windows.h>
    
    int
    main ()
    {
      char *file;
      HANDLE fm = NULL;
      int size;
      char *data;
    
      file = "test.menu";
      size = 1080;
      fm = CreateFileMapping(INVALID_HANDLE_VALUE,
                             NULL, /* default security */
                             PAGE_READONLY,
                             0,
                             (DWORD)size,
                             file);
      if (!fm) {
        printf ("error when creating\n");
        return 0;
      }
    
      data = MapViewOfFile(fm, FILE_MAP_READ, 0, 0, 0);
      if (!data) {
        printf ("error when viewing\n");
        CloseHandle(fm);
        return 0;
      }
    
      printf ("data : *%c*\n", *data);
    
      UnmapViewOfFile(data);
      CloseHandle(fm);
    
      return 0;
    }
    le fichier test.menu a une taille de 1080 octets et commence par un '<' (c'est un fichier xml)

    Quand j'execute le programme, il n'affiche rien (*data vaut 0).

    J'ai certainement du me tromper dans les valeurs des parametres de CreateFileMapping et MapViewOfFile

    quelqu'un voit-il le probleme ?

    merci

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 398
    Par défaut
    CreateFileMapping() ne s'emploie pas ainsi. Le dernier paramètre n'est pas lenom du fichier à ouvrir, mais le nom que tu donnes à ton File Mapping.

    Si tu veux faire un File Mapping vers un fichier, tu dois d'abord ouvrir le fichier en question avec CreateFile(), et passer le handle du fichier à CreateFileMapping().
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 340
    Par défaut
    en effet, avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      fd = CreateFile (file, FILE_READ_DATA, FILE_SHARE_READ,
                       NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
      fm = CreateFileMapping(fd,
                             NULL, /* default security */
                             PAGE_READONLY,
                             0,
                             (DWORD)size,
                             NULL);
    ca marche tres bien !

    merci !

Discussions similaires

  1. Probleme avec la copie des surfaces
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/01/2003, 10h33
  2. Problèmes avec le filtrage des ip
    Par berry dans le forum Réseau
    Réponses: 9
    Dernier message: 30/12/2002, 07h51
  3. probleme avec la touche F10
    Par b.grellee dans le forum Langage
    Réponses: 2
    Dernier message: 15/09/2002, 22h04
  4. Probleme avec fseek
    Par Bjorn dans le forum C
    Réponses: 5
    Dernier message: 04/08/2002, 07h17
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 08/06/2002, 23h06

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