![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| MaXL |
|
||||
![]() Developer ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 24.10.2005 Где: Владивосток Репутация: 1 Всего: 2 |
Вот тут такая проблема:
моя программа открывает файл для чтения, проецирует его в файл, закрывает файл. Вот код:
Затем программа сохраняет этот "проецируемый в память" файл на диск. Вот таким кодом:
Так вот, вроде бы всё нормально, должно работать. Но если я пытаюсь сохранить в тот же файл(который и открывал), то CreateFile возвращает ошибку(использовав GetLastError и FormatMessage узнал): "Запрошенную операцию нельзя выполнить для файлы с открытой сопоставленной секцией". Ну а если я сохраняю под любым другим именем, то всё отлично сохраняется. Так вот у меня есть догадка, что просто навсего так и должно быть, т.е. если мы файл отобразили в памяти, то пока он там будет, его нельзя второй раз открывать/удалять. Но может быть и нет. Кто скажет в чём проблема ? -------------------- MaXL |
||||
|
|||||
| NiJazz |
|
|||
![]() Jazz coder ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2286 Регистрация: 10.8.2003 Где: Москва Репутация: 6 Всего: 23 |
Это как понять? Пытаешься писать туда данные? Когда файл проецируется в память, то с помощью MapViewOfFile можно получить указатель на данные файла, работая с ним как с блоком памяти. Чтобы изменения сохранились, нужно вызвать UnmapViewOfFile. WriteFile использовать не нужно! |
|||
|
||||
| MaXL |
|
|||
![]() Developer ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 24.10.2005 Где: Владивосток Репутация: 1 Всего: 2 |
NiJazz, т.е. чтобы не сохранить сделанные изменения в тот же файл, то нужно вызвать UnmapViewOfFile ? а что сохранить просто в файл, использовать вышеприведённый метод(с CreateFile) ?
============================== Всё работает. NiJazz спасибо. Сделал так: проверяю, если имя файла, такое же и при открытии, ты вызываю UnmapViewOfFile, а потом опять загружаю тот же файл в память; а если имя файла дургое, то использую метод с WriteFile. Это сообщение отредактировал(а) MaXL - 29.8.2007, 19:51 -------------------- MaXL |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |