
共享記憶體大小設成1024時沒問題,設定成10*1024時在meset這里報錯,為什么啊?
uj5u.com熱心網友回復:
除錯發現最多只能4*1024大小,再大就不行了
uj5u.com熱心網友回復:
1按系統頁面的整數倍來處理, 2 回傳的句柄 & 緩沖區指標要先判斷是否有效SYSTEM_INFO sysInfo;
GetNativeSystemInfo(&sysInfo);
int BUF_SIZE = 102400 * sysInfo.dwPageSize;
uj5u.com熱心網友回復:

到4096就崩潰
uj5u.com熱心網友回復:
windows系統有對共享記憶體大小限制嗎?我這只能設定到1kb,大于1kb訪問錯誤uj5u.com熱心網友回復:
int Test()
{
int iErr = 0;
TCHAR szName[]=TEXT("Global\\MyFileMappingObject");
SYSTEM_INFO sysInfo;
GetNativeSystemInfo(&sysInfo);
int BUF_SIZE = 102400 * sysInfo.dwPageSize;
HANDLE hMapFile = NULL;
LPVOID pBuf = NULL;
do
{
hMapFile = CreateFileMapping(
INVALID_HANDLE_VALUE, // use paging file
NULL, // default security
PAGE_READWRITE, // read/write access
0, // max. object size
BUF_SIZE, // buffer size
szName); // name of mapping object
if (hMapFile != NULL)
{
printf("CreateFileMapping %d (bytes) ok\n", BUF_SIZE);
}
else
{
iErr = GetLastError();
printf("Could not create file mapping object (%d).\n", iErr);
break;
}
pBuf = MapViewOfFile(hMapFile, // handle to map object
FILE_MAP_ALL_ACCESS, // read/write permission
0, 0, 0);
if (pBuf == NULL)
{
iErr = GetLastError();
printf("Could not map view of file (%d).\n", iErr);
break;
}
for(LONG i=0; i<BUF_SIZE; i++)
{
((BYTE*)pBuf)[i] = (BYTE)i;
}
printf("Write done\n");
_getch();
}while(0);
if(pBuf != NULL)
{
UnmapViewOfFile(pBuf);
pBuf = NULL;
}
if(hMapFile != NULL)
{
CloseHandle(hMapFile);
hMapFile = NULL;
}
return iErr;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/8975.html
標籤:進程/線程/DLL
上一篇:“初始化”: 無法從“char”轉換為“ATL::CStringT<BaseType,StringTraits>”
下一篇:奇怪現象
