Создание ОС Windows. Структура ОС Windows. Использование win32 api

Русский справочник по Win32 API

От изготовителя fb2.

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

Давайте, протестируем вашу читалку.

Если, вместо симпатичной таблицы вы увидели такое:

1 строка, 1 столбец

1 строка, 2 столбец

1 строка, 3 столбец

2 строка 1 столбец

2 строка 2 столбец

Значит ваша читалка таблиц не видит, что очень жаль, т.к. в книге их 49.

Что делать?... Ну, я поступаю так. В Mozilla Firefox поставил плагин для чтения fb2, и все проблемы решены, конечно, возможны и другие варианты...

Вот и все.

Успехов w_cat.

Из книги Журнал «Компьютерра» № 24 от 27 июня 2006 года автора Журнал «Компьютерра»

ОГОРОД КОЗЛОВСКОГО: Русский акцент Автор: Козловский ЕвгенийЭтот «Огород» - чисто публицистический. Без какого бы то ни было касательства к новинкам hi-tech. Впрочем, именно одна из таких новинок спровоцировала издевательскую катавасию, которую я намерен здесь описать, -

Из книги Microsoft Office автора Леонтьев Виталий Петрович

«РУССКИЙ ОФИС» – ПОЛЕЗНЫЕ ДОПОЛНЕНИЯ …Как известно, абсолютно идеального комплекта программ в природе не существует. И как бы ни был талантлив и мастеровит Microsoft Office, он умеет далеко не все. Но, к нашему счастью, этот пакет программ отличается не только умом и

Из книги Язык программирования С# 2005 и платформа.NET 2.0. автора Троелсен Эндрю

Подход C/Win32 API Традиционно разработка программного обеспечения для операционных систем семейства Windows предполагает использование языка программирования C в сочетании с Windows API (Application Programming Interface – интерфейс программирования приложений). Несмотря на тот факт, что в

Из книги Журнал PC Magazine/RE №08/2009 автора Журнал «PC Magazine»

