- Справочник по базовым функциям API Windows NT/2000
- Введение
- Структура книги
- Об авторе
- О научных рецензентах
- Комментарии и предложения
- 27 книг для программиста по версии Acronis
- Гайдар Магдануров, Вице-президент компании Acronis:
- Антон Енакиев, вице-президент Acronis по разработке:
- Кирилл Коротаев, вице-президент Acronis по инжинирингу, Acronis Backup и Системам Хранения Данных:
- Гайдар Магдануров, Вице-президент компании Acronis:
- Антон Енакиев, вице-президент Acronis по разработке:
- Кирилл Коротаев, вице-президент Acronis по инжинирингу, Acronis Backup и Системам Хранения Данных:
Справочник по базовым функциям API Windows NT/2000
Windows NT/2000 Native API Reference
Luke Leighton
|
В этой книге базовые функции API описаны в том же стиле, что и в документации комплекта разработки драйверов устройств DDK. Рассматриваемые конструкции были извлечены из Windows NT 4.0 Service Pack 3 и последней бета версии Windows 2000 для процессоров Intel. Несмотря на стилистическое сходство, эта книга существенно отличается от документации DDK. Информация для нее была получена в результате исследования поведения самой Windows NT. В книге содержится полное описание базовых функций API, которого вполне достаточно для разработки утилит на уровне «resource kit», а также другого «нестандартного» программного обеспечения, реализующего возможности, недоступные обычным приложениям. Поскольку предполагается, что читатель знаком с интерфейсом Win32 API, C++ и стандартными библиотеками C++, указание на полную эквивалентность между базовой системной службой и функцией Win32 зачастую является единственным объяснением приведенного в книге материала. Книга разделена на 17 глав и четыре приложения. В каждой главе рассматривается группа взаимосвязанных системных служб. В приложениях представлен дополнительный материал, имеющий особое значение для тех, кто создает приложения, выполняющиеся в режиме ядра.
формат 70×100/16; серия Circle ; 2002, 1 кв.; Вильямс.
Понравилась книга? Порекомендуйте её друзьям и коллегам:
Рекомендуемые книги
Microsoft Windows Server 2012. Полное руководство
Книга для всех
Цифровая фотография. Том 1
Блог Виктора Штонда
Отвечает на вопросы
генеральный директор издательства
Введение
Базовый интерфейс прикладных программ Windows NT — это набор системных служб, поддерживаемых операционной системой Windows NT как для программ, работающих в пользовательском режиме, так и в режиме ядра. Функции базовых API эквивалентны системным вызовам UNIX или системным службам VMS.
В документации по Windows NT базовые API описаны явно недостаточно, поэтому не существует даже общепринятого соглашения, что именно под ними подразумевать. «Базовые API» (native API) и «базовые системные службы» (native system services) являются вполне эквивалентными понятиями. Термин «базовые» (native) служит для того, чтобы отличить API от API Win32, который является интерфейсом операционной системы для взаимодействия с большинством приложений MS Windows.
Считается, что Microsoft отказывается публиковать полную информацию о базовых API потому, что они хотят сохранить за собой свободу изменять в новых версиях интерфейс операционной системы и не быть связанными обязательством гарантировать их совместимость с прежними версиями. Полное документирование интерфейса могло бы стать настоящим тормозом, ведь в этом случае пришлось бы обеспечивать работоспособность и тех функциональных возможностей, которые компания считает явно устаревшими. И в самом деле, вероятно для демонстрации того, что этот интерфейс не должен использоваться рабочими приложениями, в Windows 2000 удалены некоторые функции базовых API, существовавшие в Windows NT 4.0, а отдельные структуры данных были изменены таким образом, чтобы они стали полностью не совместимы с программами, написанными под Windows NT 4.0.
В этой книге базовые API описаны в том же стиле, как и в документации по базовым API комплекта разработки драйверов устройств (DDK — Device Driver Kit). Несмотря на то, что названия параметров базовых системных служб и элементов структур были описаны «в стиле» официального представления API, совпадение их имен с фактическими названиями не гарантируется. Рассматриваемые конструкции были извлечены из Windows NT 4.0 Service Pack 3 и последней бета версии Windows 2000 (Release Candidate 2) для процессоров Intel. Некоторые из функций базовых API на платформе Intel не реализованы (например, поддержка для памяти очень большой емкости (VLM — Very Large Memory), а, следовательно, в этой книге и не описаны. Другие функции (например, поддержка виртуальных машин DOS (VDM — Virtual DOS Machines)) описаны лишь частично. Службы графического интерфейса системы реализованы в win32k.sys и в данной книге не рассматриваются.
Несмотря на стилистическое сходство, эта книга существенно отличается от документации DDK. В основном тем, что информация для данной книги была получена в результате исследования поведения самой Windows NT, а не из ее исходного кода или документации группы разработчиков.
Несмотря на то, что содержащаяся здесь информация основана на скрупулезном анализе, нет никакой гарантии полного отсутствия незначительных ошибок в тексте самой книги. Эти ошибки никоим образом не уменьшают ценности данной книги, которая содержит полное описание базовых API, вполне достаточное для разработки утилит на уровне «resource kit» (то есть инструментальных средств для анализа и отладки), а также и другого «нестандартного» программного обеспечения, реализующего возможности, недоступные обычным приложениям.
Данная книга не рассматривает темы, содержащиеся в документации DDK, а также не повторяет того, что изложено во втором издании книги Дэвида Соломона (David Solomon) Inside Windows NT (Внутренний мир Windows NT). Кроме того, здесь предполагается, что читатель знаком с Win32 API, C++ и стандартными библиотеками C++.
Это введение предназначено для того, чтобы обсудить некоторые общие вопросы, касающиеся базовых API, прежде чем приступить к их подробному рассмотрению.
Структура книги
Книга разделена на 17 глав и четыре приложения. В каждой главе рассматривается группа взаимосвязанных (иногда логически слабо) системных служб, а последняя, 17-ая глава, «Разное», посвящена функциям, не вошедшим в предыдущие главы. Описание каждой системной службы составлено так, чтобы она была понятна сама по себе, и благодаря этому в содержании или предметном указателе можно было бы без труда найти как саму функцию, так и всю связанную с ней информацию.
Порядок следования глав определен исходя из попытки представить предварительное описание системных функций до их применения на конкретных примерах. Например, глава, в которой описываются процессы, следует после глав, посвященных виртуальной памяти и объектам раздела, поскольку системные службы виртуальной памяти и объектов раздела необходимы в примере, демонстрирующем создание процесса.
В приложениях представлен дополнительный материал, который, в основном, не зависит от конкретных системных служб (за исключением, пожалуй, приложения В, «Исключения и отладка», в котором приведены основные сведения о системных службах, устанавливающих и обрабатывающих исключения). Особое значение для тех, кто программирует в режиме ядра, имеет приложение А, «Вызов системных служб из режима ядра», в котором рассматриваются методы создания полноценных системных служб, доступных для программ, работающих в режиме ядра.
Об авторе
Гэри Неббет (Gary Nebbett) начал заниматься операционными системами, когда был включен в группу разработчиков MultiMIRTOS (встроенной операционной системы реального времени для процессора Intel 8086) компании Standard Telecommunication Laboratories сразу же по окончании Лондонского университета в 1982 году. Как только у Гэри пробудился интерес к операционным системам, он испытал свои силы в разработке инструментальных средств отслеживания системных вызовов, восстановления удаленных файлов и перехвата сетевого трафика для тех операционных систем, с которыми ему приходилось работать (в частности, VMS, UNIX и NT). Гэри живет в швейцарском городе Базеле. В свободное время он увлекается игрой в сквош, лыжным кроссом, прогулками в Альпах. Гэри катается на мотоцикле в Черном лесу, а иногда и разгадывает сложные кроссворды. Известно, что он редко отказывается от пары стаканчиков портвейна (особенно в сопровождении кусочка сыра «Стилтон»).
О научных рецензентах
Майкл В. Барри (Michael W. Barry) обладает восемнадцатилетним опытом в области программирования. Получив степень B.S.E.E. в университете города Остин штата Техас, Майкл приступил к работе в корпорации Datapoint Corporation, где он занимался сетями и разработкой настольных систем видеоконференц-связи. Майкл — обладатель 14 патентов — начиная от организации видеотелеконференций и заканчивая обработкой цветного изображения для кластерной печати. Созданием программ для ядра Windows NT и пользовательского режима Майкл занимается начиная с бета-версии NT 3.1 и в настоящий момент является признанным экспертом по операционной системе Windows NT. Майкл — автор и научный рецензент ряда научно-технических изданий. В настоящее время Майкл старший — вице-президент Development and Engineering at T/R systems, Inc. (изобретатели кластерной печати), где он и его группа являются пионерами разработки систем для кластерной печати на базе Windows NT.
Майкл живет в Атланте (штат Джорджия)ы со своей прекрасной женой и двумя замечательными дочерьми. В свое свободное время он наслаждается подводным плаванием, теннисом, футболом, водными лыжами и каноэ.
Томас Л. Новацкий (Thomas L. Nowatzki) обладает более чем 25-летним опытом профессиональной разработки программного обеспечения для ряда операционных платформ и аппаратных средств. Последние 5 лет он занимался анализом архитектуры Intel, производительностью Windows NT и ее внутренней организацией. Формально его образование заключается в обладании степени магистра наук по электронной технике университета Северной Дакоты. Он является соавтором двух патентов США, а также обладателем полудюжины авторских свидетельств, защищающих его права в различных областях компьютерных технологий.
Комментарии и предложения
Задачей нашего издательства является создание серьезных технических книг самого высокого качества и глубокого содержания. Все наши книги сделаны с особым вниманием и тщательностью, подверглись строгой проверке, включая индивидуальную экспертизу представителями профессионального технического сообщества.
Отзывы читателей являются естественным продолжением этого процесса. Если у Вас есть какие-либо замечания и предложения, которые помогут нам улучшить качество данной книги или изменить ее так, чтобы она больше соответствовала Вашим потребностям, свяжитесь с нами по адресу networktech@mcp.com. Пожалуйста, укажите в Вашем сообщении название книги и ее ISBN.
Мы очень ценим Вашу помощь.
Copyright © 1992-2019 Издательская группа «Диалектика-Вильямс»
27 книг для программиста по версии Acronis
Представители компании Acronis, ведущего поставщика решений для резервного копирования, специально для пользователей GeekBrains подготовили список книг, полезных для разработчика. Здесь каждый сможет найти что-нибудь для общего развития, пополнения базовых и специализированных знаний. Программистам, которые в дальнейшем видят себя предпринимателями, будет интересна тематическая подборка от Сергея Белоусова, сооснователя Runa Capital и компаний Parallels и Acronis.
Гайдар Магдануров, Вице-президент компании Acronis:
Профессиональным разработчикам программного обеспечения важно не столько знание какого-то конкретного языка программирования, фреймворков и средств разработки, сколько понимание основных принципов, алгоритмов, процесса разработки и тестирования полученного результата. Тут, на мой взгляд, будет уместна следующая аналогия: умение программировать — как умение писать. Одного только умения писать недостаточно, чтобы написать художественное произведение.
Для того, чтобы «научиться писать», рекомендую одну из книг Роберта Седжвика про алгоритмы — у него есть несколько книг для С++ и для Java. К умению писать код, важно добавить навык «писать качественный код». Про написание качественного кода существует множество книг и блогов, я рекомендую книгу «Защищенный код». Она позволяет хорошо прочувствовать, что у программного кода, помимо достижения конкретной цели, есть еще и задачи быть надежным, безопасным, тестируемым, легко поддерживаемым.
Чтобы быть успешным программистом, востребованным на рынке труда, важно понимать, для чего и как создается программный код. Конечная цель — продукт, и достигается она работой большого количества людей: разработчиков, тестировщиков, архитекторов и менеджеров продукта. Люди, умеющие создавать продукты, а не только «ставить скобки и точки с запятыми», всегда в цене. Классические книги Брукса «Мифический человеко-месяц», Купера «Психбольница в руках пациентов» и Рейнвотера «Как пасти котов» весьма полезны к прочтению.
Весьма увлекательным и полезным чтением для разработчиком будут еще и книги Кристенсена «Дилемма инноватора» и «Showstopper!» Закери — с реальными примерами того, как известные компании создают и решают сложности во время разработки программных продуктов.
Базовые знания:
- Алгоритмы на C++, Роберт Седжвик — Современное и исчерпывающее описание важных алгоритмов и структур данных на C++;
- Алгоритмы на Java, Роберт Седжвик, Кевин Уэйн — Необходимый объем знаний для программиста в области алгоритмов на Java;
- Защищенный код, Майкл Ховард, Дэвид Лебланк — Практические советы и рекомендации по защите создаваемых приложений на всех этапах процесса создания ПО.
Специализация по менеджменту:
Специализация по Product management:
Антон Енакиев, вице-президент Acronis по разработке:
Базовые знания:
- Внутреннее устройство Microsoft Windows, Марк Руссинович, Дэвид Соломон — Руководство по внутреннему устройству и алгоритмам работы основных компонентов Windows;
- Programming Applications for Microsoft Windows, Jeffrey Richter — Руководство по написанию приложений для Windows;
- Программирование серверных приложений для Microsoft Windows 2000, Джеффри Рихтер, Джейсон Кларк — Руководство по созданию высокопроизводительных и надежных серверные приложения для Windows 2000;
- Язык программирования С++, Бьерн Страуструп — Основы программирования на C++ от создателя C++;
- Искусство программирования, Дональд Эрвин Кнут — «Библия программиста» в четырех томах.
Специализация по Windows (Specific for Windows kernel developers):
- Windows NT File System Internals, Rajeev Nagar — Руководство по файловым системам на Windows NT;
- Справочник по базовым функциям API Windows NT/2000, Гэри Неббет — О том, как писать приложения для Windows NT/2000;
- Windows NT Device Driver Development, Peter G. Viscarola, W. Anthony Mason — Руководство по разработке драйверов на Windows NT;
- Использование Microsoft Windows Driver Model, Уолтер Они — Все необходимое для понимания процесса написания драйверов;
- Undocumented Windows NT, Prasad Dabak, Sandeep Phadke — О недосказанном в Windows NT.
Кирилл Коротаев, вице-президент Acronis по инжинирингу, Acronis Backup и Системам Хранения Данных:
Книги обязательные для прочтения системными программистами:
- Что каждый программист должен знать о памяти, Ульрих Дреппер — Что нужно знать о hardware чтобы заниматься software;
- Алгоритмы: построение и анализ, Томас Х. Кормен, Чарльз И. Лейзерсон, Рональд Л. Ривест, Клиффорд Штайн — Все что нужно знать об алгоритмах;
- Теория синтаксического анализа, перевода и компиляции (в 2-х томах), Ахо А., Ульман Дж. — Если вы хотите знать как работают компиляторы и что же на самом деле скрывается за регулярными выражениями.
Для общего развития:
- Сила мгновенных решений, Малкольм Гладуэлл — Все что нужно знать о том, как работает мозг и что такое интуиция;
- Outliers: The Story of Success, Malcolm Gladwell — Для понимания причин успехов и неудачи;
- Серьезный разговор об ответственности. Что делать с обманутыми ожиданиями, нарушенными обещаниями и некорректным поведением, Кэрри Паттерсон, Джозеф Гренни — Эта книга поможет вам развить навыки, необходимые для выхода из сложных ситуаций;
- Marketing High Technology, William H. Davidow — Книга о маркетинге высокотехнологичных продуктов;
- Эмоциональный интеллект 2.0, Тревис Бредберри, Джин Гривз — Книга о развитии эмоционального интеллекта;
- «Квантовая психология», Артур Уилсон — Об аналогиях и параллелях между психологией и физикой. А так же как научиться говорить так, чтобы устанавливать общий контекст и избегать недопонимания.
Для всего остального есть мы: профессия «Веб-разработчик».
Представители компании Acronis, ведущего поставщика решений для резервного копирования, специально для пользователей GeekBrains подготовили список книг, полезных для разработчика. Здесь каждый сможет найти что-нибудь для общего развития, пополнения базовых и специализированных знаний. Программистам, которые в дальнейшем видят себя предпринимателями, будет интересна тематическая подборка от Сергея Белоусова, сооснователя Runa Capital и компаний Parallels и Acronis.
Гайдар Магдануров, Вице-президент компании Acronis:
Профессиональным разработчикам программного обеспечения важно не столько знание какого-то конкретного языка программирования, фреймворков и средств разработки, сколько понимание основных принципов, алгоритмов, процесса разработки и тестирования полученного результата. Тут, на мой взгляд, будет уместна следующая аналогия: умение программировать — как умение писать. Одного только умения писать недостаточно, чтобы написать художественное произведение.
Для того, чтобы «научиться писать», рекомендую одну из книг Роберта Седжвика про алгоритмы — у него есть несколько книг для С++ и для Java. К умению писать код, важно добавить навык «писать качественный код». Про написание качественного кода существует множество книг и блогов, я рекомендую книгу «Защищенный код». Она позволяет хорошо прочувствовать, что у программного кода, помимо достижения конкретной цели, есть еще и задачи быть надежным, безопасным, тестируемым, легко поддерживаемым.
Чтобы быть успешным программистом, востребованным на рынке труда, важно понимать, для чего и как создается программный код. Конечная цель — продукт, и достигается она работой большого количества людей: разработчиков, тестировщиков, архитекторов и менеджеров продукта. Люди, умеющие создавать продукты, а не только «ставить скобки и точки с запятыми», всегда в цене. Классические книги Брукса «Мифический человеко-месяц», Купера «Психбольница в руках пациентов» и Рейнвотера «Как пасти котов» весьма полезны к прочтению.
Весьма увлекательным и полезным чтением для разработчиком будут еще и книги Кристенсена «Дилемма инноватора» и «Showstopper!» Закери — с реальными примерами того, как известные компании создают и решают сложности во время разработки программных продуктов.
Базовые знания:
- Алгоритмы на C++, Роберт Седжвик — Современное и исчерпывающее описание важных алгоритмов и структур данных на C++;
- Алгоритмы на Java, Роберт Седжвик, Кевин Уэйн — Необходимый объем знаний для программиста в области алгоритмов на Java;
- Защищенный код, Майкл Ховард, Дэвид Лебланк — Практические советы и рекомендации по защите создаваемых приложений на всех этапах процесса создания ПО.
Специализация по менеджменту:
Специализация по Product management:
Антон Енакиев, вице-президент Acronis по разработке:
Базовые знания:
- Внутреннее устройство Microsoft Windows, Марк Руссинович, Дэвид Соломон — Руководство по внутреннему устройству и алгоритмам работы основных компонентов Windows;
- Programming Applications for Microsoft Windows, Jeffrey Richter — Руководство по написанию приложений для Windows;
- Программирование серверных приложений для Microsoft Windows 2000, Джеффри Рихтер, Джейсон Кларк — Руководство по созданию высокопроизводительных и надежных серверные приложения для Windows 2000;
- Язык программирования С++, Бьерн Страуструп — Основы программирования на C++ от создателя C++;
- Искусство программирования, Дональд Эрвин Кнут — «Библия программиста» в четырех томах.
Специализация по Windows (Specific for Windows kernel developers):
- Windows NT File System Internals, Rajeev Nagar — Руководство по файловым системам на Windows NT;
- Справочник по базовым функциям API Windows NT/2000, Гэри Неббет — О том, как писать приложения для Windows NT/2000;
- Windows NT Device Driver Development, Peter G. Viscarola, W. Anthony Mason — Руководство по разработке драйверов на Windows NT;
- Использование Microsoft Windows Driver Model, Уолтер Они — Все необходимое для понимания процесса написания драйверов;
- Undocumented Windows NT, Prasad Dabak, Sandeep Phadke — О недосказанном в Windows NT.
Кирилл Коротаев, вице-президент Acronis по инжинирингу, Acronis Backup и Системам Хранения Данных:
Книги обязательные для прочтения системными программистами:
- Что каждый программист должен знать о памяти, Ульрих Дреппер — Что нужно знать о hardware чтобы заниматься software;
- Алгоритмы: построение и анализ, Томас Х. Кормен, Чарльз И. Лейзерсон, Рональд Л. Ривест, Клиффорд Штайн — Все что нужно знать об алгоритмах;
- Теория синтаксического анализа, перевода и компиляции (в 2-х томах), Ахо А., Ульман Дж. — Если вы хотите знать как работают компиляторы и что же на самом деле скрывается за регулярными выражениями.
Для общего развития:
- Сила мгновенных решений, Малкольм Гладуэлл — Все что нужно знать о том, как работает мозг и что такое интуиция;
- Outliers: The Story of Success, Malcolm Gladwell — Для понимания причин успехов и неудачи;
- Серьезный разговор об ответственности. Что делать с обманутыми ожиданиями, нарушенными обещаниями и некорректным поведением, Кэрри Паттерсон, Джозеф Гренни — Эта книга поможет вам развить навыки, необходимые для выхода из сложных ситуаций;
- Marketing High Technology, William H. Davidow — Книга о маркетинге высокотехнологичных продуктов;
- Эмоциональный интеллект 2.0, Тревис Бредберри, Джин Гривз — Книга о развитии эмоционального интеллекта;
- «Квантовая психология», Артур Уилсон — Об аналогиях и параллелях между психологией и физикой. А так же как научиться говорить так, чтобы устанавливать общий контекст и избегать недопонимания.
Для всего остального есть мы: профессия «Веб-разработчик».