begin process at 2012 05 30 19:59:43
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

Fichier & Disque

 > 

(win32)Fichier et buffer en lecture seule


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

(win32)Fichier et buffer en lecture seule

mercredi 27 janvier 2010 à 08:30:16 | (win32)Fichier et buffer en lecture seule

mogwai93

Bonjour

Je voudrais lire un fichier, placer le contenu de ce fichier dans un buffer
et modifier ce buffer (mais pas le fichier).

J'arrive bien à ouvrir le fichier et à le charger dans le buffer
or le buffer semble être en lecture seule
impossible de modifier un octet de ce buffer

voici la partie de code qui doit poser problème :
J'ai essayé avec PAGE_READONLY, FILE_MAP_WRITE|FILE_MAP_READ, mais je n'ai pas dû trouver la bonne combinaison


Code C/C++ :
hFile = CreateFile(Fichier_In, GENERIC_READ, FILE_SHARE_READ| FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
	MessageBox(hwnd, "Erreur CreateFile", "Info", MB_OK);
	return 0;
}
dwSize = GetFileSize(hFile, NULL);

hFileMapping = CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0, 0, NULL);
if (!hFileMapping)
{
	MessageBox(hwnd, "Erreur CreateFileMapping", "Info", MB_OK);
	CloseHandle(hFile);
	return 0;
}

lpMapStart = (LPBYTE)MapViewOfFile(hFileMapping, FILE_MAP_ALL_ACCESS, 0, 0, 0);
if (!lpMapStart)
{
	MessageBox(hwnd, "Erreur MapViewOfFile", "Info", MB_OK);
	CloseHandle(hFileMapping);
	CloseHandle(hFile);
	return 0;
}

Val = lpMapStart[0];		// Fonctionne : la valeur lue est correcte
lpMapStart[0] = 1;		// Plante

UnmapViewOfFile(lpMapStart);
CloseHandle(hFileMapping);
CloseHandle(hFile);



merci
mercredi 27 janvier 2010 à 10:39:40 | Re : (win32)Fichier et buffer en lecture seule

fregolo52

Membre Club
salut,

je connais mal les mémoires partagées, mais pourquoi ne fais-tu pas comme dans la MSDN (vu que tu as "dwSize") :
- 1er paramètre de CreateFileMapping : INVALID_HANDLE_VALUE
- tu stockes ton fichier dans un buffer (char *)
- tu copie ce buffer dans la mémoire partagée
jeudi 28 janvier 2010 à 21:18:24 | Re : (win32)Fichier et buffer en lecture seule

mogwai93

en fait, je m'étais plutôt inspiré de l'autre exemple :
MSDN

j'ai réussi en rajoutant GENERIC_WRITE au CreateFile

et en mettant dwSize en dernier paramètre de MapViewOfFile


Cette discussion est classée dans : fichier, buffer, file, hfile, hfilemapping


Répondre à ce message

Sujets en rapport avec ce message

Avis des PROS! [ par UnExPeCtEdSpy ] Bonjour,je suis plus familier du vb que du c++ alors j'vous d'mande de l'aide :J'utilise une Dll en c+ avec un prog en Vb qui manipule des fichiers.Qu Mettre un fichier .exe dans un buffer [ par guiguikun ] Je n'arrive pas a mettre un fichier executable en memoire.sur les 100Ko du fichier, mon buffer ne compte que les 3 premiers octets (caracteres)voici m envoi fichier via socket [ par elanspeech ] Bonjour,J'ai fait un client/serveur, la communication se passe bien. cependant, je ne parviens pas a envoyer plusieurs fichiers a la suite avec la soc ecrire ds un fichier [ par 69lion69 ] Salut a tous alor voila dans une application en api windows je créér un fichier et je copie le contenu dun tableau de float le fichier mais il ma'affi File Mapping entre 2 programmes [ par Arkadias ] Bonjour,Je développe une application ou il sera nécessaire à 2 programmes différents (mais éxecuté sur la même machine) d'échanger les données d'un bu fstream, >> et << [ par Roro8883 ] Bonjour à tous !J'ai un problème dans mon code avec la fonction fstream.Ca fait depuis un moment que je suis dessus et je trouve pas le problème.Si qu Sauter la ligne dans un fichier [ par xmustapha ] bonjour tout le monde comment faire pour sauter la ligne dans un fichier  dans la function WriteFile() (je suis sur C++ Builder 2007)j'ai essayer çain fin de fichier [ par poiuytrez3 ] Bonjour,Je suis en train de faire un programme qui lit des informations dans un fichier, mais je ne comprends pas, il me prend 2 fois le dernier éléme File source [ par BEAUBRIUS ] BonjourActuellement en IUT d'informatique , dans le cadre d'un projet j'aurais besoin de porter le programme 'file' sur un Nitendo DSMais pour cela , detours.h No such file [ par Equilibrius ] Bonjours tout le monde ! et Bonne Année 2008 !! :D Je commence l'année avec une erreur bien sympathique ^^ : <span style="font-size: 12pt;


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,718 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales