Ficher Memoire Pointeur

Résolu
Utilisateur anonyme - 10 août 2006 à 20:53
 Utilisateur anonyme - 10 août 2006 à 22:56
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

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
10 août 2006 à 21:12
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
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
10 août 2006 à 21:04
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++
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
10 août 2006 à 21:05
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
0
Utilisateur anonyme
10 août 2006 à 21:07
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 
0

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

Posez votre question
Utilisateur anonyme
10 août 2006 à 21:11
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 
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
10 août 2006 à 21:11
Tu as sans doute mal lu :)

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
Utilisateur anonyme
10 août 2006 à 21:17
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 
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
10 août 2006 à 21:34
0
Utilisateur anonyme
10 août 2006 à 21:36
ah oui :s bien vu :D
MaLaDeDeDe 97one 
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
10 août 2006 à 21:41
Rassure toi, il n'y a que vecchio pour trouver dans MSDN sur le net, j'en suis totalement incapable.

ciao...
BruNews, MVP VC++
0
Utilisateur anonyme
10 août 2006 à 21:44
Lo0oL oui je vois j'avais beau recherché "CreateFileMapping" ou "CreateFileMapping function"
ou "Create File Mapping function" je trouvais rien
MaLaDeDeDe 97one 
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
10 août 2006 à 21:59
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
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
10 août 2006 à 22:16
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++
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
10 août 2006 à 22:19
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
0
Utilisateur anonyme
10 août 2006 à 22:33
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 
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
10 août 2006 à 22:38
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
0
Utilisateur anonyme
10 août 2006 à 22:51
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 
0
Utilisateur anonyme
10 août 2006 à 22:52
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 
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
10 août 2006 à 22:53
Tu parles d'une bible!

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

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
Rejoignez-nous