Fichier de lecture asynchrone renvoyant ERROR_INVALID_HANDLE

la programmation


Essayer d’effectuer des E/S asynchrones sur un périphérique. Mon problème est que ReadFile renvoie ERROR_INVALID_HANDLE.

Je crois que Handle et OVERLAPPED hEvent sont initialisés, donc j’apprécierais beaucoup si quelqu’un pouvait me dire ce que je fais de mal.

Ce que j’ai essayé :

Voici le code que j’utilise :

HANDLE Handle = CreateFileA(
    ndisprot630,
    GENERIC_READ | GENERIC_WRITE,
    0,
    NULL,
    OPEN_EXISTING,
    FILE_FLAG_OVERLAPPED,
    NULL
);
if (Handle == INVALID_HANDLE_VALUE)
{
    DEBUGP("CreateFile failed, error 0x%x\n", GetLastError());
    return(INVALID_HANDLE_VALUE);
}

OVERLAPPED ol = { 0 };
ol.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
char buf[1500];

if (!ReadFile(Handle, buf, sizeof(buf), NULL, &ol))
{
    if (GetLastError() != ERROR_IO_PENDING)
    {
        DEBUGP("Error starting ReadFile 0x%x\n", GetLastError());
    }
}

Solution 1

Comme pour tout fichier en lecture/écriture ou en création, assurez-vous que le chemin du fichier dispose de vos droits d’accès, c’est-à-dire essayez de créer manuellement un fichier texte du bloc-notes à cet emplacement pour tester l’accès. Si cela échoue, tout le reste échouera avec une approche programmatique.

コメント

タイトルとURLをコピーしました