Заголовок Win32 Заголовок Win32 декларирует, что компоновочный блок может загружаться и управляться средствами операционных систем семейства Windows. Данные этого заголовка также идентифицируют тип приложения (консольное, с графическим интерфейсом или библиотека

Из книги Цифровой журнал «Компьютерра» № 26 автора Журнал «Компьютерра»

Выполнение традиционных процессов Win32 Понятие "процесс" существовало в операционных системах Windows задолго до появления платформы.NET. Упрощенно говоря, термин процесс используется для обозначения множества ресурсов (таких, как внешние библиотеки программного кода и

Из книги Ощупывая слона [Заметки по истории русского Интернета] автора Кузнецов Сергей Юрьевич

Русский Android Компания «Вобис» выпускает коммуникатор на базе Google Android. Модель Highscreen PP5420 построена на процессоре Qualcomm MSM7201А (528 МГц), оснащена 128-Мбайт ОЗУ, 256-Мбайт ПЗУ, 3-дюйм сенсорным экраном с разрешением 240?400, GPS, датчиком пространственных перемещений G-Sensor – все вполне в

Из книги 10 простых и легких способов моментального повышения прибыльности любого коммерческого сайта автора Дин Терри

Вирус Win32/Stuxnet: заплат для Windows XP не будет Игорь Осколков Опубликовано 20 июля 2010 года На днях корпорация Microsoft подтвердила наличие уязвимости «нулевого дня» во всех версиях Windows - от 2000 до 7. Причём уязвимость оказалась очень необычной. Началось всего

Из книги Системное программирование в среде Windows автора Харт Джонсон М

Александр Матросов (ESET) о вирусе Win32/Stuxnet Крестников Евгений Опубликовано 21 июля 2010 года Вирус Win32/Stuxnet интересен, прежде всего, своим механизмом распространения, использующим уязвимость в операционных системах Windows: специально сформированный

Из книги Технология XSLT автора Валиков Алексей Николаевич

Из книги Ководство автора Лебедев Артём Андреевич

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

ГЛАВА 1 Знакомство с Win32 и Win64 В этой главе вы познакомитесь с семейством операционных систем (ОС) Microsoft Windows и интерфейсом прикладного программирования (Application Programming Interface, API), который используется всеми членами этого семейства. Здесь также кратко описывается новейший

Из книги Виртуальная библиотека Delphi автора

Архитектура системы управления памятью в Win32 и Win64 Win32 (в данном случае различия между Win32 и Win64 становятся существенными) - это API 32-разрядных ОС семейства Windows. "32-разрядность" проявляет себя при адресации памяти тем, что указатели (LPSTR, LPDWORD и так далее) являются 4-байтовыми

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

Переводы стандартов на русский язык? http://www.rol.ru/news/it/helpdesk/xml01.htmРасширяемый язык разметки (XML) 1.0 (вторая редакция). Перевод Радика Усманова, Luxoft (IBS).? http://www.rol.ru/news/it/helpdesk/xslt01.htmЯзык преобразований XSL (XSLT). Версия 1.0. Перевод Радика Усманова, Luxoft

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

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

О научном редакторе перевода на русский язык Кузьменко Дмитрий занимается проектированием и разработкой приложений баз данных уже 16 лет. С InterBase начал работать в 1994 году. В 2002 году Дмитрий основал фирму iBase (www.ibase.ru), которая занимается техническим сопровождением InterBase и

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

Программирование на основе Win32 API в Delphi 1. Введение Любую современную программу или программную технологию можно представить как совокупность программных "слоев". Каждый из этих слоев производит свою собственную работу, которая заключается в повышении уровня абстракции

Поскольку практическая часть данного курса предполагает разработку и выполнение разнообразных Win32-приложений, которые работают в среде, создаваемой Win32-подсистемой, необходимо рассмотреть ее более подробно. Взаимодействие между приложением и операционной системой осуществляется при помощи системных вызовов ( системных сервисов в терминологии Microsoft). Однако приложение не может вызвать системный вызов напрямую (более того, системные вызовы не документированы). Вместо этого приложение должно воспользоваться программным интерфейсом ОС - Win32 API.

Win32 API (Application Programming Interface) - основной интерфейс программирования в семействе операционных систем Microsoft Windows. Функции Win32 API , например, CreateProcess или CreateFile , - документированные, вызываемые подпрограммы, реализуемые Win32 подсистемой.

  • Функция полностью выполняется внутри данной dll (шаг 1).
  • Для выполнения функции привлекается сервер csrss, для чего ему посылается сообщение (шаг 2a, за которым обычно следуют шаги 2b и 2c).
  • Данный вызов транслируется в системный сервис ( системный вызов ), который обычно обрабатывается в модуле ntdll.dll (шаги 3a и 3b). Например, Win32-функция ReadFile выполняется с помощью недокументированного сервиса NtReadFile .

Некоторые функции (например, CreateProcess ) требуют выполнения обоих последних пунктов.

В первых версиях ОС Windows практически все вызовы Win32 API выполнялись, следуя маршруту 2 (2a, 2b, 2c). После того, как существенная часть кода системы для увеличения производительности была перенесена в ядро (начиная с Windows NT 4.0), вызовы Win32 API, как правило, идут напрямую по 3-му (3a, 3b) пути, минуя подсистему окружения Win32. В настоящее время лишь небольшое число вызовов выполняется по длинному 2-му маршруту.

Помимо перечисленных, наиболее важных dll-библиотек, в системном каталоге system32 имеется большое количество других dll-файлов. В настоящее время количество вызовов API составляет несколько десятков тысяч.

Список экспортируемых каждой конкретной dll функций можно посмотреть с помощью утилиты depends , входящей в пакет Platform SDK. Так, на рис. 1.7 приведена информация о структуре библиотеки kernel32.dll ОС Windows XP, экспортирующей 949 функций.

Заключение

В настоящей лекции изложена краткая история создания ОС Windows и ее миграция от микроядерной архитектуры в сторону монолитного дизайна. Описаны возможности и основные структурные компоненты системы. Рассмотрена подсистема Win32, которая объединяет ряд модулей режима ядра и режима пользователя и является базой для разработки приложений.

Приложение. Некоторые понятия и термины

DLL (динамически подключаемая библиотека)

Набор вызываемых подпрограмм, включенных в один двоичный файл, который приложения, использующие эти подпрограммы, могут динамически загружать в процессе своего выполнения. В качестве примера можно привести модули Msvcrt.dll (библиотека исполняющей Си подсистемы) и Kernel32.dll (одна из библиотек подсистемы Win32). DLL активно используются компонентами и приложениями ОС Windows пользовательского режима. Преимущество DLL перед статическими библиотеками состоит в том, что приложения могут разделять DLL-модули, при этом ОС Windows гарантирует, что в памяти будет находиться лишь по одному экземпляру используемых DLL.

Процессы и потоки

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

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

Более подробно процессы и потоки описаны в части II.

Введение

Последние 10 лет Windows – самая популярная (91,02% ) операционная система на рынке персональных компьютеров. Операционные системы Windows работают на платформах x86, AMD64, IA-64. Существовали также версии для DEC Alpha, MIPSи PowerPC.

Семейство Windows NT:

Операционные системы этого семейства работали на процессорах с архитектурой IA-32 и некоторых RISC-процессорах: Alpha, MIPS, Power PC (до версии 2000, которая вышла только в версии для IA-32). Windows NT являются полностью 32-битными операционными системами, и, в отличие от версий 1.0–3.x и 9x, не нуждаются в поддержке со стороны MS-DOS.

Windows NT 3.1 (1993)

Windows NT 3.5 (1994)

Windows NT 3.51 (1995)

Windows NT 4.0 (1996)

Windows 2000 (2000) – Windows NT 5.0

Windows XP (2001) – Windows NT 5.1

Windows XP 64-bit Edition (2006) – Windows NT 5.2

Windows Server 2003 (2003) – Windows NT 5.2

Windows Vista (2006) – Windows NT 6.0

Windows Home Server (2007)

Windows Server 2008

Windows 7 (2009) – Windows NT 7.0 (Актуальная версия – 6.1)

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

Семейство Windows NT относится к операционным системам с вытесняющей многозадачностью, а не к операционным системам реального времени. Разделение процессорного времени между потоками происходит по принципу «карусели». Ядро операционной системы выделяет квант времени (в Windows 2000 квант равен примерно 20 мс) каждому из потоков по очереди при условии, что все потоки имеют одинаковый приоритет. Поток может отказаться от выделенного ему кванта времени. В этом случае, система перехватывает у него управление (даже если выделенный квант времени не закончен) и передаёт управление другому потоку. При передаче управления другому потоку система сохраняет состояние всех регистров процессора в особой структуре в оперативной памяти. Эта структура называется контекстом потока. Сохранение контекста потока достаточно для последующего возобновления его работы.

API (Application Programming Interface – интерфейс прикладных программ) – это множество функций, организованных, обычно, в виде DLL. Функции API позволяют организовать интерфейс между прикладной программой и средой, в которой работает эта программа. Вызов функций API позволяет программе получать доступ к ресурсам среды и управлять ее работой. Как правило, API задает стандарт взаимодействия среды и прикладной программы.

Win32 – это название интерфейса, ориентированного на 32-х разрядные приложения и реализованного на таких известных платформах как Windows 95, Windows 98, Windows NT, Windows CE. Функции, составляющие этот интерфейс, позволяют прикладной программе получать доступ к ресурсам операционной системы и управлять ее работой. Более ранние версии Windows используют интерфейс, известный как Win16. Конечно, не все функции, составляющие интерфейс Win32, реализованы в полной мере на всех платформах, так что вызов одной и той же функции под NT приведет к определенному результату, а под Windows 95 работает как вызов заглушки. Любое из приложений, работающее в среде Windows, прямо или косвенно вызывает функции, входящие в Win32 API.

Функции, составляющие Win32 интерфейс, организованы в виде нескольких динамически подключаемых библиотек (DLL) и исполняемых файлов.

API функции не обязательно входят в состав Win32 интерфейса. Например, MAPI интерфейс (Messaging Application Programming Interface) составляют функции, предназначенные для обработки сообщений электронной почты, TAPI (Telephone API) – функции работы с телефонными сообщениями. MAPI, TAPI, также как и Win32 это некоторый набор функций, задающий определенный стандарт взаимодействия

Функции, образующие API, обычно, организованы в виде DLL – динамически подключаемых библиотеках. Одно из достоинств DLL состоит в том, что, сколько бы приложений (процессов) не работало с функциями одной и той же DLL, код DLLсуществует в единственном экземпляре.


1. Теоретическая часть

1.1 Возможности Win32 для нахождения списка запущенных процессов

программа алгоритм библиотека пользователь

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

1. Рассмотрим следующие методы:

2. С помощью библиотеки Process Status Helper (PSAPI)

3. С помощью ToolHelp32 API

4. С помощью недокументированной функции ZwQuerySystemInformation

5. Через счетчики производительности

6. С использованием интерфейсов Windows Management Instrumentation

7. Функции интерфейса сокетов

1.2 Использование библиотеки Process Status Helper

Библиотека Process Status Helper, известная также под названием PSAPI, предоставляет набор функций, позволяющих получить информацию о процессах и драйверах устройств. Библиотека поставляется в составе Windows 2000/XP и доступна в качестве устанавливаемой компоненты для Windows NT 4.0.

Для перечисления процессов библиотека предоставляет функцию EnumProcesses, которая возвращает массив идентификаторов запущенных процессов. Ниже приведен текст функции EnumProcesses_PsApi, реализующей перечисление процессов с помощью PSAPI.

Функция EnumProcesses не позволяет узнать, сколько места нужно для того, чтобы принять весь массив идентификаторов. Поэтому мы вызываем ее в цикле, увеличивая размер буфера, до тех пор, пока размер возвращенного массива не будет меньше размера буфера.

Поскольку мы хотим помимо идентификаторов процессов получить и имена процессов, мы должны проделать дополнительную работу. Для каждого процесса мы сначала получаем его описатель (handle) c помощью функции OpenProcess и затем используем функцию ЕnumProcessModules, которая возвращает список модулей, загруженных в адресное пространство процесса. Первым модулем в списке всегда является модуль, соответсвующий EXE-файлу программы. Наконец, мы вызываем функцию GetModuleFileNameEx (которая также является частью PSAPI), чтобы получить путь к EXE-файлу по описателю модуля. Мы используем имя EXE-файла без пути в качестве имени процесса.

Нужно обратить внимание на специальную обработку для двух процессов. Мы вынуждены обрабатывать отдельно процесс бездействия системы (Idle) с идентификатором 0, и системный процесс (System), который имеет идентификатор 2 на Windows NT 4 и 8 – на Windows 2000/XP, потому что OpenProcess не позволяет открыть описатель для этих процессов, возвращая код ошибки ERROR_ACCESS_DENIED.



RTOS складається з ядра, планувальника процесів (process manager) і розширених сервісів на рівні користувача. Як справжня мікроядерного операційна система, QNX Neutrino RTOS реалізує в ядрі ОС тільки найбільш фундаментальні сервіси, такі як передача повідомлень, сигнали, таймери, планування потоків, об"єкти синхронізації. Всі інші сервіси ОС, драйвери та програми виконуються як окремі процеси, які ...

Обеспечения является адекватной решению поставленной в техническом задании задачи. 4. ПРОГРАММНАЯ РЕАЛИЗАЦИЯ ПОСТАВЛЕННОЙ ЗАДАЧИ Программная реализация разработанной выше структуры приложения состоит в разработке исполняемого Win32-приложения в среде визуального программирования MS Visual Studio. Проект программного обеспечения состоит из трех классов – CFuzzyApp, CFuzzyDlg, CFuzzy_. В...

Выдачей и приёмом лицензий). В условиях крупных сетей рекомендуется выделение под сервер лицензий отдельного компьютера (или нескольких - для резервирования). 1.1 Архитектура терминальных устройств В компьютерных технологиях трёхуровневая архитектура, синоним трёхзвенная архитектура (по англ. three-tier или Multitier architecture) предполагает наличие следующих компонентов приложения: ...

Доступ, то собственник сервера не идет в милицию, а нанимает хакера и «залатывает брешь» в защите. ГЛАВА 2. УГОЛОВНО-ПРАВОВАЯ ХАРАКТЕРИСТИКА ПРЕСТУПЛЕНИЙ В СФЕРЕ КОМПЬЮТЕРНОЙ ИНФОРМАЦИИ 2.1. Неправомерный доступ к компьютерной информации В статье 272 Уголовного кодекса РФ предусмотрена ответственность за неправомерный доступ к компьютерной информации, охраняемой законом, т.е. информации на...

Наверное, не нужно объяснять, что многие пользователи частенько в самый неподходящий момент наблюдают на экране монитора сообщение о том, что какой-то исполняемый файл Давайте посмотрим, что такое Win32 и почему возникают ошибки архитектуры или файловой системы. Рассмотрев эти два вопроса, можно будет найти решение проблемы несоответствия приложения данному стандарту.

Что такое Win32

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

Из истории создания операционных систем известно, что сначала они были 8- и 16-битными, чуть позднее трансформировались в 32-битные и, наконец, в 64-битные. Наравне с эволюцией принципов работы самих «операционок» изменялись и файловые системы. Самой распространенной до недавнего времени считалась Она завоевала такую популярность, что до сих пор разработчики IT-гиганта Microsoft не исключают ее поддержку в новейших версиях ОС Windows.

Кстати, понятие того, что такое Win32, в равной степени применимо и к «операционкам» типа XP и Vista, поскольку даже при наличии пришедшей на смену FAT32, все равно версии самих ОС в плане архитектуры оставались 32-разрядными.

С появлением Windows 7 был осуществлен переход на архитектуру 64 бита, однако для пользовательской установки можно найти и 32-битную версию любой из четырех сборок «семерки».

Почему возникают ошибки

Теперь рассмотрим всех волнующий вопрос, что такое «Не является Win32-приложением» (такой-то и такой-то установочный или исполняемый компонент). Во-первых, самой простой причиной можно назвать сам файл, созданный, допустим, в Linux или Mac OS X, который, естественно, во всех системах Windows просто не распознается по причине того, что «операционка», так сказать, не знает, что это за компонент и чем его открыть. Очень часто такие ситуации можно наблюдать при работе с образами дисков типа.dmg или некоторыми архивными данными.

С другой стороны ошибки могут возникать и с «родными» приложениями Windows. Отвечая на вопрос о том, Win32, стоит отметить, что это программа, динамическая библиотека или драйвер, изначально созданные с использованием архитектуры 32 бита. Теперь, наверное, понятно, что 64-битное приложение или драйвер в 32-битной системе работать не будет.

Реже встречаются ошибки открытия исполняемых файлов или архивов. Тут проблема может заключаться в том, что файл не был загружен (скопирован) целиком или при этом произошли сбои. В этом случае система точно так же может выдавать сообщение о несоответствии формата или типа открываемого файла требованиям самой системы.

Простейшие методы устранения ошибок

Однако методов устранения таких неполадок существует очень много. Простейшим решением может стать загрузка из сети Интернет специализированного файла Win32.reg с его последующим запуском.

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

Иногда ситуация может быть связана с несоответствием файловых систем. В этом случае понадобится произвести форматирование диска или раздела с применением, например, FAT32 (особенно при переходе с ОС 64 бита на 32 бита).

Бывают ситуации, когда требуется обновление Microsoft .NET Framework, где в настройках платформы нужно указать поддержку абсолютно всех процессоров, включая x86. В общем, примеров можно приводить достаточно много.

Если это вирус

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

Рассмотрим одну из самых известных угроз. Что такое Trojan:Win32 (Gatak или еще какая-либо модификация)? Да, обычный компьютерный который, используя бреши в системе безопасности, пытается получить доступ к компьютеру удаленного пользователя с целью кражи информации или получения над компьютерным терминалом полного контроля.

Тут уж точно в своем распоряжении нужно иметь качественный штатный антивирус или максимальное мощное средство проверки системы в (например, Kaspersky Virus Removal Tool или Rescue Disc), поскольку иногда стандартными методами отследить появление угрозы в системе не представляется возможным.

Заключение

Вот, собственно, хоть и кратко, мы рассмотрели вопрос о том, что такое Win32. Конечно, информация подана в сжатом виде, однако рядовому пользователю лезть в дебри программирования и понимания принципов использования архитектуры «операционки» или файловой системы и не нужно. В крайнем случае достаточно выяснить проблему возникновения ошибок и выбрать методику их устранения.

Понравилась статья? Поделиться с друзьями: