Salut, le code suivant me retourne un handle invalide sur le handle du fichier,
et le destructeur est appelé juste après l'assignation, avec hFile = le handle de fichier retourné par OpenFileEx dans le constructeur.
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
 
class MyFile
{
public:
    HANDLE hFile;
    MyFile(std::string filename)
    {
        hFile = CreateFile(filename.c_str(), GENERIC_READ, 0, NULL, OPEN_EXISTING, NULL, NULL);
    }
    MyFile()
    {
        hFile = NULL;
    }
    ~MyFile()
    {
        CloseHandle(hFile);
        // Breakpoint ici, il se produit juste après l'assignation et hFile est valide ici.
    }
};
 
MyFile fileA;
 
int _tmain(int argc, _TCHAR* argv[])
{
    fileA = MyFile("test.txt");
 
    char * buffer = new char[100];
    DWORD BytesRead = 0;
 
    ReadFile(fileA.hFile, buffer, 100, &BytesRead, NULL);
    int a = GetLastError();
    // Breakpoint ici, a = ERROR_INVALID_HANDLE
    delete[] buffer;
    return 0;
}
Donc la question est, est ce que mon compilo déc**** a plein tube, ou bien c'est moi qui n'ai rien compris ^^

Merci d'avance pour toutes les réponses.