Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Чуба 12.02.2012.docx
Скачиваний:
4
Добавлен:
16.08.2019
Размер:
36.84 Кб
Скачать

Принципы программирования в арi win32

  1. Почти каждый системный ресурс - это объект ядра, который идентифицируется дескриптором. Объектами ядра должен управлять АРI Win32.

  2. Объекты включают файлы, процессы, потоки, каналы для межпроцессорного взаимодействия, отображения на память, события и многое другое. Объекты имеют атрибуты безопасности.

  3. АРI Win32 – богатый и гибкий интерфейс.

  4. АРI Win32 содержит разнообразные механизмы синхронизации и взаимодействия, специализированные для различных требований.

  5. Основным модулем выполнения в АРI Win32 является не процесс, а поток. Процесс может содержать один или более потоков.

Кроме этих соглашений, существуют также несколько соглашений для имен типов:

а) Имена стандартных типов данных, требуемых для АPI, состоят из символов верхнего регистра, например:

BOOL (определен как 32-разрядный объект для хранения одиночного логического значения);

HANDLE (целый тип)

DWORD (32-разрядный целочисленный беззнаковый тип);

LPTSTR (указатель на строку из 8- или 16-разрядных символов).

б) Для стандартных типов данных не применяется операция * (разыменования). Например,

LPTSTR (определен как TCHAR*);

LPCTSTR (определен как const TCHAR*).

в) Функции в АРI Win32 имеют длинные описательные имена. Например,

CreateProcess() – создать процесс;

GetCurrentDirectory() – получить текущую директорию.

г) Имена переменных, по крайней мере, в прототипах функций, также подчиняются этим соглашениям. Например,

lpszFileName – это длинный указатель на строку символов с завершающим нулем.

Примечание: Много информации можно почерпнуть в системных заголовочных файлах, в которые определяются прототипы функцией, константы, флаги, коды ошибок и т.д. Файл windows.h включает все остальные заголовочные файлы.

Управление процессами

С точки зрения программиста, каждый процесс в АРI Win32 включает следующие компоненты:

  • Один или несколько потоков;

  • Виртуальное адресное пространство, отличное от адресных пространств других процессов, за исключением случаев явного разделения памяти;

  • Один или более сегментов кода, включая код DLL;

  • Один или более сегментов данных, содержащих глобальные переменные;

  • Строки окружения с информацией о переменных окружения, таких как текущий путь поиска;

  • Память кучи процесса;

  • Такие ресурсы, как открытые дескрипторы и другие кучи.

Все потоки процесса совместно используют код, глобальные переменные, строки окружения и ресурсы. Каждый поток планируется независимо и включает такие элементы:

  • Стек вызовов процедур, прерываний, обработчиков исключений и автоматических данных;

  • Локальную память потока (Thread Local Storage – TLS) – массивы указателей, которые дают процессу возможность выделять память для создания собственного уникального окружения данных;

  • Параметр стека, полученный от потока, создавшего данный стек, и обычно уникальный для каждого потока.

  • Структуру контекста, управляемую ядром, со значениями аппаратных регистров.