Bonjour à tous !!

Je débute depuis quelques jours l'assembleur et j'ai un léger souci avec WriteFile.

La chaîne de caractères contenue dans le fichier texte de destination n'est pas celle que j'attend.

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
 
TITLE Create_write_file : Creation et ecriture dans un fichier
 
.386
.model flat, stdcall
option casemap:none
 
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib
 
.data
 
File_Handle         DWORD       ?
Chaine              BYTE        "test d'ecriture dans un fichier",0
File_Name           BYTE        "exemple.txt",0
Nbr_Octet_Ecrit     DWORD       ? 										
BufSize=( $ - Chaine )
 
.code
 
start:
 
    INVOKE CreateFile, addr File_Name, GENERIC_WRITE, FILE_SHARE_READ, 0, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, 0
 
    mov File_Handle, eax
 
    INVOKE WriteFile, File_Handle, ADDR Chaine, BufSize , ADDR Nbr_Octet_Ecrit, 0
 
    INVOKE CloseHandle, File_Handle 
 
    INVOKE ExitProcess,0
 
END start
Lorsque j'ouvre le fichier exemple.txt avec le bloc note j'obtiens :
test d'ecriture dans un fichier exemple.txt
Bizarrement, WriteFile me rajoute le contenu de la variable "File_Name" dans mon fichier texte.
Et si dans le code source, je mets la variable "File_Name" au dessus de la variable "Chaine", ben dans ce cas j'ai pas le contenu de la variable "File_Name" qui se retrouve dans exemple.txt ...

Et si j'ouvre avec Wordpad, il y a 1 caractere en forme de rectange entre ... un fichier et exemple.txt ... et 4 caracteres identique apres exemple.txt o_O

J'ai passé le code sous Ollydbg et la fonction CreateFile me retourne bien un numero d'handle ( 00000010h ) et la fonction WriteFile me retourne 00000001h, ce qui a l'air normal.

Voila si quelqu'un avait une ptite idée ça serait sympa, car perso j'ai épuisé toute les miennes.

Merci d'avance ...

Bien à vous