begin process at 2012 05 29 02:26:39
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

API

 > 

CreateFile


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

CreateFile

mardi 11 mai 2004 à 19:23:46 | CreateFile

DeAtHCrAsH

J'ai un tableau contenant les valeurs ASCII d'un chaine de caractere.
J'aimerai ouvrir un fichier en binaire et y ecrire s'est valeur en binaire qui ont chacune un offset bien précis.

ex: Offset : 80
Valeur : 255

... et ainsi de suite ...

Comment faire ca en Win32 (CreateFile, SetFilePointer,WriteFile,...) et en C (fopen, fseek, write,...)?
Les deux methodes me vont.

Merci par avance

Samir
mardi 11 mai 2004 à 19:39:04 | Re : CreateFile

vecchio56

Administrateur CodeS-SourceS
je ne sais pas si c'est moi qui ai un problème, mais je trouve ton message incompréhensible. Qu'est ce que tu veux faire exactement, et pourquoi écrire 255 à l'offset 80?
mardi 11 mai 2004 à 19:40:54 | Re : CreateFile

DeAtHCrAsH

255 est la valeur ascii du caractere...
Et je veux ecrire cette valeur en binaire dans mon fichier que j'aura ouvert au préalable en binaire.
Puis faut mettre cette valeur a la position 80 (offset)

Samir
mardi 11 mai 2004 à 19:41:52 | Re : CreateFile

BruNews

Administrateur CodeS-SourceS
disons que tu as un buffer contenant du texte:
char szbuff[260]; // contient texte

HANDLE hfl;
DWORD len, d;
// ouvert ECRITURE et EXCLUSIF
hfl = CreateFile("D:\\tot.txt", GENERIC_WRITE, 0, 0,
CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
if(hfl == INVALID_HANDLE_VALUE) return;
// on ecrit la chaine complete
d = 0; // pour verif bonne ecriture
len = strlen(szbuff);
WriteFile(hfl, szbuff, len, &d, 0);
// on ferme fichier
CloseHandle(hfl);
if(len != d) MessageErreurEcriture

ciao...
BruNews, Admin CS, MVP Visual C++
mardi 11 mai 2004 à 19:50:22 | Re : CreateFile

DeAtHCrAsH

Et si je veux ecrire a partir du 80ieme octet je fais comment ?
mardi 11 mai 2004 à 19:54:50 | Re : CreateFile

BruNews

Administrateur CodeS-SourceS
DWORD val = 255;

derriere CreateFile:
SetFilePointer(hfl, 80, 0, FILE_BEGIN);
WriteFile(hfl, &val, 1, &d, 0);
et voila un octet(255) ecrit, simple non ?

ciao...
BruNews, Admin CS, MVP Visual C++
mardi 11 mai 2004 à 19:56:42 | Re : CreateFile

BruNews

Administrateur CodeS-SourceS
autre truc, change CREATE_ALWAYS pour OPEN_EXISTING si tui veux ecrire dans un fichier deja existant.

Regarde tous les flags possibles dans MSDN.

ciao...
BruNews, Admin CS, MVP Visual C++
mardi 11 mai 2004 à 20:02:43 | Re : CreateFile

DeAtHCrAsH

En fait ya encore un pb....
Je dispose d'un tableau de double...

ex: double Tab[2];
Tab[0] = 123456789123456 //Offset
Tab[1] = 255 //Valeur a ecrire

Voila ce dont je dispose ...
mardi 11 mai 2004 à 20:10:29 | Re : CreateFile

BruNews

Administrateur CodeS-SourceS
C'est bien d'avoir un tableau de doubles, si si...
tu ne vas pas ecrire un octet depuis une representation FPU, donc mets d'abord dans un DWORD avec un cast.
Si tu n'as que des probs de ce genre tu devrais y arriver.

ciao...
BruNews, Admin CS, MVP Visual C++
mardi 11 mai 2004 à 20:23:47 | Re : CreateFile

DeAtHCrAsH

Dis tout de suite que j'suis nul =)

Donc si j'ai tout bien saisie je fait:


HANDLE hfl;
DWORD d, offset, val;

// j'utilise un CAST
offset = (DWORD)Tab[0];
val = (DWORD)Tab[1];

// ouverture du fichier qui existe
hfl = CreateFile("D:\\tot.txt", GENERIC_WRITE, 0, 0,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if(hfl == INVALID_HANDLE_VALUE) return;

// je place le pointeur
SetFilePointer(hfl, offset, 0, FILE_BEGIN);

d = 0; // pour verif bonne ecriture

// j'ecris la valeur MAIS pourquoi ya un & devant val ??? Je passe en parametre la valeur pas l'adresse ?!
WriteFile(hfl, &val, 1, &d, 0);

// on ferme fichier
CloseHandle(hfl);



Bon ou pas bon ?

1 2

Cette discussion est classée dans : binaire, valeur, createfile, offset


Répondre à ce message

Sujets en rapport avec ce message

WriteBinaryData [ par ideosphere ] Bonjour voila je debute et là je m'interresse au creation de clé dans le registre.J'aimerais savoir comment creer une clé avec une valeur binaire, par Probleme c++ lire une byte Binaire =26 ou =13 [ par WINACreve ] Situation: Je fait un programme qui ouvre n'importe quel fichier et lit chacune de ces bytes 1 par 1 et garde en mémoire leurs valeur.Problème #1: lor ajout de zéro binaire [ par zelastwarrior ] bonjour bonjour, mon probleme cette fois ci est lié a un zéro binaire.j'explique : mon projet affiche a gauche de l'hexa à droite les caractères. (pro Lire,condition binaire [ par Suisse00 ] J'essai de faire en sorte de pouvoir récuprer une valeur binaire dans un fichier pour savoir quelle est sa valeur pour la comparer.Je ses seulement qu [VC++] Ecrire un define en binaire... [ par Bidman ] Bonjour,J'aimerai savoir comment faire pour écrire une valeur en binaire. Je m'explique, je suis entrain de créer des DEFINE pour une meilleure lectur Executer un fichier .reg [ par chinois0013 ] Bonjour,Je galere depuis quelques jours pour écrire une valeur binaire dans une clé de registre. Et je n'y arrive toujours pas ! Car je ne comprends p modifier la valeur d'un offset...? [ par mayti ] Bonjour, voilà dans mon projet je dois modifier par exemple la valeur hexa de l'offset 77C dans un exe précis, manuelement avec un éditeur hexa pas de handle de Createfile ET writefile [ par oudkaramla ] salut tout le mondej'ai un pepin avec le HANDLE DE createfile, en effet malgré que j'ai déclaré le handle comme variable globale, il perds sa valeur e Probleme pointeur ? [ par foxtrox ] Salut,J'essai de realiser un prog permettant de modifier une valeur d'offset dans un exécutable. Malheureusement il y a un point sur lequel je bloque AIDE!!!!!!!!programme c++ [ par aslauque ] je dois ecrire un programme en c++:1) déclare un entier et l'initialise à la valeur 262)affiche la valeur de cet entier à l'écran3)affiche l'adresse d


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,296 sec (4)

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