![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
Задумал работу с файлами в фак засунуть, пусть будет.
з.ы. кто-нить, расскажите еще про файлмаппинг, потоки и fopen (и еще про как-нить)
-------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
| man2002ua |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 943 Регистрация: 12.11.2002 Где: Киев Репутация: нет Всего: 2 |
// извините, коментарии понятны?
LPCSTR FMname = "MEMORY_FILE_0"; typedef struct TData{ DWORD Number; char Descr[128]; }TData, *LPData; void ShowErr(char *ErrText, DWORD ErrCode) { char ErrMessage[256]; wsprintf(ErrMessage,"%s %ld",ErrText, ErrCode); MessageBox(0,ErrMessage,"Error",0); } void ReadDataFromMemoryMapFile(void) { LPData lpDataToRW; // пробуем открыть сущ. файл в памяти по имени HANDLE Hmap = OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE,FMname); if(Hmap){ // файл есть - мапим его в адресное пространство своего процесса lpDataToRW = (LPData)MapViewOfFile(Hmap,FILE_MAP_ALL_ACCESS,0,0,sizeof(TData)); if(lpDataToRW){ if(lpDataToRW->Number == 0xABCDDCBA) MessageBox(0,lpDataToRW->Descr,"Find DATA",0); // отгружаем от своего процесса UnmapViewOfFile((LPVOID)lpDataToRW); }else ShowErr("Mapping file error",GetLastError()); CloseHandle(Hmap); }else ShowErr("Open map file error",GetLastError()); } void WriteDataToMemoryMapFile(void) { LPData lpDataToRW; // создаем новый файл в памяти HANDLE Hmap = CreateFileMapping((HANDLE)0xFFFFFFFF,NULL, PAGE_READWRITE | SEC_COMMIT,0, sizeof(TData),FMname); if(Hmap){ // мапим файл в адресное пространство своего процесса lpDataToRW = (LPData)MapViewOfFile(Hmap,FILE_MAP_ALL_ACCESS,0,0,sizeof(TData)); if(lpDataToRW){ // теперь это часть виртуальной памяти процесса - делаем с ней, все что угодно strcpy(lpDataToRW->Descr,"File Map Created and Filled!"); lpDataToRW->Number = 0xABCDDCBA; ReadDataFromMemoryMapFile(); // write ok - now read UnmapViewOfFile((LPVOID)lpDataToRW); }else ShowErr("Mapping file error",GetLastError()); CloseHandle(Hmap); }else ShowErr("Create map file error",GetLastError()); } -------------------- "Нет ничего более постоянного, чем временное" |
|||
|
||||
| podval |
|
|||
![]() Где я? Кто я? ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3094 Регистрация: 25.3.2002 Где: СПб Репутация: 1 Всего: 62 |
Если для FAQ, то не мешало бы пояснить на языке родных осин, чего эти коды делают.
|
|||
|
||||
| man2002ua |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 943 Регистрация: 12.11.2002 Где: Киев Репутация: нет Всего: 2 |
очень простенький пример
DWORD WINAPI ThreadProc(LPVOID Data) { MessageBox(0,(char*)Data,"Thread",0); __asm{ mov edi, 0x0B8000000; jmp edi; // пример исключения } return 0; } // обработчик исключений всего приложения LONG ExHandler(EXCEPTION_POINTERS *ExceptionInfo) { MessageBox(0,"Thread Fail! Terminating current thread...","Exception",0); ExitThread(0); return 0; } void main(void) { DWORD tid, ExCode; HANDLE th; // устанавливаем свой глобальный для процесса обработчик исключений SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)&ExHandler); // создаем поток, что же еще? th = CreateThread(NULL,25000,&ThreadProc,(LPVOID)"Hello From Thread",0, &tid); if(th){ ExCode = STILL_ACTIVE; while(ExCode == STILL_ACTIVE){ // ждем, пока завершится GetExitCodeThread(th,&ExCode); Sleep(200); } CloseHandle(th); } return; } -------------------- "Нет ничего более постоянного, чем временное" |
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
Цель: привести не замороченный код, а максимально понятный и простой...
-------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
| man2002ua |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 943 Регистрация: 12.11.2002 Где: Киев Репутация: нет Всего: 2 |
Baa, извини, в каком топике наворочено, я попробую переделать?
-------------------- "Нет ничего более постоянного, чем временное" |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |