Вход в Зоопарк ручных компьютеров
gps мониторинг, транспортная логистика, gps слежение
Не получается создать отображаемый в память файл :(
"Карманная" версия Базара

 
Начать новую тему   Ответить на тему    Список Базаров Форумы Handy.ru -> Программирование для КПК
Предыдущая тема :: Следующая тема  
Автор Сообщение
vroma

Гость





СообщениеДобавлено: Чт Авг 08, 2002 1:59    Заголовок сообщения: Не получается создать отображаемый в память файл :( Ответить с цитатой

Вот, почему-то не выходит создать отображаемый в память файл для WinCE 3.0 Sad

Когда открываю файл функцией CreateFile() и читаю его через ReadFile(), то все ОК.

Когда создаю в памяти проекцию абстрактного файла посредством m_hFileMap = CreateFileMapping((HANDLE)INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, dwFileSize, NULL), то все также ОК.

Но когда пытаюсь отобразить в память реально существующий файл

Код:

// открыть файл
m_hTabFile=CreateFile(TEXT("\\myfile.txt"),
                                  GENERIC_READ|GENERIC_WRITE,
                                  FILE_SHARE_READ|FILE_SHARE_WRITE,
                                  NULL,
        OPEN_EXISTING,   //CREATE_ALWAYS
                                 FILE_ATTRIBUTE_NORMAL,
                                 NULL);
...
// создать проекцию файла в памяти
m_hFileMap = CreateFileMapping(m_hTabFile, //(HANDLE)INVALID_HANDLE_VALUE
                                                 NULL,
                                                 PAGE_READWRITE, //PAGE_READONLY
                                                 0,
                                                 dwFileSize,
                                                 NULL);
if (m_hFileMap != NULL)
{
...
}

...


то получаю ошибку (6L) ERROR_INVALID_HANDLE.

Когда пытался задавать отличающиеся режимы доступа к файлу (в CreateFile(PAGE_READONLY), а в CreateFileMapping(PAGE_READWRITE)), то защита срабатывала - выдавалась ошибка
(5L) ERROR_ACCESS_DENIED. Выходит система файл видит.

Не пойму в чем проблема. Может кто сталкивался с подобным ?

P.S. А что это за файлы, находящиеся в корневом каталоге эмулятора Pocket PC 2002: CMMapG, CMMapP, GCounterFile.mmf ?
Вернуться к началу
Mobmax

Маститый писатель


Зарегистрирован: 07.10.2001
Сообщения: 233

СообщениеДобавлено: Чт Авг 08, 2002 3:49    Заголовок сообщения: Ответить с цитатой

Поменяй открытие файла с CreateFile на CreateFileForMapping - должно полегчать.

HANDLE CreateFileForMapping(
LPCTSTR lpFileName,
DWORD dwDesiredAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreationDisposition,
DWORD dwFlagsAndAttributes,
HANDLE hTemplateFile );

Вот он какой северный олень... Smile

_________________
Best regards,
Mobile Max
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Гость







СообщениеДобавлено: Чт Авг 08, 2002 4:20    Заголовок сообщения: Ответить с цитатой

Заработало.

Спасибо, Mobmax Smile
Вернуться к началу
Показать сообщения:   
Начать новую тему   Ответить на тему    Список Базаров Форумы Handy.ru -> Программирование для КПК Часовой пояс: GMT - 10
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете добавлять вложения в этом форуме
Вы можете просматривать вложения в этом форуме



Форумы Handy.ru 


Powered by phpBB © 2001 phpBB Group