Принципы, лежащие в основе Windows

Принципы, лежащие в основе Windows

Полезно никогда не забывать о некоторых базовых принципах Windows. В Windows API имеется множество как самых незаметных, так и значительных отличий от других API, таких как POSIX API, с которым знакомы программисты, работающие в UNIX и Linux. И хотя с применением Windows не связаны какие-либо специфические трудности в работе, она потребует от вас внесения некоторых изменений в привычные стиль и методику программирования.

Ниже описаны некоторые из важнейших характеристик Windows, с которыми вы ближе познакомитесь по мере дальнейшего изложения материала.

Многие системные ресурсы Windows представляются в виде объектов ядра (kernel objects), для идентификации и обращения к которым используются дескрипторы (handles). По смыслу эти дескрипторы аналогичны дескрипторам (descriptors) файлов и идентификаторам (ID) процессов в UNIX.[7]

• Любые манипуляции с объектами ядра осуществляются только с использованием Windows API. "Лазеек" для обхода этого правила нет. Подобная организация работы согласуется с принципами абстрагирования данных, используемыми в объектно-ориентированном программировании, хотя сама система Windows объектно-ориентированной не является.

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

• Windows — богатый возможностями и гибкий интерфейс. Во-первых, одни и те же или аналогичные задачи могут решаться с помощью сразу нескольких функций; так, имеются вспомогательные функции (convenience functions), полученные объединением часто встречающихся последовательностей функциональных вызовов в одну функцию (к числу подобных функций принадлежит и функция CopyFile, используемая в одном из примеров далее в этой главе). Во-вторых, функции часто имеют многочисленные параметры и флаги, многие из которых обычно игнорируются. Данная книга не претендует на роль энциклопедического справочника, и основное внимание в ней концентрируется лишь на наиболее важных функциях и параметрах.

• Windows предлагает многочисленные механизмы синхронизации и взаимодействия, обеспечивающие удовлетворение самых разнообразных запросов.

• Базовой единицей выполнения в Windows является поток (thread). В одном процессе (process) могут выполняться один или несколько потоков.

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

WaitForSingleObject

WaitForSingleObjectEx

WaitForMultipleObjects

WaitNamedPipe

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

• Имена предопределенных типов данных, необходимых API, также являются описательными, и в них должны использоваться прописные буквы.

К числу наиболее распространенных относятся следующие типы данных:

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

HANDLE

DWORD (вездесущее 32-битовое целое без знака)

LPTSTR (указатель на строку, состоящую из 8– или 16-битовых символов)

LPSECURITY_ATTRIBUTES

С другими многочисленными типами данных вы будете знакомиться по мере изложения материала.

• В именах предопределенных типов указателей операция * не используется, и они отражают дополнительные отличия между указателями различного типа, как, например, в случае типов LPTSTR (определен как TCHAR *) и LPCTSTR (определен как const TCHAR *). Примечание. Тип TCHAR может обозначать как обычный символьный тип char, так и двухбайтовый тип wchar_t.

• В отношении использования имен переменных, — по крайней мере, в прототипах функций, — также имеются определенные соглашения. Так, имя lpszFileName соответствует "длинному указателю на строку, завершающуюся нулевым символом", которая содержит имя файла. Этот пример иллюстрирует применение так называемой "венгерской нотации", которой мы в данной книге, как правило, не стремимся придерживаться. Точно так же, dwAccess — двойное слово (32 бита), содержащее флаги прав доступа к файлу, где "dw" означает "double word" — "двойное слово".

Примечание

Будет очень полезно, если вы просмотрите системные заголовочные (включаемые) файлы, в которых содержатся определения функций, констант, флагов, кодов ошибок и тому подобное. Многие из представляющих для нас интерес файлов, аналогичных тем, которые предложены ниже в качестве примера, являются частью среды Microsoft Visual C++ и обычно устанавливаются в каталоге Program FilesMicrosoft Visual Studio.NETVc7PlatformSDKInclude (или Program FilesMicrosoft Visual StudioVC98Include в случае VC++ 6.0):

WINDOWS.H (файл, обеспечивающий включение всех остальных заголовочных файлов)

WINNT.Н

WINBASE.H 

Наконец, несмотря на то что оригинальный API Win32 с самого начала разрабатывался как совершенно независимый интерфейс, он проектировался с учетом обеспечения обратной совместимости с API Winl6, входившим в состав Windows 3.1. Это привело к некоторым досадным с точки зрения программиста последствиям:

• В названиях типов встречаются элементы анахронизма, как, например, в случае типов LPTSTR и LPDWORD, ссылающихся на "длинный указатель", который является простым 32– или 64-битовым указателем. Необходимость в указателях какого-либо иного типа отсутствует. Иногда составляющая "длинный" опускается, и тогда, например, типы LPVOID и PVOID являются эквивалентными.[8]

• В имена некоторых символических констант, например WIN32_FIND_DATA, входит компонент "WIN32", хотя те же константы используются и в Win64.

• Несмотря на то что упомянутая проблема обратной совместимости в настоящее время потеряла свою актуальность, она оставила после себя множество 16-разрядных функций, ни одна из которых в этой книге не используется, хотя и могло бы показаться, что эти функции играют весьма важную роль. В качестве примера можно привести функцию OpenFile, которая, судя по ее названию, нужна для открытия файлов, тогда как в действительно сти для открытия существующих файлов всегда следует пользоваться только функцией CreateFile.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Основные принципы

