Bonjour,
J'ai une fonction qui fait presque bien sont travail: le résultat d'écriture est bon mais le retour de la fonction WriteFile est 0 (donc false) et le nombre de Bytes écrit reste à zéro, j'utilise QT pour la lecture du fichier.
Remarque le fichier contenant des données à écrire contient des "\0"
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 boolean MyClass::writeFromFile(QString filepath) { Log *log = Log::getInstance(); qDebug() << "Openning file " << filepath; QFile file(filepath); if (!file.open(QIODevice::ReadOnly)) { qDebug() << "Error: File "<< filepath << " not found"; log->info("Error: File " + filepath + " not found"); return false; } qDebug() << "File "<< filepath << " found"; log->info("File " + filepath + " found"); QByteArray buffer = file.readAll(); file.close(); openBatDevice(); int retData = SetFilePointer(_batDevice, 0, NULL, FILE_BEGIN); if (retData == 0xFFFFFFF) { qDebug() << "Error: SetFilePointer is 0xFFFFFFF"; log->info("Error: SetFilePointer is 0xFFFFFFF"); return false; } DWORD nbOfByteWr; LPDWORD nNumberOfBytesToWrite; BYTE* data = (BYTE*) buffer.data(); DWORD dwLen = strlen(buffer.data()); DWORD dwBytesRead = (DWORD) buffer.size(); qDebug() << "INFO buffer data: " << buffer.data(); qDebug() << "INFO buffer size: " << buffer.size(); BOOL out = WriteFile(_batDevice, data, dwBytesRead, &nbOfByteWr, NULL); qDebug() << "INFO out: " << out; qDebug() << "INFO nbOfByteWr: " << nbOfByteWr; int errorId = (int) GetLastError(); qDebug() << "Error WriteSector : " + QString::number(errorId); qDebug() << "Error WriteSector : " + errorId; }
Retours:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Openning file "C:/Users/user/Documents/Projet/Project/Outils_project/projectExe/debug/clef_XXX.img" File "C:/Users/user/Documents/Projet/Project/Outils_project/projectExe/debug/clef_XXX.img" found INFO buffer data: INFO buffer size: 4198400 INFO out: 0 INFO nbOfByteWr: 0 Error WriteSector : Error WriteSector :
Merci d'avance! je sèche
Partager