Установка и настройка Windows 2000


           

Установка и настройка Windows 2000

Пользователю, который "включил компьютер, но ничего не работает", обычно не до смеха, особенно если он не может самостоятельно выяснить, что случилось, и устранить неполадку. Посмотрим на вещи реально: поскольку проблемы с загрузкой возможны при работе с любой операционной системой, то и Windows 2000 не является исключением из общего правила. Несмотря на изменение названия (Windows 2000 вместо Windows NT 5.0), эта операционная система базируется на технологии NT (этот факт отражен в заставке, появляющейся при запуске систем). Именно по этой причине в процессе загрузки Windows 2000 могут возникать некоторые проблемы, с которыми сталкивались ранее пользователи операционных систем Windows NT. Тем не менее стоит порадовать пользователей и хорошими новостями: система действительно стала надежнее, стабильнее, и, кроме того, в ее состав добавлены новые средства устранения как проблем с загрузкой, так и других неполадок.
Грамотный пользователь не должен пугаться, услышав слова "boot-сектор", "главная загрузочная запись", "POST" и т. п. Чтобы по возможности быстро и с минимальными потерями выйти из ситуации, при которой возникают проблемы с загрузкой Windows 2000, необходимо знать, как происходит процесс загрузки, от момента включения компьютера и до регистрации пользователя в системе.

Требования к минимальной конфигурации, необходимой для установки Windows 2000
Опцию FAT следует выбирать, если объем выбранного раздела жесткого диска не превышает 2 Гбайт, и при этом требуется обеспечить возможности доступа к файлам на этом разделе при загрузке компьютера под управлением таких операционных систем, как MS-DOS, Windows 3x, Windows 95, и OS/2.

Способы установки Windows 2000
Обычная установка Windows 2000
Запуск программы установки
Запуск программы установки с CD
Программы WINNT и WINNT32
Запуск программы установки через сеть
Обновление существующих систем
Обновление версий Windows до Windows 2000
Подготовка процесса инсталляции

Запуск систем Windows 2000
Если в меню загрузчика выбрана одна из версий Windows NT/2000 (или начала загружаться система по умолчанию, когда истек срок действия таймера), то NTLDR вызывает Ntdetect.com, чтобы собрать информацию о физических устройствах, подключенных на данный момент к компьютеру. Ntdetect.com возвращает полученную информацию загрузчику NTLDR.

Распознавание аппаратных средств
Выбор конфигурации (аппаратного профиля)
Загрузка ядра
Раздел HKEY_LOCAL_MACHINE\SYSTEM\Select
Инициализация ядра
Загрузка и инициализация драйверов устройств
Загрузка сервисов
Параметр BootExecute
Раздел Memory Management
Раздел DOS Devices

Поддержка Plug and Play
В Windows 2000 теперь в полном объеме реализована технология Plug and Play — набор стандартов аппаратной и программной поддержки, позволяющей компьютерной системе распознавать и адаптировать изменения аппаратной конфигурации без вмешательства пользователя и без необходимости перезагрузки компьютера. Новые средства операционной системы, выполняющие задачи по управлению аппаратными средствами, — Мастер оборудования (Hardware Wizard) и Диспетчер устройств (Device Manager) — существенно упрощают установку новых устройств, таких как устройства CD-ROM, сетевые адаптеры, жесткие диски

I/O Manager
Интерфейс WDM для Plug and Play
Типы драйверов
Уровни драйверов
Объекты устройств
Дополнительные интерфейсы Windows 2000
Шинные драйверы WDM
Драйверы устройств WDM
Компоненты Plug and Play в режиме пользователя
Дерево устройств Plug and Play

Пользовательский интерфейс
Операционные системы из семейства Windows 2000 представляют собой стратегическое направление, на развитие которого брошены лучшие силы разработчиков Microsoft! В частности, предполагается, что Windows 2000 Professional станет стандартной операционной системой для клиентских ПК, применяющихся в деловых целях. Переход на новую операционную систему — очень серьезное мероприятие, а для некоторых пользователей — еще и стресс.

Новые возможности рабочего стола
Персонализированные меню и кнопка Пуск (Start)
Вкладка Настройка меню окна Свойства
Опция Использовать сокращенные
Встроенные и пользовательские панели
Список панелей в подменю команды
Панели инструментов (Toolbars)
Панель инструментов Быстрый запуск
Улучшенный интерфейс диалоговых
Новый интерфейс диалогового окна