Из книги Время - деньги. Создание команды разработчиков программного обеспечения автора Салливан Эд


Принципы

Из книги Секреты и ложь. Безопасность данных в цифровом мире автора Шнайер Брюс

Принципы РазделяйтеБывалые путешественники держат лишь небольшую сумму денег в бумажнике, а остальное – в мешочке, скрытом под одеждой. Таким образом, если их обворуют, они не потеряют все деньги. Структура шпионских или террористических организаций предполагает


Принципы

Из книги Каждому проекту своя методология автора Коуберн Алистэр

Принципы Существенную роль в поисках нужной методологии играет определение принципов, по котором ее можно было бы разработать. После создания полудюжины различных методологий и проведения нескольких дюжин опросов и интервью разнообразных проектов, я сумел определить


1.2. Фундаментальные концепции, лежащие в основе понятия зрелости производственных процессов

Из книги Модель зрелости процессов разработки программного обеспечения автора Паулк Марк

1.2. Фундаментальные концепции, лежащие в основе понятия зрелости производственных процессов Согласно словарю Вебстера, процесс является «системой операций для производства чего-либо… последовательностью действий, изменений или функций, предназначенных для


Принципы работы

Из книги Документация NetAMS автора Автор неизвестен

Принципы работы Основная программа комплекса NeTAMS состоит из следующих частей, работающих параллельно и одновременно, и называемых сервисами: Сервис main представляет собой главный поток, с исполнения которого начинает работу программа. Он определяет основные свойства


Принципы работы

Из книги Защита вашего компьютера автора Яремчук Сергей Акимович

Принципы работы Работа netams в случае использования модуля NETGRAPH (далее–модуль) заключается в установке модуля в ядро (и подключения его к интерфейсу, через который идет трафик), и настройке программы netams (далее–демона) для корректного соединения с модулем.Модуль и демон


Принципы работы

Из книги Обработка баз данных на Visual Basic®.NET автора Мак-Манус Джеффри П

Принципы работы Скрипт addon/snmp2netams.pl опрашивает перечисленные в его заголовке SNMP–устройства, используя заданное значение community. Запрашиваются имена интерфейсов и значения 64–битных счетчиков байт, прошедших через интерфейс:ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName ==


Принципы фильтрации

Из книги Цифровой журнал «Компьютерра» № 28 [02.08.2010 — 08.08.2010] автора Журнал «Компьютерра»

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


Создание пользовательского интерфейса на основе Windows Forms

Из книги Windows Script Host для Windows 2000/XP автора Попов Андрей Владимирович

Создание пользовательского интерфейса на основе Windows Forms Разработчики предыдущих версий Visual Basic первыми предложили концепцию связывания данных, согласно которой связанный с данными объект или элемент управления данными (data control) позволяет программистам с минимальными


Стив Балмер рассказал про планшеты на основе Windows 7 Михаил Карпов

Из книги Добавьте в корзину. Ключевые принципы повышения конверсии веб-сайтов автора Айзенберг Джеффри

Стив Балмер рассказал про планшеты на основе Windows 7 Михаил Карпов Опубликовано 02 августа 2010 года На прошедшей в прошлый четверг конференции о доходах компании Microsoft её генеральный директор Стив Балмер сказал, что корпорация активно работает со


Основные принципы XML

Из книги Программирование на языке Ruby [Идеология языка, теория и практика применения] автора Фултон Хэл

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


Общие принципы

Из книги Социальные сети [Источники новых клиентов для бизнеса] автора Парабеллум Андрей Алексеевич

Общие принципы «Информационная архитектура большинства сайтов никуда не годится. Это еще одно свидетельство тому, что при их разработке мнение будущих посетителей в расчет не принимается. Не удивительно, что клиенты не хотят использовать столь неудобную навигацию».


19.3.1. Принципы и техника

Из книги HTML5 для веб-дизайнеров автора Джереми Кит

19.3.1. Принципы и техника Каркас Rails построен на основе паттерна Модель-Вид-Контроллер (Model-View-Controller — MVC). Каждое приложение естественно разбивается на модели (моделирующие предметную область), виды (с помощью которых информация представляется пользователю и организуется


Принципы продвижения

Из книги Установка, настройка и восстановление Windows 7 на 100% автора Ватаманюк Александр Иванович

Принципы продвижения Старт Достоверность С чего нужно начинать свое продвижение в социальных сетях?Профиль, который вы хотите продвигать, нужно заполнить максимально полно и качественно. Запомните, что главная фотография должна быть именно вашей и обязательно


Принципы устройства

Из книги автора

Принципы устройства WHATWG, намеревавшаяся избежать ошибок прошлого, обозначила ряд принципов и правил для разработки HTML5. Один из ключевых таких принципов: «поддерживать существующее содержимое». Это означает, что с HTML5 не начинается новая эра.Если XHTML 2 намеревался


1.1. Гонки на выживание: Windows ХР, Windows Vista и Windows 7

Из книги автора

1.1. Гонки на выживание: Windows ХР, Windows Vista и Windows 7 Время не стоит на месте, и уж тем более на месте не стоят новые технологии. Появление многоядерных процессоров, мощных видеокарт и других новых устройств, которые не могут полностью раскрыть свой потенциал в существующих