- •Оглавление
- •Введение
- •Цель работы
- •1 Процессы, задания и потоки.
- •1.1 Процессы.
- •1.2 Задания.
- •1.3 Потоки.
- •2. Управление памятью в операционных системах
- •2.1 Память и отображения, виртуальное адресное пространство
- •2.2 Виртуальное адресное пространство
- •2.3 Распределение памяти статическими и динамическими разделами
- •2.4 Разделы с фиксированными границами
- •2.5 Разделы с подвижными границами
- •2.6 Сегментная, страничная и сегментно-страничная организация памяти.
- •3 Динамически подключаемые библиотеки.
- •4 Обработка исключений
- •4.1 Обработчики завершения
- •4.2 Примеры использования обработчиков завершения
- •5 Операции с окнами
- •5.1 Оконные сообщения
- •5.2 Очередь сообщений потока
- •5.3 Посылка асинхронных сообщений в очередь потока
- •5.4 Посылка синхронных сообщений окну
- •Приложение 1. Справочник api-функций и сообщений Windows.
- •Приложение 2. Темы курсовой работы.
- •Список литературы
- •Литература
Приложение 1. Справочник api-функций и сообщений Windows.
Таблица 1. Функции API.
|
Назначение функции |
Где существенным образом упоминается в [1] |
AllocConsole |
Создать консоль |
Глава 2.2. Консольные приложения. |
Arc |
Рисовать дугу |
Упоминание в Главе 2.1. |
BeginPaint |
Получить контекст при получении сообщения WM_PAINT |
Глава 2.1. См. программу на Рис. 2.1.1. |
BitBlt |
Скопировать виртуальную прямоугольную область в окно |
Глава 2.1 и программа на Рис. 2.1.6. |
CallNextHookEx |
Продолжить выполнение других фильтров. |
Глава 3.7, раздел "Фильтры". |
CallWindowProc |
Вызвать процедуру окна. |
Глава 3.5. Использование подклассов. |
CharToOem |
Функция перекодировки строки. |
Глава 2.2. Программа на Рис. 2.2.3. |
CloseHandle |
Закрыть объект: файл, консоль, коммуникационный канал, созданный функцией CreateFile, CreatePipe и т.п. |
Глава 2.5. |
CreateCompatibleBitmap |
Создать карту бит, совместимую с заданным контекстом. |
Глава 2.1, программа на Рис. 2.1.6. |
CreateCompatibleDC |
Создать контекст, совместимый с данным окном. |
Глава 2.1, программа на Рис. 2.1.6. |
CreateDialogParam |
Создать немодальное диалоговое окно. |
Глава 2.3, программа на Рис. 2.3.5. |
CreateEvent |
Создать событие. |
Глава 3.2. События. |
CreateFile |
Создать или открыть файл, консоль, коммуникационный канал и т.п. |
Глава 2.5. |
CreateFileMapping |
Создать отображаемый файл. |
Глава 3.5, раздел II. |
CreateFont |
Задать параметры шрифта. |
Упоминается в главе 2.1. |
CreateFontIndirect |
Задать параметры шрифта. |
Глава 2.1. |
CreateMutex |
Создать объект синхронизации "взаимоисключение" |
Глава 3.2. Взаимоисключения. |
CreatePen |
Создать перо. |
Глава 2.1, раздел III. |
CreatePipe |
Создать канал обмена информацией. |
Глава 3.5, раздел IV. |
CreateProcess |
Создать новый процесс. |
Глава 3.2. программа 3.2.1. |
CreateSemaphore |
Создать семафор. |
Глава 3.2. Семафоры. |
CreateSolidBrush |
Определить кисть. |
Глава 2.1, программа на Рис. 2.1.1. |
CreateThread |
Создать поток. |
Глава 3.2, программа на Рис. 3.2.2. |
CreateWindow |
Создать окно. |
Глава 1.2. Начала программирования в Windows. |
CreateWindowEx |
Расширенное создание окна. |
Глава 1.2. |
DefWindowProc |
Вызывается для сообщений, которые не обрабатываются функцией окна. |
Глава 1.2, программа на Рис. 1.2.1. |
DeleteCriticalSection |
Удалить объект "критическая секция". |
Глава 3.2. Критические секции. |
DeleteDC |
Удалить контекст, полученный посредством функций типа CreatePen или CreateDC. |
Глава 2.1, программа на Рис. 2.1.6. |
DeleteObject |
Удалить объект, выбранный функцией SelectObject. |
Глава 2.1, программа на Рис. 2.1.3. |
DestroyMenu |
Удалить меню из памяти. |
Глава 2.4, программа на Рис. 2.4.1. |
DestroyWindow |
Удалить окно из памяти. |
Глава 2.3, программа на Рис. 2.3.5. |
DeviceIoControl |
Вызов сервиса динамического виртуального драйвера. |
Глава 4.7. См. раздел "Динамические драйверы". |
DialogBox |
Создать модальное диалоговое окно. |
Глава 2.3. |
DialogBoxParam |
Создать немодальное диалоговое окно. |
Глава 2.3, программа на Рис. 2.3.2. |
DispatchMessage |
Вернуть управление Windows с передачей сообщения предназначенному окну. |
Глава 1.2. |
Ellipse |
Рисовать эллипс. |
Глава 2.1. |
EndDialog |
Удалить модальное диалоговое окно. |
Глава 2.3. См. Рис. 2.3.2. |
EndPaint |
Удалить контекст, полученный при помощи BeginPaint. |
Глава 2.1, программа на Рис. 2.1.1. |
EnterCriticalSection |
Войти в критическую секцию. |
Глава 3.2. Критические секции. |
EnumWindows |
Пересчитать окна. |
Глава 3.5, раздел VIII. |
ExitProcess |
Закончить данный процесс со всеми подзадачами (потоками). |
Глава 1.2. |
ExitThread |
Выход из потока с указанием кода выхода. |
Глава 3.2. |
FindFirstFile |
Первый поиск файлов в каталоге. |
Глава 2.5. Поиск файлов. |
FindNextFile |
Осуществить последующий поиск в каталоге. |
Глава 2.5. Поиск файлов. |
FlushViewOfFile |
Сохранить отображаемый файл или его часть на диск. |
Глава 3.5. |
FreeConsole |
Освободить консоль. |
Глава 2.2. См. программу на Рис. 2.2.3. |
FreeLibrary |
Выгрузить динамическую библиотеку. |
Глава 3.3. См. программу на Рис. 3.3.3. |
GetCommandLine |
Получить командную строку программы. |
Глава 2.2. |
GetCursorPos |
Получить положение курсора в экранных координатах. |
Глава 3.1, программа на Рис. 3.1.3. |
GetDC |
Получить контекст окна. |
Глава 2.1. См. программу на Рис. 2.1.6. |
GetDiskFreeSpace |
Определяет объем свободного пространства на диске. |
Глава 3.4., раздел I. |
GetDlgItem |
Получить дескриптор управляющего элемента в окне. |
Глава 3.1. См. Рис. 3.1.3. |
GetDriveType |
Получить тип устройства. |
Глава 3.4. См. программу на Рис. 3.4.1. |
GetLocalTime |
Получить местное время. |
Глава 3.1. См. программу на Рис. 3.1.2. |
GetMenuItemInfo |
Получить информацию о выбранном пункте меню. |
Глава 2.4. См. программу на Рис. 2.4.1. |
GetMessage |
Получить очередное сообщение из очереди сообщений данного приложения. |
Глава 1.2. |
GetModuleHandle |
Получить дескриптор приложения. |
Глава 1.2, программа на Рис. 1.2.2. |
GetProcAddress |
Получить адрес процедуры (в динамической библиотеке). |
См. главу 3.3. |
GetStdHandle |
Получить дескриптор консоли. |
Глава 2.2. |
GetStockObject |
Определить дескриптор стандартного объекта. |
См. главу 1.4. |
GetSystemDirectory |
Получить системный каталог. |
Глава 3.2. |
GetSystemMetrics |
Определить значение системных характеристик. |
Глава 2.1, программа на Рис. 2.1.6. |
GetSystemTime |
Получить время по Гринвичу. |
Упоминается в главе 3.1. |
GetTextExtentPoint32 |
Определить параметры текста в данном окне. |
Глава 2.1, программа на Рис. 2.1.2. |
GetWindowRect |
Определить размер окна. |
Глава 2.1, программа на Рис. 2.1.2. |
GetWindowsDirectory |
Получить каталог Windows. |
Глава 3.2. |
GetWindowText |
Получить заголовок окна. |
Глава 3.5, программа на Рис. 3.5.4. |
GetWindowThreadProcessId |
Получить идентификатор процесса. |
Глава 3.5, программа на Рис. 3.5.4. |
GlobalAlloc |
Выделить блок памяти. |
Глава 3.7. См. раздел III. |
GlobalDiscard |
Удалить удаляемый блок памяти. |
Глава 3.7. См. раздел III. |
GlobalFree |
Освободить блок памяти. |
Глава 3.7. См. раздел III. |
GlobalLock |
Фиксировать перемещаемый блок памяти. |
Глава 3.7. См. раздел III. |
GlobalReAlloc |
Изменить размер блока памяти. |
Глава 3.7. См. раздел III. |
GlobalUnlock |
Снять фиксацию блока памяти. |
Глава 3.7. См. раздел III. |
InitializeCriticalSection |
Создать объект критическая секция. |
Глава 3.2. Программа на Рис. 3.2.3. |
InvalidateRect |
Перерисовать окно. |
Глава 2.1. См. программу на Рис. 2.1.6. |
KillTimer |
Удалить таймер. |
Глава 3.1. См. программу на 3.1.1. |
LeaveCriticalSection |
Покинуть критическую секцию. |
Глава 3.2. Программа на Рис. 3.2.3. |
LineTo |
Провести линию от текущей точки к заданной. |
Глава 2.1. Программа на Рис. 2.1.6. |
LoadAccelerators |
Загрузить таблицу акселераторов. |
|
LoadCursor |
Загрузить системный курсор или курсор, определенный в файле ресурсов. |
Глава 1.2.2. |
LoadIcon |
Загрузить системную иконку или иконку, определенную в файле ресурсов. |
Глава 1.2.2. |
LoadLibrary |
Загрузить динамическую библиотеку. |
Глава 3.3, программа на Рис. 3.3.3. |
LoadMenu |
Загрузить меню, которое определено в файле ресурсов. |
Глава 2.3. См. программу на Рис. 2.3.3. |
LoadString |
Загрузить строку, определенную в файле ресурсов. |
Глава 2.3, программа на Рис. 2.3.2. |
lstrcat |
Производит конкатенацию двух строк. |
Впервые упоминается в главе 2.5. |
lstrcpy |
Скопировать одну строку в другую. |
Впервые упоминается в главе 2.5. |
lstrlen |
Получить длину строки. |
Впервые упоминается в главе 2.5. |
MapViewOfFile |
Скопировать файл или части файла в память. |
Глава 3.5. См. раздел II. |
MessageBox |
Выдать окно сообщения. |
Глава 1.2. |
MoveToEx |
Сменить текущую точку. |
Глава 2.1, программа на Рис. 2.1.6. |
MoveWindow |
Установить новое положение программа окна. |
Глава 3.1, на Рис. 3.1.3. |
OpenEvent |
Открыть событие. |
Глава 3.2. См. раздел События. |
OpenSemaphore |
Открыть семафор. |
Глава 3.2. См. раздел "Семафоры". |
PatBlt |
Заполнить заданную прямоугольную область. |
Глава 2.1, программа на Рис. 2.1.6. |
Pie |
Рисовать сектор эллипса. |
Упоминается в главе 2.1. |
PostMessage |
Аналогична SendMessage, но сразу возвращает управление. |
Глава 3.3, программа на Рис. 3.3.6. |
PostQuitMessage |
Послать текущему приложению сообщение WM_QUIT. |
Глава 1.2. |
ReadConsole |
Читать из консоли. |
Глава 2.2. См. раздел II. |
ReadFile |
Читать из файла или того, что было создано функцией CreateFile. |
Глава 2.5 |
Rectangle |
Рисовать прямоугольник. |
Глава 2.1, раздел III. |
RegisterClass |
Зарегистрировать класс окон. |
Глава 1.2. |
RegisterHotKey |
Зарегистрировать горячую клавишу. |
Глава 2.4, программа на Рис. 2.4.2. |
ReleaseDC |
Удалить контекст, полученный при помощи GetDC |
Глава 2.1, программа на Рис. 2.1.6. |
ReleaseSemaphore |
Освободить семафор |
Глава 3.2. См. раздел "Семафоры". |
ResetEvent |
Сбросить событие |
Глава 3.2. См. раздел "События". |
ResumeThread |
Запустить "спящий" процесс. |
Глава 3.2, раздел II. |
RoundRect |
Рисовать прямоугольник с округленными углами. |
Глава 2.1. |
RtlMoveMemory |
Копировать блок памяти в другой блок. В помощи по API-функциям она называется MoveMemory. |
Глава 3.4, программа на Рис. 3.4.4. |
SelectObject |
Выбрать объект (перо, кисть) в указанном контексте. |
Глава 2.1, программа на Рис. 2.1.3. |
SendDlgItemMessage |
Послать сообщение управляющему элементу окна. |
Глава 2.4. |
SendMessage |
Послать сообщение окну. |
Глава 1.3, программа на Рис. 1.3.2. |
SetBkColor |
Установить цвет фона для вывода текста. |
Глава 2.1. Программа на Рис. 2.1.1. |
SetConsoleCursorPosition |
Установить курсор в заданную позицию в консоли. |
Глава 2.2, программа на Рис. 2.2.3. |
SetConsoleScreenBufferSize |
Установить размер буфера консоли. |
Глава 2.2, программа на Рис. 2.2.3. |
SetConsoleTextAttribute |
Установить цвет текста в консоли. |
Глава 2.2, программа на Рис. 2.2.3. |
SetConsoleTitle |
Установить название окна консоли. |
Глава 2.2, программа на Рис. 2.2.3. |
SetEvent |
Подать сигнал о наступлении события. |
Глава 3.2. См. раздел "События". |
SetFocus |
Установить фокус на заданное окно. |
Глава 1.3. |
SetLocalTime |
Установить время и дату. |
Упоминается в главе 3.1. |
SetMapMode |
Установить соотношение между логическими единицами и пикселями. |
Упоминается в главе 2.1. |
SetMenu |
Назначить новое меню данному окну. |
Глава 2.3, программа на Рис. 2.3.3. |
SetPixel |
Установить заданный цвет пикселя. |
Глава 2.1, программа на Рис. 2.1.6. |
SetSystemTime |
Установить время, используя гринвичские координаты. |
Упоминается в главе 3.1. |
SetTextColor |
Установить цвет текста. |
Глава 2.1, программа на Рис. 2.1.1. |
SetTimer |
Установить таймер. |
Глава 3.1. |
SetViewportExtEx |
Установить область вывода. |
Глава 2.1. |
SetViewportOrgEx |
Установить начало области вывода. |
Глава 2.1. |
SetWindowLong |
Изменить атрибут уже созданного окна. |
Глава 3.5. См. раздел III. |
SetWindowsHookEx |
Установить процедуру-фильтр. |
Глава 3.7, программа на Рис. 3.7.5. |
Shell_NotifyIcon |
Посредством данной функции можно поместить иконку приложения на системную панель. |
Глава 3.5. См. программу на Рис. 3.5.1. |
SHFileOperation |
Осуществляет групповую операцию над файлами и каталогами. |
Глава 3.5. См. раздел VI. |
SHGetDesktopFolder |
Выводит диалоговое окно для выбора каталогов и файлов. |
Глава 3.5. См. раздел VI. |
ShowWindow |
Показать окно, установить статус показа. |
Глава 1.2. |
Sleep |
Вызывает задержку. |
Глава 3.2. см. рис. 3.2.2. |
TerminateProcess |
Уничтожить процесс. |
Глава 3.2. См. программу на Рис. 3.2.1. |
TerminateThread |
Удалить поток. |
Глава 3.2. См. программу 3.2.1. |
TextOut |
Вывести текст в окно. |
Глава 2.1. |
timeKillEvent |
Удалить таймер. |
Глава 2.2. См. раздел III. |
timeSetEvent |
Установить таймер. |
Глава 2.2. См. раздел III. |
TranslateAccelerator |
Транслирует акселераторные клавиши в команду выбора пункта меню. |
Глава 2.3. См. раздел III. |
TranslateMessage |
Транслировать клавиатурные сообщения в ASCII-коды. |
Глава 1.2. |
UnhookWindowsHookEx |
Снять процедуру-фильтр. |
Глава 3.6. Программа на Рис. 3.6.5. |
UnmapViewOfFile |
Сделать указатель на отображаемый файл недействительным. |
Глава 3.5. См. раздел II. |
UnregisterHotKey |
Снять регистрацию горячей клавиши. |
Глава 2.4, программа на Рис. 2.4.2. |
UpdateWindow |
Обновить рабочую область окна. |
Глава 1.2. |
VirtualAlloc |
Зарезервировать блок виртуальной памяти или отобразить на него физическую память. |
Глава 3.6. См. раздел III. |
VirtualFree |
Снять резервирование с блока виртуальной памяти или сделать блок виртуальной памяти неотображенным. |
Глава 3.6. См. раздел III. |
WaitForSingleObject |
Ожидает одно из двух событий: определенный объект сигнализирует о своем состоянии, вышло время ожидания (TimeOut). Работает с такими объектами, как семафор, событие, взаимоисключение, процесс, консольный ввод и др. |
Глава 3.2. См. раздел "Семафоры". |
WNetAddConnection2 |
Осуществляет соединение с сетевым ресурсом локальной сети. |
Глава 3.4. |
WNetCancelConnection2 |
Отсоединить от ресурса локальной сети. |
Глава 3.4. |
WNetCloseEnum |
Найти все ресурсы локальной сети данного уровня. |
Глава 3.4. |
WNetGetConnection |
Получить информацию о данном соединении. |
Глава 3.4. |
WNetOpenEnum |
Открыть поиск ресурсов в локальной сети. |
Глава 3.4. |
WriteConsole |
Вывод в консоль. |
Глава 2.2, программа на Рис. 2.2.1. |
wsprintf |
Преобразовать последовательность параметров в строку. |
Глава 2.2. См. программу на Рис. 2.2.4. |
Таблица 2. Сообщение операционной системы Windows.
Сообщение системы |
Назначение |
Где существенным образом упоминается в [1] |
WM_ACTIVATE |
Посылается функции окна перед активизацией и деактивизацией этого окна. |
Глава 2.4. |
WM_ACTIVATEAPP |
Посылается функции окна перед активизацией окна другого приложения. |
Глава 2.4. |
WM_CHAR |
Сообщение, возникающее при трансляции сообщения WM_KEYDOWN функцией TranslateMessage. |
Главы 1.2, 2.4. |
WM_CLOSE |
Сообщение, приходящее на процедуру окна при его закрытии. Приходит до WM_DESTROY. Дальнейшее выполнение DefWindowProc, EndDialog или WindowsDestroy и вызывает появление сообщения WM_DESTROY. |
Глава 2.3. |
WM_COMMAND |
Сообщение, приходящее на функцию окна, при наступлении события с управляющим элементом, пунктом меню, а также от акселератора. |
Главы 1.3, 2.3. |
WM_CREATE |
Первое сообщение, приходящее на функцию окна при его создании. Приходит один раз. |
См. подробнее Гл. 1.2. |
WM_DEADCHAR |
Сообщение, возникающее при трансляции сообщения WM_KEYUP функцией TranslateMessage. |
Глава 1.2. |
WM_DESTROY |
Сообщение, приходящее на функцию окна при его уничтожении. |
Подробнее см. Гл. 1.2. |
WM_GETTEXT |
Посылается окну для получения текстовой строки, ассоциированной с данным окном (строка редактирования, заголовок окна и т.д.). |
Глава 1.3, см. программу на Рис. 1.3.2. |
WM_HOTKEY |
Генерируется при нажатии горячей клавиши. |
Глава 2.4 и программа на Рис. 2.4.2. |
WM_INITDIALOG |
Сообщение, приходящее на функцию диалогового окна вместо сообщения WM_CREATE. |
Глава 2.3. |
WM_KEYDOWN |
Сообщение, генерируемое при нажатии клавиши клавиатуры и посылаемое окну, имеющему фокус ввода. |
Главы 1.2, 2.3. |
WM_KEYUP |
Сообщение, генерируемое при отпускании клавиши клавиатуры и посылаемое окну, имеющему фокус ввода. |
Главы 1.2, 2.3. |
WM_LBUTTONDOWN |
Сообщение генерируется при нажатии левой кнопки мыши. |
Глава 1.2. |
WM_MENUSELECT |
Посылается окну, содержащему меню, при выборе пункта меню. |
Глава 2.4. |
WM_PAINT |
Сообщение посылается окну перед его перерисовкой. |
Главы 1.2, 1.3. |
WM_QUIT |
Сообщение, приходящее приложению (не окну) при выполнении функции PostQuitMessage. При получении этого сообщения происходит выход из цикла ожидания и, как следствие, выход из программы. |
Глава 1.2. См. комментарий к программе на Рис. 1.2.2. |
WM_RBUTTONDOWN |
Сообщение генерируется при нажатии правой кнопки мыши. |
Глава 1.2, программа на рис. 1.2.2. |
WM_SETFOCUS |
Сообщение, посылаемое окну, после того, как оно получило фокус. |
Глава 1.3, программа на Рис.1.3.2 |
WM_SETICON |
Приложение посылает окну данное сообщение, чтобы ассоциировать с ним новую иконку (значок). |
Глава 2.3. |
WM_SETTEXT |
Сообщение, используемое приложением для посылки текстовой строки окну и интерпретируемое в зависимости от типа окна (обычное окно - заголовок, кнопка — надпись на кнопке, окно редактирования - содержимое этого окна и т.д.). |
Глава 1.3, см. программу на Рис. 1.3.2. |
WM_SIZE |
Посылается функции окна после изменения его размера. |
Глава 3.5, см. программу на Рис. 3.5.1. |
WM_SYSCHAR |
Сообщение, возникающее при трансляции сообщения WM_SYSKEYDOWN функцией TranslateMessage. |
Глава 1.2. |
WM_SYSCOMMAND |
Генерируется при выборе пунктов системного меню или меню окна. |
Глава 2.3. См. также Рис. 2.3.4. |
WM_SYSDEADCHAR |
Сообщение, возникающее при трансляции сообщения WM_SYSKEYUP функцией TranslateMessage. |
Глава 1.2. |
WM_SYSKEYDOWN |
Сообщение аналогично WM_KEYDOWN, но генерируется, когда нажата и удерживается еще и клавиша Alt. |
Главы 1.2, 2.3. |
WM_SYSKEYUP |
Сообщение аналогично WM_SYSKEYDOWN, но генерируется при отпускании клавиши. |
Главы 1.2, 2.3. |
WM_TIMER |
Сообщение, приходящее на функцию окна или специально определенную таймерную процедуру после определения интервала таймера при помощи функции SetTimer. |
Глава 3.1 полностью посвящена данному сообщению. |
WM_VKEYTOITEM |
Сообщение окну приложения, когда нажимается какая-либо клавиша при наличии фокуса на данном списке. Список должен иметь свойство LBS_WANTKEYBOARDINPUT. |
Глава 2.4. |