Здравствуйте Willi, Вы писали:
W>Здравствуйте Bill133, Вы писали:
B>>Здравствуйте Willi, Вы писали:
W>>>Здравствуйте Bill133, Вы писали:
B>>>>TCHAR *pGlobal;
B>>>>HANDLE hFile = INVALID_HANDLE_VALUE;
B>>>>HANDLE hMap = ::CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0, 8, "_OPC_DATE_");
B>>>>pGlobal =(TCHAR *):: MapViewOfFile(hMap,FILE_MAP_ALL_ACCESS,0,0,100);
B>>>>pGlobal[4100]=1; //ВСЕ компилируется но при работе программы на этой строчке выдает ошибку, (т.е. если адресс больше 4096)
B>>>>"Access violation at adress 00401D5C in module 'Proect1.exe'. Write address 011F1004."
W>>>По хорошему оно должно вылетать по ошибке в случае если ты адресуешь далше 8-го байта от pGlobal, посмотри что ты передаешь в качестве пятого памаетра в CreateFileMapping. Вылетает после после 4096 скорее всего потому, что минимальный размер страницы равен 4Kb, т.е. 4096 байт.
B>>В том то идело что какое бы значение dwMaximumSizeLow я бы не ставил, всеравно вылетает ошибка, и как увеличить минимальный размер страницы.
W>Размер страницы — никак.
W>Четвертый и пятый параметр CreateFileMapping задают размер маппинга.
W>Кроме того важное значение имеет последний параметр MapViewOfFile. Он определяет количество байт которое ты хочешь отбразить в свою память.
W>Вот так все работает
W>W> HANDLE hMap = ::CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, 8192, "_OPC_DATE_");
W> BYTE* pData = (LPBYTE)::MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, 0, 0, 8192);
W> pData[4100] = 1;
W> ::UnmapViewOfFile(pData);
W> ::CloseHandle(hMap);
W>
БОЛЬШОЕ СПАСИБО!!!!!!!