- •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. Дайте рекомендации по использованию соглашения.
14. Для чего создаются процессы. Функции.
На данный момент это основная функция запуска процесса, все остальные функции такие как WinExec и LoadModule оставлены для совместимости и используют CreateProcess.
BOOL CreateProcess
(
LPCTSTR lpApplicationName, // имя исполняемого модуля
LPTSTR lpCommandLine, // Командная строка
LPSECURITY_ATTRIBUTES lpProcessAttributes, // Указатель на структуру //SECURITY_ATTRIBUTES
LPSECURITY_ATTRIBUTES lpThreadAttributes, // Указатель на структуру //SECURITY_ATTRIBUTES
BOOL bInheritHandles, // Флаг наследования текущего процесса
DWORD dwCreationFlags, // Флаги способов создания процесса
LPVOID lpEnvironment, // Указатель на блок среды
LPCTSTR lpCurrentDirectory, // Текущий диск или каталог
LPSTARTUPINFO lpStartupInfo, // Указатель на структуру STARTUPINFO
LPPROCESS_INFORMATION lpProcessInformation // Указатель нас структуру //PROCESS_INFORMATION
);
lpApplicationName. Указатель на строку которая заканчивается нулем и содержит имя выполняемого модуля. Этот параметр может быть NULL тогда имя модуля должно быть в lpCommandLine самым первым элементом. Если операционная система NT и модуль 16 разрядов этот параметр NULL обязательно. имя модуля может быть абсолютным или относительным. Если относительное то будет использована информация из lpCurrentDirectory или текущий каталог.
lpCommandLine.Командная строка. Здесь передаются параметры. Она может быть NULL. Здесь можно указать и путь и имя модуля.
lpProcessAttributes.Здесь определяются атрибуты защиты для нового приложения. Если указать NULL то система сделает это по умолчанию.
lpThreadAttributes. Здесь определяются атрибуты защиты для первого потока созданного приложением. NULL опять приводит к установке по умолчанию.
bInheritHandles. Флаг наследования от процесса производящего запуск. Здесь наследуются дескрипторы. Унаследованные дескрипторы имеют те же значения и права доступа, что и оригиналы.
dwCreationFlags. Флаг способа создание процесса и его приоритет.
lpEnvironment. Указывает на блок среды. Если NULL, то будет использован блок среды родительского процесса. Блок среды это список переменных имя=значение в виде строк с нулевым окончанием.
lpCurrentDirectory.Указывает текущий диск и каталог. Если NULL то будет использован диск и каталог процесса родителя.
lpStartupInfo Используется для настройки свойств процесса, например расположения окон и заголовок. Структура должна быть правильно инициализирована
lpProcessInformation Структура PROCESS_INFORMATION с информацией о процессе. Будет заполнена Windows.
В результате выполнение функций вернет FALSE или TRUE. В случае успеха TRUE.
Функция WaitForSingleObject возвращает управление в двух случаях: после перехода объекта в сигнальное состояние, после истечения интервала.
DWORD WaitForSingleObject(
HANDLE hHandle, // хендл объекта
DWORD dwMilliseconds // интервал в миллисекундах
); Как узнать, что произошло: переход в сигнальное состояние или истечение интервала? Если функция возвратила значение WAIT_OBJECT_0, то объект перешёл в сигнальное состояние, если значение WAIT_TIMEOUT значит, истёк интервал времени.