मैं एक 64 बिट प्रक्रिया में MapViewOfFile का उपयोग करने की कोशिश कर रहा हूं जो पहले से ही 32 बिट प्रक्रिया की स्मृति में मैप किया गया है। यह विफल रहता है और मुझे "पहुंच से वंचित" त्रुटि देता है। क्या यह एक ज्ञात विंडोज सीमा है या क्या मैं कुछ गलत कर रहा हूं? समान कोड 2 32 बिट प्रक्रियाओं के साथ ठीक काम करता है।MapViewOfFile 32 बिट और 64 बिट प्रक्रियाओं के बीच साझा किया गया
कोड तरह इस तरह दिखता है:
hMapFile = OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, szShmName);
if (NULL == hMapFile)
{ /* failed to open - create new (this happens in the 32 bit app) */
SECURITY_ATTRIBUTES sa;
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.bInheritHandle = FALSE;
/* give access to members of administrators group */
BOOL success = ConvertStringSecurityDescriptorToSecurityDescriptor(
"D:(A;OICI;GA;;;BA)",
SDDL_REVISION_1,
&(sa.lpSecurityDescriptor),
NULL);
HANDLE hShmFile = CreateFile(FILE_XXX_SHM,
FILE_ALL_ACCESS, 0,
&sa,
OPEN_ALWAYS, 0, NULL);
hMapFile = CreateFileMapping(hShmFile, &sa, PAGE_READWRITE,
0,
SHM_SIZE,
szShmName);
CloseHandle(hShmFile);
}
// this one fails in 64 bit app
pShm = MapViewOfFile(hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, SHM_SIZE);
क्या आपने जांच की है कि पथ वर्चुअलस्टोर निर्देशिका पर रीडायरेक्ट हो रहा है या नहीं? प्रक्रिया मॉनीटर मदद कर सकता है। – bk1e