سؤال

في نظام التشغيل Windows، من الممكن فتح الأجهزة ووحدات التخزين عبر CreateFile().لقد استخدمت هذا بنجاح من قبل ReadFile() من الأجهزة، ولكن الآن أريد التبديل إلى تعيين الذاكرة.في الكود التالي أتلقى INVALID_HANDLE_VALUE لقيمة b, ، و c تم ضبطه على 87, ERROR_INVALID_PARAMETER.

HANDLE a = ::CreateFileA("\\\\.\\h:", GENERIC_READ, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_READONLY | FILE_FLAG_NO_BUFFERING, NULL);
HANDLE b = ::CreateFileMappingA(a, NULL, PAGE_READONLY, 0, 0, NULL);
DWORD c = ::GetLastError();

كيف يمكنني الحصول على هذا للعمل؟

هل كانت مفيدة؟

المحلول

لا يمكنك.يمكن لـ CreateFileMapping إنشاء تعيين لملف فقط.ألقِ نظرة على الاختلاف في الوثائق بين معلمة hFile لـ إقرا الملف ولل إنشاء ملف مابينج.بالنسبة إلى ReadFile، فإنه يسرد جميع أنواع المقابض المختلفة التي يقبلها (والتي تتضمن الأجهزة)، أما بالنسبة إلى CreateFileMapping فإنه يسرد الملفات فقط.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top