|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
Creating a File View
To map the data from a file to the virtual memory of a process, you must create a view of the file. The MapViewOfFile and MapViewOfFileEx functions use the file-mapping object handle returned by CreateFileMapping to create a view of the file or a portion of the file in the process's virtual address space. These functions fail if the access flags conflict with those specified when CreateFileMapping created the file-mapping object.
The MapViewOfFile function returns a pointer to the file view. By dereferencing a pointer in the range of addresses specified in MapViewOfFile, an application can read data from the file and write data to the file. Writing to the file view results in changes to the file-mapping object. The actual writing to the file on disk is handled by the system. Data is not actually transferred at the time the file-mapping object is written to. Instead, much of the file input and output (I/O) is cached to improve general system performance. Applications can override this behavior by calling the FlushViewOfFile function to force the system to perform disk transactions immediately.
The MapViewOfFileEx function works exactly like the MapViewOfFile function except that it allows a process to specify the base address of the view of the file in the process's virtual address space in the lpvBase parameter. If there is not enough space at the specified address, the call fails. Therefore, if you must map a file to the same address in multiple processes, the processes should negotiate an appropriate address.
Windows NT: The lpvBase parameter must be an integral multiple of the system memory allocation granularity or the call fails. To obtain the system's memory allocation granularity, use the GetSystemInfo function, which fills in the members of a SYSTEM_INFO structure. Windows 95: Under Windows 95, the address is rounded down to the nearest integral multiple of the system's memory allocation granularity. For subsequent file views, if the address specified does not match the address to which Windows 95 mapped the file view, MapViewOfFileEx fails.
An application can create multiple file views from the same file-mapping object. A file view can be a different size than the file-mapping object from which it is derived, but it must be smaller than the file-mapping object. The offset specified by the dwOffsetHigh and dwOffsetLow parameters of MapViewOfFile must be a multiple of the allocation granularity of the system.
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
Создание Файлового Вида
Чтобы отображать данные от файла до виртуальной памяти процесса, Вы должны создать вид файла. MapViewOfFile И использование функций MapViewOfFileEx файловая-объектная ручка распределения возвращалась CreateFileMapping, чтобы создавать вид файла или часть файла в пространстве виртуального адреса процесса. Эти функции терпят неудачу если доступ сигнализирует конфликт с теми определенное когда CreateFileMapping создавал файловое распределение объекта.
Функция MapViewOfFile возвращает указатель в файловый вид. Разыменовывая указатель в дипазоне адресов определенных в MapViewOfFile, приложение может прочитать данные из файла и записывать данные в файл. Пишась в файловые результаты вида в изменениях в файловое распределение объекта. Фактическая запись в файл на диске прооперирована системой. Данные действительно не передается в то время файловое распределение объекта записано, чтобы. Взамен, большинство файлового ввода и выхода (В/В) кешированы, чтобы улучшать общее системное исполнение. Приложения могут аннулировать это поведение вызывая функцию FlushViewOfFile, чтобы заставлять систему, чтобы выполнять дисковые сделки немедленно.
Функция MapViewOfFileEx работает точно подобно MapViewOfFile функционировать за исключением того это это позволяет процесс, чтобы определять базовый адрес вида файла в пространстве виртуального адреса процесса в lpvBase параметр. Если нет достаточно пространства по определенному адресу, вызов терпит неудачу. Следовательно, если Вы должны отобразить файл в тот же адрес во многочисленных процессах, процессы должны провести переговоры подходящий адрес.
Windows NT: lpvBase параметр должно быть целым кратным степени детализации распределения системной памяти или вызов терпит неудачу. Для того, чтобы получать степень детализации распределения системной памяти, используйте функцию GetSystemInfo, которая заполняет участников структуры SYSTEM_INFO. Windows 95: Под Windows 95, адрес округлен в меньшую сторону в ближайшее целое кратное степени детализации распределения системной памяти. Для последующих файловых видов, если адрес не определял бы соответствует адресу на который Windows 95 отобразившее файловый вид, MapViewOfFileEx терпит неудачу.
Приложение может создать многочисленные файловые виды из того же файлового распределения объекта. Файловый вид может быть другим размером чем файловое распределение объекта из которых он произойден, но это должно быть меньшим чем файловое распределение объекта. Смещение определялось dwOffsetHigh и параметры dwOffsetLow MapViewOfFile должны быть кратное степени детализации распределения системы.
|
|
|
|
| |