- •1. Библиотеки. Статическая библиотека. Создание.
- •2. Библиотеки. Статическая библиотека. Использование.
- •3. Библиотека. Динамическая библиотека. Создание.
- •4. Библиотека. Динамическая библиотека. Статическая загрузка.
- •5. Библиотека. Динамическая библиотека. Динамическая загрузка.
- •7. Библиотеки. Динамическая библиотека. Сравнение способов загрузки.
- •8.Использование файлов при создании программы.
- •9. Позиционирование при работе с файлами. Функция.
- •10. Отображение файла на памяти. Назвать назначения параметров в функции.
- •11. Управление памятью. Для чего используется.
- •12.Блокирование памяти. В каком случае используется. Функции для блокирования.
- •13.Управление памятью. Для чего используют функции:
- •14. Для чего создаются процессы. Функции.
- •15. Назначение функций:
- •16. Асинхронный ввод/вывод:
- •17. Для чего используются потоки. Функции
- •18. Приоритеты процессов и потоков. Функции:
- •19. Синхронизация потоков. Interlocked функции. Назначение функций:
- •20. Синхронизация потоков. Критические секции. Функции.
- •21. Использование Event для синхронизации. Функции:
- •22. Использование Semaphore для синхронизации. Функции:
- •23. Использование WaitableTimerдля синхронизации. Функции:
- •24) Управление процессом. Планирование и диспетчеризация.
- •25) Использование Mutex для синхронизации. Функции.
- •26) Сравнение сегментной и страничной адресации
- •27) Страничная организация памяти.
- •29) Локальная память компьютеров. Функции
- •30. Соглашения по вызову, объяснить следующие с, срр, fastcall, stdcall. Дайте рекомендации по использованию соглашения.
15. Назначение функций:
Функция FindFirstFile осуществляет поиск в директории файла, имя которого совпадает с заданным. FindFirstFile проверяем имена поддиректорий, также как и имена файлов.
HANDLE FindFirstFile(
LPCTSTR lpFileName, // указатель на имя файла
LPWIN32_FIND_DATA lpFindFileData // указатель на полученную информацию
);
lpFindFileData - Указывает на структуру WIN32_FIND_DATA, которая получает информацию о найденном файле или поддиректории. Структура может использоваться в последовательных вызовах FindNextFile или FindClose, чтобы сослаться на файл или директорию.
Функция FindNextFile продолжает файловый поиск, начатый в прошлом вызове функцией FindFirstFile.
BOOL FindNextFile(
HANDLE hFindFile, // хэндл поиска
LPWIN32_FIND_DATA lpFindFileData // указатель на структуру данных
// найденного файла
);
FindClose () - Эта функция достаточно проста. Выполняет действия по освобождению указателя на файл. Ее необходимость очевидна – чтобы не засорять память ненужными указателями и позволять работу с файлами другим процессам. В качестве ее единственного параметра передается указатель на ранее открытый файл.
BOOL FindClose( HANDLE hFindFile );
typedef struct _WIN32_FIND_DATA {
DWORD dwFileAttributes; // Атрибуты файла
FILETIME ftCreationTime; // Время создания
FILETIME ftLastAccessTime; //Время последнего доступа
FILETIME ftLastWriteTime; //Время последней записи в файл
DWORD nFileSizeHigh; //Верхний байт размера файла
DWORD nFileSizeLow; //Нижний байт размера файла
DWORD dwReserved0; //Зарезервировано
DWORD dwReserved1; //Зарезервировано
TCHAR cFileName[ MAX_PATH ]; //Имя файла
TCHAR cAlternateFileName[ 14 ]; //Имя файла для отображения в DOS (8:3)
} WIN32_FIND_DATA;
16. Асинхронный ввод/вывод:
Асинхронный ввод и вывод означает, что метод не блокируется до тех пор, пока операция ввода или вывода не будет завершена. Затем метод возвращает данные.С помощью асинхронного ввода и вывода пользователь может вызвать метод BeginRead. Основной поток продолжать выполнять другие операции и получает возможность обработки данных позже. Также множественные запросы ввода и вывода могут обрабатываться одновременно.
Чтобы сделать асинхронный ввод/вывод нужно:
1) Определить структуру
OVERLAPPED OV;
struct{
ULONG_PTR Internal; //код ошибки о STATUS_PERDING
ULONG_PTR InternalHigh; //количество переданных байтов
UNION{
Struct{ DWORD Offset; OffHigh; }
PVOID Pointer;
};
HANDLE hEvent;
} OVERLAPPED;
memset(OV, 0 , sizeof(OV));
2) В функции CreateFile() в поле флагов задать FILE_FLAG_OVERLAPPED и указать FILE_FLAG_NO_BUFFERING.
3) В буфер, куда читаются данные должен быть выровнян на границе размера сектора и кратен его размеру.
4)В функции ReadFile(WriteFile) – выставить последний параметр - адрес &OV и в функции GetLastError() – ERROR_TO_DENDING выставить в FALSE.