|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
Creating Named Shared Memory
The first process calls the CreateFileMapping function to create a file-mapping object and give it the name MyFileMappingObject. By using the PAGE_READWRITE flag, the processes will have read/write permission to the memory through any file views that are created.
HANDLE hMapFile; hMapFile = CreateFileMapping(hFile, // Current file handle. NULL, // Default security. PAGE_READWRITE, // Read/write permission. 0, // Max. object size. 0, // Size of hFile. "MyFileMappingObject"); // Name of mapping object. if (hMapFile == NULL) { ErrorHandler("Could not create file-mapping object.");
}
The process then uses the file-mapping object handle returned by CreateFileMapping in the call to MapViewOfFile to create a view of the file in the process's address space. The MapViewOfFile function returns a pointer to the file view.
LPVOID lpMapAddress; lpMapAddress = MapViewOfFile(hMapFile, // Handle to mapping object. FILE_MAP_ALL_ACCESS, // Read/write permission 0, // Max. object size. 0, // Size of hFile. 0); // Map entire file. if (lpMapAddress == NULL) { ErrorHandler("Could not map view of file."); }
The second process calls the OpenFileMapping function with the name MyFileMappingObject to use the same file-mapping object as the first process. Like the first process, the second process uses the MapViewOfFile function to obtain a pointer to the file view.
HANDLE hMapFile; LPVOID lpMapAddress; hMapFile = OpenFileMapping(FILE_MAP_ALL_ACCESS, // Read/write permission. FALSE, // Do not inherit the name "MyFileMappingObject"); // of the mapping object. if (hMapFile == NULL) { ErrorHandler("Could not open file-mapping object."); } lpMapAddress = MapViewOfFile(hMapFile, // Handle to mapping object. FILE_MAP_ALL_ACCESS, // Read/write permission.
0, // Max. object size. 0, // Size of hFile. 0); // Map entire file. if (lpMapAddress == NULL) { ErrorHandler("Could not map view of file."); }
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
Создание Поименованное Распространяло Память
Первый процесс называет функцию CreateFileMapping, чтобы создавать файловое распределение объекта и давать это имя MyFileMappingObject. Используя флаг PAGE_READWRITE, процессы прочитали/писать разрешение в память через любые файловые виды, которое создано.
ПРООПЕРИРУЙТЕ hMapFile; hMapFile = CreateFileMapping(hFile, // ФАЙЛОВАЯ ручка Течения. НЕДЕЙСТВИТЕЛЬНАЯ, // безопасность Невыполнения. PAGE_READWRITE, // Прочитавшее/разрешение записи. 0, // Объектный размер Max.. 0, // Размер hFile. "MyFileMappingObject"); // Имя распределения объекта. если (hMapFile == НЕДЕЙСТВИТЕЛЬНЫЙ) { ErrorHandler("Could НЕ создает файловое распределение объекта.");
}
Процесс затем использует файловую-объектную ручку распределения возвращанную CreateFileMapping на вызов на MapViewOfFile, чтобы создавать вид файла в пространстве адреса процесса. Функция MapViewOfFile возвращает указатель в файловый вид.
LPVOID lpMapAddress; lpMapAddress = MapViewOfFile(hMapFile, // РУЧКА в распределение объекта. FILE_MAP_ALL_ACCESS, // Прочитавшее/разрешение записи 0, // объектный размер Max.. 0, // Размер hFile. 0); // Целый файл Карты. если (lpMapAddress == НЕДЕЙСТВИТЕЛЬНЫЙ) { ErrorHandler("Could не вид карты файла."); }
Второй процесс называет функцию OpenFileMapping с именем MyFileMappingObject, чтобы использовать то же файловое распределение объекта как первый процесс. Подобно первому процессу, второй процесс использует функцию MapViewOfFile, чтобы получать указатель в файловый вид.
ПРООПЕРИРУЙТЕ hMapFile; LPVOID lpMapAddress; hMapFile = OpenFileMapping(FILE_MAP_ALL_ACCESS, // ПРОЧИТАВШЕЕ/разрешение записи. ЛОЖЬ, // не наследует имя "MyFileMappingObject"); // распределения объекта. если (hMapFile == НЕДЕЙСТВИТЕЛЬНЫЙ) { ErrorHandler("Could НЕ файловое распределение открытого объекта."); } lpMapAddress = MapViewOfFile(hMapFile, // РУЧКА в распределение объекта. FILE_MAP_ALL_ACCESS, // Прочитавшее/разрешение записи.
0, // Объектный размер Max.. 0, // Размер hFile. 0); // Целый файл Карты. если (lpMapAddress == НЕДЕЙСТВИТЕЛЬНЫЙ) { ErrorHandler("Could не вид карты файла."); }
|
|
|
|
| |