Панель управления в Windows 2000
Как и в предыдущих версиях Windows NT, основным назначением панели управления (Control Panel) в Windows 2000 является конфигурирование системы. Окно панели управления в Windows 2000 открывается точно таким же образом, как это делалось в Windows NT 4.0 — для этого следует в меню Пуск (Start) выбрать опции Настройка | Панель управления (Settings | Control Panel).

Окно панели управления (Control
Поддержка многоязычных документов в Win 2000
Поддержка стандарта Unicode
Как реализована поддержка многоязычных данных
Вкладка Языки и раскладки (Input
Индикатор языка ввода на панели задач
Различия реализаций многоязычной
Шрифты и работа с ними
Новый формат шрифта ОрепТуре
Как Windows 2000 работает со шрифтами

Общие концепции консоли управления Microsoft
В Windows 2000 был кардинально изменен интерфейс управления операционной системой. В соответствии с новой концепцией Microsoft из системы Windows NT были удалены все автономные и несовместимые друг с другом административные утилиты и разработана единая среда управления, получившая название консоль управления Microsoft (Microsoft Management Console, MMC). Эта общая консоль управления разработана для запуска всех программных модулей администрирования, конфигурирования или мониторинга локальных компьютеров и сети в целом. Такие законченные модули называются оснастками (snap-ins).

Создание панелей задач
Окно мастера создания панелей задач
Окно выбора элемента узла и команды
Окно консоли с панелью задач
Установка опций консоли
Запуск инструментов ММС
Оснастки Windows 2000
Оснастки имеющиеся в Windows 2000 Professional
Дополнительные оснастки
Управление компьютером (Computer Management)

Общие сведения о файловых системах
Windows 2000 поддерживает распределенную файловую систему (Distributed File System, DFS) и шифрующую файловую систему (Encrypting File System, EFS). Хотя DFS и EPS и названы "файловыми системами", они не являются таковыми в строгом понимании этого термина. Так, DFS представляет собой расширение сетевого сервиса, позволяющее объединить в единый логический том сетевые ресурсы, расположенные в разделах с различными файловыми системами. Что касается EPS, то это — надстройка над NTFS, которая дополняет NTFS возможностями шифрования данных.

Передача права владения
Точки соединения NTFS
Сравнение точек соединения DFS и NTFS
Различия точек соединения DFS и NTFS
Работа с точками соединения NTFSAW
Дефрагментация диска
Структурные новшества NTFS 5 0AW
Состав информации записываемой в MFT
Разделы и тома

Восстановление системы
Возникновение проблем может быть вызвано некорректно работающими приложениями и плохо написанными драйверами устройств. Стоит ли говорить о том, что такие проблемы могут создать у пользователей впечатление о Windows 2000 как о нестабильно работающей системе? Поэтому, несмотря на существенное повышение надежности системы и ее устойчивости к сбоям, проблемы все равно возможны (хотя бы как следствие "правила самолета"), и к их устранению надо быть готовым.

Безопасный режим загрузки (Safe mode)
Резервное копирование и восстановление
Вкладка Сервис (Tools) диалогового
Резервное копирование системных файлов
Системные конфигурационные файлы
Восстановление системных данных
Изготовление диска аварийного восстановления
Консоль восстановления Windows 2000
Способы запуска консоли восстановления
Запуск консоли восстановления

Управление общими дисковыми ресурсами
Локальное и удаленное администрирование общих ресурсов в Windows 2000 осуществляется с помощью оснастки Общие папки (Shared Folders). (В Windows 4.0 аналогичные функции выполняла утилита Server панели управления.) С ее помощью можно также управлять сеансами и открытыми файлами. Она входит в стандартный инструмент администрирования — Управление компьютером (Computer Management). Ниже мы рассмотрим, как с помощью оснастки Общие папки можно создать общий ресурс.

Окно свойств общего ресурса
Управление DFS
Создание корня DFS
Окно оснастки Распределенная файловая
Создание дочерних логических имен DFS
Создание дочернего логического имени DFS
Добавление реплик к логическому имени DFS
Альтернативные общие ресурсы
Управление репликацией DFS

Печать в Windows 2000
Печать через Интернет. Архитектура печати Windows 2000 интегрирована с технологиями Интернет. Клиент может обращаться к сетевым принтерам через корпоративные интрасети или через Интернет. После того как принтер создан и разрешено его совместное использование, он появляется в HTML-папке принтеров.

Папка принтеров
Управление доступом к принтерам
Один принтер - одно устройство печати
Несколько принтеров - одно устройство печати
Один принтер - несколько устройств печати
Отсрочка печати документов
Срочность печати и уровни приоритета
Установка уровней приоритетов печати
Использование пула печати

Windows 3.1 для программиста -том 1

Операционная система Microsoft Windows по своим возможностям не только намного превосходит MS-DOS, но и даже просто не сравнима с MS-DOS. Удобный, хорошо продуманный, а главное, стандартизованный для всех программ Windows пользовательский интерфейс интуитивно ясен и удобен для изучения. Поэтому после появления Microsoft Windows версии 3.0 всего за несколько лет произошла настоящая революция прикладного программного обеспечения персональных компьютеров - практически все основные программные продукты были переделаны для работы в среде Windows. При этом они приобрели свойства и возможности, недостижимые ранее из-за ограничений, накладываемых операционной системой MS-DOS.
Но к сожалению, программирование для Windows - гораздо более трудоемкое и кропотливое занятие, чем программирование для MS-DOS. Это связано, в первую очередь, с обилием новых возможностей. Для создания пользовательского интерфейса и выполнения других задач вам предлагается набор из более чем тысячи функций! Если же вы собираетесь работать с мультимедиа или другими дополнительными подсистемами Windows, набор функций еще больше расширяется.

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

Компоненты и подсистемы Windows
Файловая система
Управление программами
Управление оперативной памятью
Драйверы устройств ввода/вывода
Библиотеки динамической загрузки DLL
Интерфейс графических устройств GDI

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

Приложение OEM2ANSI
Текстовый курсор

Windows 3.1 для программиста -том 2

Во второй части мы продолжим изучение программного интерфейса Windows. Будут рассмотрены ресурсы, стандартные (предопределенные) классы окон, а также диалоговые панели.
Первая глава посвящена ресурсам. Ресурсы - это данные, которые добавляются в файл загрузочного модуля приложения Windows и могут при необходимости загружаться в оперативную память. Расположение данных в ресурсах приложения позволяет достичь более эффективного использования памяти. Программы MS-DOS были вынуждены загружать, например, строки сообщений, в оперативную память или реализовывать собственную логику для их динамической загрузки из файлов. Для приложений Windows существует более элегантный способ, исключающий перегрузку памяти ненужными данными и избавляющий программиста от необходимости динамической загрузки данных из файлов.

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

Включение ресурсов
Таблица текстовых строк
Создание таблицы
Загрузка строки из таблицы
Приложение STRING
Файл string\string.cpp
Файл string\string.hpp
Файл string\string.rc
Файл string\string.def
Редактирование таблицы строк

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

Список класса LISTBOX
Создание списка
Стили списка
Коды извещения
Сообщения для списка
LB_ADDSTRING
LB_DELETESTRING
LB_DIR
LB_FINDSTRING

Приложение DLGCOMBO
Следующее приложение называется DLGCOMBO. Оно создает диалоговую панель, содержащую список "combobox", две кнопки ("OK" и "Cancel") и пиктограмму ( 3.5). С его помощью мы продемонстрируем использование функций, предназначенных для работы с органами управления, расположенными в диалоговой панели

Файл dlgcombo\dlgcombo.cpp
Файл dlgcombo\dlgcombo.hpp
Файл dlgcombo\dlgcombo.rc
Файл dlgcombo\appicon.ico
Файл dlgcombo\dlgcombo.def
Приложение DLGTAB
Файл dlgtab\dlgtab.cpp

Windows 3.1 для программиста -том 3

Первая глава посвящена созданию меню в приложениях Windows. Практически в любом стандартном приложении Windows есть меню, расположенное под заголовком главного окна приложения, а также системное меню. Операционная система Windows имеет мощную поддержку меню, избавляя программиста от рутинной работы и полностью обеспечивает интерфейс между меню и пользователем.
Для создания меню чаще всего используется шаблон, подготовленный редактором ресурсов Resource Workshop или аналогичным инструментом. Этот шаблон хранится в файле загрузочного модуля приложения вместе с другими ресурсами. Вы также можете создавать меню динамически во время работы приложения, используя специально предназначенные для этого функции программного интерфейса Windows. Мы расскажем вам о различных способах создания меню, а также о том, как подключить к меню клавиатурный интерфейс. Вы сможете создать меню из графических изображений bitmap.

Классификация типов меню
Для активизации строки меню вам надо установить на нее курсор и сделать щелчок левой клавишей мыши, либо нажать клавишу Alt и затем клавишу, соответствующую подчеркнутой букве. Например, для активизации строки "File" следует использовать клавиши Alt и F. Если нажать, а затем отпустить клавишу Alt, нужную строку в меню приложения можно будет выбрать клавишами перемещения курсора по горизонтали Left и Right.

Создание меню при помощи шаблона
Создание шаблона меню
Подключение меню к окну приложения
Подключение меню при регистрации класса

Приложение LMEM
Автоматический сегмент данных приложения является перемещаемым. Операционная система Windows фиксирует сегмент данных при активизации приложения и расфиксирует его во время переключения на другие приложения. Поэтому логический адрес сегмента данных может изменяться.

Статическая память
Автоматическая память
Дополнительная память в структуре класса окна
Дополнительная память в структуре окна
Ресурсы приложения
Функция malloc и farmalloc
Работа с локальной таблицей дескрипторов
Работа с большими массивами данных

Windows 3.1 для программиста. Дополнительные главы

Так как приложения Windows работают не в гордом одиночестве (как программы MS-DOS), а в компании других приложений, у пользователя должна быть возможность передавать данные из одного приложения в другое или даже организовать постоянно действующий канал передачи данных между различными приложениями.
Для однократной или эпизодической передачи данных можно использовать универсальный буфер обмена Clipboard и соответствующие функции программного интерфейса Windows, которые мы опишем во второй главе.
Вы можете также организовать канал передачи данных между любыми приложениями, пользуясь механизмом динамической передачи данных DDE. Этот механизм, а также интерфейсная dll-библиотека DDEML будет описана в третьей главе.

Многооконный интерфейс MDI
Как пользователь операционной системы Windows вы, наверное, хорошо знакомы с многооконным интерфейсом MDI (Multiple Document Interface), позволяющим в одном приложении работать одновременно с несколькими документами или с разными представлениями одного и того же документа. Этот интерфейс описан в руководстве по разработке интерфейса пользователя System Application Architecture Common User Access Advanced Interface Design Guide

Окна MDI-приложения
Инициализация MDI-приложения
Изменения в цикле обработки сообщений
Функции окон MDI-приложения
Функция окна Frame Window

Подготовка разделов
Как мы уже говорили, исходный текст справочной системы, поступающий на вход компилятора Help Compiler, должен быть сохранен в формате RTF (Rich Text Format). Этот формат описан в документации, которая поставляется вместе с SDK, но мы не знаем пока еще никого, подготовившего исходный текст справочной системы в этом формате. Приведем здесь небольшой фрагмент текста в формате RTF.

Атрибуты разделов
Назначение атрибутов разделам справки
Создание перекрестных ссылок
Создание вторичного окна
Ссылка на другой hlp-файл
Создание исходного текста для hlpfile.hlp
Создание файла проекта справочной системы
Листинг 4.1. Файл hlpfile/hlpfile.hpj

Инициализация реального режима
Процедура инициализации реального режима выводит текстовую строку, пользуясь функцией 09h прерывания INT21h. Как правило, виртуальные драйверы не отображают никаких сообщений, если инициализация выполняется без ошибок

Системная критическая инициализация
Программный интерфейс драйвера
Копирование строк
Фильтр прерывания INT21h
Вызов функции обратного вызова
Вызов процедуры в среде виртуальной машины
Определение текущего диска и каталога
Файл определения модуля виртуального драйвера
Файл vxdsrv\vxdsrv.def

Создание WIN32-приложений с учетом специфики 64-разрядной Windows

Сейчас Microsoft поставляет операционные системы Windows с тремя ядрами. Каждое ядро оптимизировано под свои виды вычислительных задач. Microsoft пытается переманить разработчиков программного обеспечения на Windows-платформы, утверждая, что интерфейс прикладного программирования (application programming interface, APT) у каждой из них одинаков. Это означает лишь то, что, научившись писать Windows-приложения для одного ядра, Вы поймете, как сделать то же самое для остальных.
Поскольку я объясняю, как писать Windows-приложения на основе Windows API, то теоретически все, о чем Вы узнаете из моей книги, применимо ко всем трем ядрам. На самом деле они сильно отличаются друг от друга, и поэтому одни и те же функции соответствующих операционных систем реализованы по-разному. Скажем так: базовые концепции одинаковы, но детали могут различаться.

Сегодняшние Windows-платформы
Windows 2000 рассчитана на рабочие станции и серверы, а также на применение в центрах обработки данных Отказоустойчива - плохо написанные программы не могут привести к краху системы. Защищена - несанкционированный доступ к ресурсам (например, файлам или принтерам), управляемым этой системой, невозможен. Богатый набор средств и утилит для администрирования системы в масштабах организации.

Сегодняшние Windows-платформы
Ядро Windows 2000
Ядро Windows 98
Ядро Windows CE
Завтрашние Windows-платформы
Что нового в четвертом издании
В этой книге нет ошибок

Вы тоже можете это сделать
О'кэй, я показал, как функции Windows сообщают об ошибках. Microsoft позволяет Вам использовать этот механизм и в собственных функциях. Допустим, Вы пишете функцию, к которой будут обращаться другие программы. Вызов этой функции может по какой-либо причине завершиться неудачно, и Вам тоже нужно сообщать об ошибках. С этой целью Вы просто устанавливаете код последней ошибки в потоке и возвращаете значение FALSE, INVALID_HANDLE_VALUE, NULL или что-то другое, более подходящее в Вашем случае.

Вы тоже можете это сделать
Программа-пример ErrorShow

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

Одно- и двухбайтовые наборы символов
Unicode: набор широких символов
Почему Unicode?
Windows 2000 и Unicode
Windows 98 и Unicode
Windows CE и Unicode
В чью пользу счет?
Unicode и СОМ
Как писать программу с использованием Unicode
Unicode и библиотека С

Что такое объект ядра
Каждый объект ядра — на самом деле просто блок памяти, выделенный ядром и доступный только ему. Этот блок представляет собой структуру данных, в элементах которой содержится информация об объекте. Некоторые элементы (дескриптор защиты, счетчик числа пользователей и др.) присутствуют во всех объектах, но большая их часть специфична для объектов конкретного типа.

Учет пользователей объектов ядра
Защита
Таблица описателей объектов ядра
Создание объекта ядра
Закрытие объекта ядра
Совместное использование объектов ядра
Наследование описателя объекта

Ваше первое Windows-приложение
Windows поддерживает два типа приложений: основанные на графическом интерфей се (graphical user interface, GUI) и консольные (console user interface, CUI) V приложе ний первого типа внешний интерфейс чисто графический GUI-приложения создают окна, имеют меню, взаимодействуют с пользователем через диалоговые окна и вооб ще пользуются всей стандартной "Windows'oвской" начинкой.

Описатель экземпляра процесса
Описатель предыдущего экземпляра процесса
Командная строка процесса
Переменные окружения
Привязка к процессорам
Режим обработки ошибок
Текущие диск и каталог для процесса

Определение ограничений, налагаемых на процессы в задании
Создав задание, Вы обычно строите "песочницу" (набор ограничений) для включае мых в него процессов. Ограничения бывают нескольких видов: базовые и расширенные базовые ограничения — не дают процессам в задании монопольно захватывать системные ресурсы; базовые ограничения по пользовательскому интерфейсу (UI) — блокируют возможность его изменения;

Определение ограничений
Включение процесса в задание
Завершение всех процессов в задании
Получение статистической информации о задании

В каких случаях потоки создаются
Поток (thread) определяет последовательность исполнения кода в процессе. При инициализации процесса система всегда создает первичный поток Начинаясь со стартовою кодц из библиотеки С/С++, который в свою очередь вызывает входную функцию (WinMain, wWinMain, main или wmain) из Вашей программы, он живет до того момента, когда входная функция возвращает управление стартовому коду и тот вызывает функцию ExitProcess. Большинство приложений обходится единственным, первичным потоком

В каких случаях потоки не создаются
Ваша первая функция потока
Функция CreateThread
Параметр psa
Параметр cbStack
Параметры pfnStartAddr и pvParam
Параметр pdwThreadlD
Завершение потока
Возврат управления функцией потока

Приостановка и возобновление потоков
В объекте ядра "поток" имеется переменная — счетчик числа простоев данного по тока При вызове CreateProcess или CreateThread он инициализируется значением, равным 1, которое запрещает системе выделять новому потоку процессорное время. Та кая схема весьма разумна: сразу после создания поток не готов к выполнению, ему нужно время для инициализации.

Функция Sleep
Переключение потоков
Определение периодов выполнения потока
Структура CONTEXT
Приоритеты потоков

Атомарный доступ: семейство Inferlockect-функций
Я объявил глобальную переменную g_n и инициализировал ее нулевым значени ем. Теперь представьте, что я создал два потока: один выполняет ThreadFunc1, дру гой — ThreadFunc2 Код этих функций идентичен: обе увеличивают значение глобаль ной переменной g_x па 1. Поэтому Вы, наверное, подумали: когда оба потока завер шат свою работу, значение g_x будет равно 2. Так ли это? Может быть.

Кэш-линии
Более сложные методы синхронизации потоков
Худшее, что можно сделать
Критические секции
Критические секции: важное дополнение

Wait-функции
Wait-функции позволяют потоку в любой момент приостановиться и ждать освобож дения какого-либо объекта ядра. Из всего семейства этих функций чаще всего исполь зуется WaitForSingleObject: DWORD WaitForSingleObject( HANDLE hObject, DWORD dwMilliseconds);

Wait-функции
Побочные эффекты успешного ожидания
События

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

Программа-пример lnterlockedType
Синхронизация в сценарии
Программа-пример SWMRG
Реализация функции WaitForMultipleExpressions
Программа-пример WaitForMultExp

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

Асинхронный вызов функций
Вызов функций через интервалы времени
Программа-пример TimedMsgBox
Вызов при освобождении объектов ядра

Работа с волокнами
Во-первых, потоки в Windows реализуются на уровне ядра операционной системы, которое отлично осведомлено об их существовании и "коммутирует» их в соответ ствии с созданным Microsoft алгоритмом В то жс время волокня реализованы на уров не кода пользовательского режима, ядро ничего не знает о них, и процессорное вре мя распределяется между волокнами по алгоритму, определяемому Вами.

Работа с волокнами
Программа-пример Counter

Виртуальное адресное пространство процесса
В Windows 2000 память, принадлежащая собственно операционной системе, тоже скрыта от любого выполняемого потока. Иными словами, ни один поток не может случайно повредить ее данные. А в Windows 98 последнее, увы, не реализовано, и есть вероятность, что выполняемый поток, случайно получив доступ к данным операционной системы, тем самым нарушит ее нормальную работу.

Раздел для общих MMF
Раздел для кода и данных режима ядра
Регионы в адресном пространстве
Передача региону физической памяти
Физическая память и страничный файл
Физическая память в файле не хранится
Атрибуты защиты
Защита типа «копирование при записи»

Системная информация
Многие параметры операционной системы (размер страницы, гранулярность выделения памяти и др) зависят от используемого в компьютере процессора Поэтому нельзя жестко «зашивать» их значения в исходный код пpoгpaмм Эту информацию надо считывать в момент инициализации процесса с помощью функции GetSystemfnfo

Системная информация
Программа-пример Syslnfo
Статус виртуальной памяти
Программа-пример VMStat
Определение состояния адресного пространства
Функция VMQuery

Резервирование региона в адресном пространстве
Для большинства программистов возможность выбора конкретного адреса резер вируемого региона — нечто совершенно новое Вспомните, как это делалось раньше операционная система просто находила подходящий по размеру блок памяти, выделяла этот блок и возвращала его адрес Но поскольку каждый процесс владеет собственным адресным пространством, у Вас появляется возможность указывать операционной системе желательный базовый адрес резервируемого региона

Резервирование региона в адресе
Передача памяти зарезервированному региону
Резервирование региона с передачей памяти
Когда региону передают физическую память
Возврат физической памяти и региона
Когда физическую память возвращают системе

Стек потока в Windows 98
Блок перед стеком предназначен для перехвата его переполнения, а блок после стска — для перехвата обращений к несуществующим областям стека. Чтобы понять, какая польза от последнего блока, рассмотрим такой фрагмент кода

Стек потока в Windows 98
Функция из С/С++ для контроля стека
Программа-пример Summation

Проецирование в память EXE- и DLL-файлов
При вызове из потока функции CreateProcess система действует так: Отыскивает ЕХЕ-файл, указанный при вызове CreateProcess. Если файл не най ден, новый процесс не создастся, а функция возвращает FALSE. Создает новый объект ядра «процесс» Создает адресное пространство нового процесса

Программа-пример Applnst
Файлы данных, проецируемые в память
Метод 1: один файл, один буфер
Метод 2: два файла, один буфер
Метод 3: один файл, два буфера
Метод 4: один файл и никаких буферов
Использование проецируемых в память файлов
Создание или открытие объекта ядра «файл»
Создание объекта ядра «проекция файла»

Стандартная куча процесса
При инициализации процесса система создает в его адресном пространстве стандарт ную кучу (process's default heap) Ее размер по умолчанию — 1 Мб Но система позволяет увеличивать этот размер, для чего надо указать компоновщику при сборке программы ключ /HEAP

Дополнительные кучи в процессе
Защита компонентов
Более эффективное управление памятью
Локальный доступ
Исключение издержек синхронизации потоков
Быстрое освобождение всей памяти в куче
Создание дополнительной кучи
Выделение блока памяти из кучи
Изменение размера блока

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

DLL и адресное пространство процесса
Общая картина
Создание DLL-модуля
Что такое экспорт
Создание DLL отличных от Visual C++

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

Явная загрузка DLL
Явная выгрузка DLL
Явное подключение идентификатора
Функция входа/выхода
Уведомление DLL_PROCESS_ATTACH
Уведомление DLL_PROCESS_DETACH
Уведомление DLL_THREAD_ATTACH

Динамическая локальная память потока
Каждый флаг выполняемого в системе процесса может находиться в состоянии FREE или INUSE, указывая, свободна или занята данная область локальной памяти потока (TLS-область). Microsoft гарантируетдоступность по крайней мере TLS_MINIMUM_AVAILABLE битовых флагов. Идентификатор TLS_MINIMUM_AVAILABLE определен в файле WinNT.h как 64. Но в Windows 2000 этот флаговый массив вмещает свыше 1000 элементов!

Динамическая локальная память потока
Использование динамической TLS
Статическая локальная память потока

Пример внедрения DLL
Допустим, Вы хотите создать подкласс от экземпляра окна, порожденного другим процессом. Это, как Вы помните, позволит изменять поведение окна Все, что от Вас для этого требуется, — вызвать функцию SetWindowLongPtr, чтобы заменить адрес оконной процедуры в блоке памяти, принадлежащем окну, новым — указывающим на Вашу функцию WndProc.

Пример внедрения DLL
Внедрение DLL c использованием реестра
Внедрение DLL с помощью ловушек
Утилита для сохранения позиций элементов

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

Funcenstein1
Funcenstein2
Funcenstein3
Funcfurter1
Проверьте себя: FuncaDoodleDoo
Funcenstein4
Funcarama1
Funcarama2
Funcarama3

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

Funcmeister1
Funcmeister2
EXCEPTION_EXECUTE_HANDLER
Некоторые полезные примеры
Глобальная раскрутка
Остановка глобальной раскрутки

Отладка по запросу
Windows позволяет подключать отладчик к любому процессу в любой момент времени — эта функциональность называется отладкой по запросу (just-in-time debugging). В этом разделе я расскажу, кяк она работает Щелкнув кнопку Cancel, Вы сообщаете функции UnhandledExceptionFilter о том, что хотиге начать отладку процесса.

Отключение вывода сообщений об исключении
Принудительное завершение процесса
Создание оболочки вокруг функции потока
Создание оболочки вокруг всех функций потоков
Автоматический вызов отладчика
Явный вызов функции UnhandledExceptionFilter
Функция UnhandledExceptionFilter изнутри
Исключения и отладчик

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

Посылка асинхронных сообщений в очередь
Посылка синхронных сообщений окну
Пробуждение потока
Флаги состояния очереди

Поток необработанного ввода
Общая схема модели аппаратного ввода в системе показана на 27-1. При запуске система создает себе особый поток необработанного ввода (raw input thread, RIT) и системную очередь аппаратного ввода (system hardware input queue, SHIQ). RIT и SHIQ — это фундамент, на котором построена вся модель аппаратного ввода.

Поток необработанного ввода
Локальное состояние ввода
Ввод с клавиатуры и фокус
Управление курсором мыши
Подключение к очередям виртуального ввода

Азбука программирования в Win32 API

Предлагаемая читателю книга явилась плодом долгих раздумий авто­ра. Дело в том, что подавляющее большинство книг, посвященных про­граммированию для Windows, написаны с таким расчетом, чтобы пользо­ватель чуть ли не через пару прочитанных страниц мог начать программировать. Возможно, эта задача успешно выполняется. Но в этом случае возникает другая проблема: у многих программистов после по­лучения первоначальных знаний, достаточных для создания окна и простых диалогов, отпадает желание двигаться дальше. Подавляющее большинство возможностей, предоставляемых системой, остаются вне поля зрения.
По моему мнению, такой подход к изложению основ Win32 API мето­дологически неверен. Я решил пойти по другому пути: сначала расска­зать читателю о том, какие возможности предоставляет Win32 API, и только потом научить его создавать пользовательский интерфейс. Тем самым я постараюсь достичь того, что программист будет понимать возможности системы. Это позволит ему создавать более интересные программы.

Файл ресурсов
Под словом «Win32 API» автор понимает совокупность функций, предоставляющих программисту возможность создавать программы (или приложения, что то же самое) для Windows NT и Windows'95. Естественно, что эти платформы разнятся между собой. Но набор функций, составляющих API, для них один и тот же. Все функции этого набора являются 32-битными, что отражено в названии интерфейса. При употреблении термина «Win32 API» подразумевается именно набор функций.

Флаги, определяющие внешний вид и состояние окна просмотра деревьев
А теперь, после краткого знакомства с сообщениями, применяемыми в работе с окнами просмотра деревьев, рассмотрим некоторые из этих сообщений, наиболее части применяемые в прикладных программах.

Путеводитель по написанию вирусов под Win32

Серия туториалов "Путеводитель по написанию вирусов под Win32" предназначена для сугубо образовательных целей. По крайней мере именно это было целью перевода: предоставить людям информацию о формате PE-файла, работе операционной системы, таких полезных технологиях, как полиморфизм и многом другом, что может потребоваться кодеру в его нелегком пути к постижению дао программирования. То, как читатели используют эту информацию, остается на их совести.

IMAGE_FILE_HEADER
IMAGE_OPTIONAL_HEADER
IMAGE_SECTION_HEADER
Необходимые изменения
DOS-информация +
Заголоки PE-секции +

Программирование под Win32

Программа 25-1 схожа по конечному результату с простейшим приложением Windows, рассмотрен­ным в гл. 6 (пример 6-1); в ней создается и выводится на экран главное окно приложения, для которого (в отличие от примера 6-1) задаются три дополнительных характеристики: местоположение окна на экране, его размер и цвет фона окна. Программа имеет типичную для OWL-приложений структуру и состоит из трех отчетливо выделенных частей: описания класса приложения и входящих в него функций, описания класса главного окна приложения с его функциями и, наконец, главной функции OwlMain(). Функции с таким именем передается управление при запуске приложения, и она, таким образом, должна обязатель­но присутствовать в любых OWL-приложениях, заменяя собой функцию WinMain() обычных приложе­ний Windows или функцию main() приложений MS-DOS.

Win32 в машинных кодах

Мир машинных кодов для процессоров Intel IA-32 захватывающий и фантастический. Он предоставляет такие богатые возможности для творчества, что будет неудивительно, если через некоторое время станут проводить чемпионаты по спортивному программированию в машинных кодах, а лучшие творения кодеров представлять на выставках, как произведения искусства. Множество интересных находок было накоплено за прошедшие годы кодокопателями, среди которых есть как законные

Введение в машинные коды для Win32
Инструменты

Централизованные организации - перейти
Стоимость основных производственных фондов - перейти
Потребности общества и экономика - перейти
Экономические законы - перейти
Экономическая теория как наука - перейти
Экономическая теория как наука - перейти
Принципы экономической науки - перейти
Некоторые экономические теории - перейти
Adobe InDesign CS2 - перейти
Предисловие - перейти
Обзор программы Adobe InDesign - перейти
Рабочее пространство программы InDesign - перейти
Верстка документа - перейти
Работа с фреймами - перейти
Импортирование и редактирование текста - перейти





Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий