Ficher Memoire Pointeur

Résolu
-
 Utilisateur anonyme -
Bonjour je voudrais savoir comment mettre un fichier en memoire vive et avoir un pointeur vers l'adresse memoire ou commence le fichier :)

Je connais les fonction du C lier a la structure FILE.....CreateFile de Win32 mais je sais pas comment retrouvé l'adresse ou commence le debut de mon fichier dans la vive.
MaLaDeDeDe 97one 

21 réponses

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
10
C'est le cinquième argument. Mais tu as aussi vite fait de faire un ReadFile de tout le fichier

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
CreateFile() ne met rien en mémoire, il retourne seulement le handle identifaint le fichier.
SetFilePointer() pour te déplacer dans le fichier.

ciao...
BruNews, MVP VC++
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
10
Tant que tu fais pas de ReadFile, il est pas en mémoire. Pour avoir un pointeur sans ReadFile, tu peux utiliser CreateFileMapping et MapViewOfFile

_____________________________________
Un éditeur de ressources gratuit pour Windows

Voila je m'éttait intéréssé CreateFileMapping  mais j'ai vu sur la MSDN que c'était pour windows CE seulement alors j'ai oublié CreateFileMapping 
Comment cela ce fait-il ?

MaLaDeDeDe 97one 

En faite au final je veux mettre à jour une resource en la remplacant par un fichier.
Donc je voudrais le pointeur vers le fichier qui remplacera la resource afin de l'utilisé dans le 4eme argument de UpdateResource();

MaLaDeDeDe 97one 
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
10
Tu as sans doute mal lu :)

_____________________________________
Un éditeur de ressources gratuit pour Windows

OK je vais faire un ReadFile de tout le fichier.
et oui pour UptadeResource c'est le 5eme argument j'ai mal compté lol.

Sinon j'ai bien lu pour CreateFileMapping: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wcedata5/html/wce50lrfcreatefilemapping.asp

MERCI pour toute vôs reponse rapide je les validerés aprés verification.
MaLaDeDeDe 97one 
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
10

ah oui :s bien vu :D
MaLaDeDeDe 97one 
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
Rassure toi, il n'y a que vecchio pour trouver dans MSDN sur le net, j'en suis totalement incapable.

ciao...
BruNews, MVP VC++

Lo0oL oui je vois j'avais beau recherché "CreateFileMapping" ou "CreateFileMapping function"
ou "Create File Mapping function" je trouvais rien
MaLaDeDeDe 97one 
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
10
C'est vrai faut vraiment le vouloir pour trouver
1) je cherche cette chaine: CreateFileMapping site:msdn.microsoft.com
2) Je prends le troisième lien
3) On trouve enfin un lien pour CreateFileMapping

Ya tellement de liens dans tous les sens que Google doit plus trop s'y retrouver
Il y a aussi cette page: http://windowssdk.msdn.microsoft.com/en-us/library/ms685007.aspx
C'est la même avec une mise en page différente, bizarre...

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
Le plus fort c'est que les fonctions comme CreateFileMapping ne se trouvent pas au même endroit dans la version MSDN installée sur disque et celle sur le net.
Faut avouer que la version installée est très nettement plus confortable, on trouve tout illico sans une multitude de liens à fouiller.

ciao...
BruNews, MVP VC++
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
10
D'autant plus qu'on peut la télécharger gratuitement ici

Mais le fichier d'aide fourni avec le PSDK est très bien aussi pour les API

_____________________________________
Un éditeur de ressources gratuit pour Windows

Pouvez-vou m'aider SVP ReadFile bloque le programme :'(

HANDLE hFile=CreateFile("file.txt",    // name of file
    GENERIC_READ | GENERIC_WRITE,      // access mode
    0,                                 // share mode
    NULL,                              // default security
    OPEN_EXISTING,                     // create flags
    FILE_ATTRIBUTE_NORMAL,             // file attributes
    NULL);                             // no template


    char buffer[GetFileSize(hFile, NULL)];
    ReadFile(hFile, buffer, GetFileSize(hFile, NULL),NULL, NULL);



MaLaDeDeDe 97one 
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
10
char buffer[GetFileSize(hFile, NULL)];
Pas bien, alloue plutot dans le tas

Pourquoi appeler deux fois GetFileSize?
Le 4e arg de ReadFile est obligatoire

_____________________________________
Un éditeur de ressources gratuit pour Windows

Merci vecchio56 pour le 4eme argument c'est que mon livre la bible du programmeur ma induit a l'erreur parceque il a marqué: "adresse du nombre d'octect a lire" et non "adresse du DWORD contenent d'octect lu" -_-'

La prochaine fois j'irais tous voir sur la msdn^^
Sinon merci j'arive a mettre a jour ma resource :D
MaLaDeDeDe 97one 

et aufaite pour charger le buffer sur le tas et non sur la pile c'est bien comme cela ?
far char buffer[GetFileSize(hFile, NULL)];

MaLaDeDeDe 97one 
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
10
Tu parles d'une bible!

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
10
Non pour allouer dans le tas c'est avec new ou malloc, ou encore HeapAlloc en Win32

_____________________________________
Un éditeur de ressources gratuit pour Windows