Содержание
- 2. Файлы BOOL ReadFile( HANDLE hFile, // Дескриптор файлу (повертається функцією CreateFile) LPVOID lpBuffer, // Буфер для
- 3. Файлы Функції для пошуку файлів та каталогів: Пошук першого файлу, який задовольняє заданій масці: HANDLE FindFirstFile(
- 4. Файлы Пошук наступного файлу, який задовольняє масці: BOOL FindNextFile( HANDLE hFindFile, // Дескриптор файлу LPWIN32_FIND_DATA lpFindFileData
- 5. Проверка целостности Пусть есть программа Add_Crc.exe, которая добавляет в конец проверяемого файла lab1.dll его CRC (будет
- 6. dllmain.cpp #include "stdafx.h" #include "tchar.h" #include // After .dll will be created command file test.bat calls
- 7. dllmain.cpp // продолжение предыдущего слайда Low=GetFileSize(hFile,&High); int counter=(Low-4)/4; int rem=Low%4; for(int i=0;i { ReadFile(hFile,&data,4,&real,0); crc=(crc+data)%0xffff; }
- 8. Файл dllmain.cpp. Точка входа в ДЛЛ. // продолжение предыдущего слайда BOOL APIENTRY DllMain( HMODULE hModule, DWORD
- 9. СРЕДА VІSUAL STUDІО И КОМАНДНЫЕ ФАЙЛЫ
- 10. …………………………….. int _tmain(int argc, _TCHAR* argv[]) { // If DLL was substituted LoadLibrary returns NULL hLib=LoadLibrary(_T("DLL_itself.dll"));
- 11. Просмотр кода .dll
- 12. Лекция 8 Процессы. Межпроцессное взаимодействие.
- 13. Процессы Создание и завершение процессов; Дополнительные функции для работы с процессами; Взаимодействие между процессами (IPC -
- 14. Процессы Процесс – это приложение (программа), которая выполняется процессором. При создании процессу выделяется адресное пространство, где
- 15. Процессы Для каждого процесса в системной области памяти (в области ядра) хранится следующая информация: - объект
- 16. Wait –функции проверяют состояние(я) указанного(ых) объекта(ов). Для некоторых объектов ядра меняют состояние. DWORD WaitForSingleObject( HANDLE hHandle,
- 17. TCHAR CommandLine [MAX_PATH] = _T("notepad.exe"); STARTUPINFO StartupInfo = {sizeof (StartupInfo)}; //структура с полями PROCESS_INFORMATION ProcessInformation; //структура
- 18. Все ресурсы, которые выделены процессу (окна, кучи...) освобождаются. Все потоки, созданные процессом, в том числе первоначальный,
- 19. #include "stdafx.h" #include #include // программа запускает notepad.exe, ждет пока пользователь его не закроет, #include //
- 20. if (!b) { printf("Error\n"); return -1; } // продолжение предыдущего слайда WaitForSingleObject(pi.hProcess,INFINITE); CloseHandle(pi.hThread);CloseHandle(pi.hProcess); HANDLE hFile; TCHAR
- 21. while (1){ // продолжение предыдущего слайда FileTimeToLocalFileTime(&FindFileData.ftCreationTime,&ft); unsigned _int64 CreateTime= ((unsigned _int64)ft.dwHighDateTime if (CreateTime>MinTime){ _tprintf(_T("%s\n"),FindFileData.cFileName); #ifdef
- 22. 3 проблемы для решения: Использование общих данных разными процессами (FіleMappіng, Envіronment Variables, командная строка) Корректное использование
- 23. DWORD GetEnvironmentVariable(LPCTSTR lpName, LPTSTR lpBuffer, DWORD nSize ); BOOL SetEnvironmentVariable(LPCTSTR lpName, LPCTSTR lpValue); Пример: #include "windows.h"
- 24. x=2; Использование общей памяти. Гонки (Race Conditions)
- 25. Определение. Участок кода называется критическим, если его выполнение одновременно должен делать только один процесс (эксклюзивный доступ,
- 26. Никакие 2 процесса не могут одновременно войти в КС Никаких предположений о скорости выполнения и количестве
- 27. Использование общей переменной для блокирования Способы реализации КС. 1 способ Постоянно требует времени процессора для проверки
- 29. Скачать презентацию