สมมติว่าฉันต้องการสร้างฟังก์ชัน wrapper ให้กับ สร้างไฟล์
ฟังก์ชันใหม่นี้ จะไม่ สร้างไฟล์จริงบนดิสก์ แต่ สร้างวัตถุการแมปไฟล์ และส่งคืนหมายเลขอ้างอิงไปยังวัตถุใหม่
ฉันได้ดูตัวอย่างนี้แล้ว การสร้าง Named Shared Memory และพยายามใช้ฟังก์ชันของฉัน:
#define BUF_SIZE 256
TCHAR szName[] = TEXT("Global\\MyFileMappingObject");
HANDLE MyCreateFile()
{
HANDLE hMapFile = CreateFileMapping(
INVALID_HANDLE_VALUE, // use paging file
NULL, // default security
PAGE_READWRITE, // read/write access
0, // maximum object size (high-order DWORD)
BUF_SIZE, // maximum object size (low-order DWORD)
szName); // name of mapping object
return hMapFile;
}
ปัญหา
สิ่งนี้ดูโอเคสำหรับฉัน แต่เมื่อลองใช้การส่งคืน HANDLE
ใน ReadFile ฉันได้รับรหัสข้อผิดพลาด 6 The handle is invalid.
คำถาม
อ็อบเจ็กต์การแมปไฟล์และอ็อบเจ็กต์ไฟล์สามารถใช้สลับกันได้หรือไม่ หากเป็นเช่นนั้น รหัสของฉันจะมีปัญหาอะไร ถ้าไม่มีความคิดว่าจะสามารถใช้งานฟังก์ชั่นดังกล่าวได้อย่างไร?
ReadFile
บนขอบเขตหน่วยความจำที่มีชื่อ มันควรจะใช้กับMapViewOfFile
- person   schedule 19.03.2015ReadFile
เป็นเพียงตัวอย่างของการใช้HANDLE
ที่ส่งคืนของMyCreateFile
มีไว้เพื่อแสดงให้เห็นว่าการใช้งานMyCreateFile
มีข้อผิดพลาด และฉันกำลังพยายามทำความเข้าใจว่าทำไม - person idanshmu   schedule 19.03.2015