ملف قراءة غير متزامن يُرجع ERROR_INVALID_HANDLE


محاولة إجراء إدخال/إخراج غير متزامن على الجهاز. مشكلتي هي أن ReadFile يُرجع ERROR_INVALID_HANDLE.

أعتقد أنه تمت تهيئة كل من Handle وOVERLAPPED hEvent، لذا سأكون ممتنًا للغاية لو تمكن شخص ما من إخباري بالخطأ الذي أفعله.

ما حاولت:

هذا هو الرمز الذي أستخدمه:

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());
    }
}

الحل 1

كما هو الحال مع أي ملف للقراءة/الكتابة أو الإنشاء، تأكد من أن مسار الملف يتمتع بحقوق الوصول الخاصة بك للبدء به، أي حاول إنشاء ملف نصي للمفكرة في ذلك الموقع يدويًا لاختبار الوصول. إذا فشل ذلك فإن كل شيء آخر سوف يفشل مع النهج البرمجي.

コメント

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