Автокликер
Блог
Библиотека
Еще...

Математика

Консервирование

Салаты

Физкультура и спорт

Теория программирования

AJAX

Напитки

Assembler

Выпечка

Национальная кухня

Интернет

Кулинария

Компьютерная графика и дизайн

Плавание

Баскетбол

Рыбы

Гимнастика, фитнес, йога

Шахматы

Компьютерная литература

Теория автоматов

Беременность и уход за ребенком

Дефектология, логопедия

Массаж

Дискретная математика

Позвоночник, суставы

Книги Малахова Г.П.

Детская психология

Общая психология

ВАЗ

Ремонтная мастерская

Детская литература

Психология

Воспитателям

MatLab

Дайвинг

Книги для родителей

Кошки

Хомячки

Собаки

Фотография

Практическая и прикладная психология

Рукоделие

Попугаи

Боевые искусства, самооборона

Linux, Unix, FreeBSD, MacOS

Мир животных

Вождение

Ремонт и строительство

Здоровый образ жизни

Книги для девочек

Цветоводство

Автотранспорт

Энциклопедии, познавательная литература

Зрение

Здоровое питание и диеты

SQL и MySQL

Гастроэнтерология

Фастфуд

JavaScript

Mathcad

Мода, стиль и красота

Flash

Железо

Тяжелая атлетика

PHP

Эзотерика. Парапсихология. Тайны

Книги Болотова Б.В.

Бизнес-книги

Системное программирование

Диетическая кухня

Психология общения

Художественная литература

Сказки

Дизайн, интерьер

ЗАЗ

История бизнеса

Менеджмент

Медицина и здоровье

Зарубежная литература

Развитие и воспитание детей

Компьютерные сети

Ландшафтный дизайн

Педагогика

Возрастная психология

Авто-право

HTML

XML

Python

Perl

Windows

Excel

Правила дорожного движения

Visual Basic

Хобби, увлечения, досуг

Сад, огород

Рисование

Художественная кулинария

Лечебная физкультура

Барбекю. Гриль. Мангал

Книги для мальчиков

Экономика

Нетрадиционная медицина

Маркетинг, реклама и PR

Очищение организма

Банковское дело

Коллекционирование

Бухгалтерский учет, аудит

Финансы, инвестиции

Физика

Генетика

Психодиагностика и тестирование

Механика

Термодинамика

Электромагнетизм, электроника

Оптика

Авторское право

Квантовая физика

MicroSoft Office, OpenOffice

Колебания и волны

C, C , C#

Право

Статистика

CSS

jQuery

Тайм-менеджмент

Трехмерная графика

Социальная психология

Сердце и сосуды

BIOS

DELPHI и Pascal

История психологии

Java, J2ME

Гинекология

Праздники, игры, развлечения

Мотоциклы

Психология личности

Футбол

История педагогики

Десерты

Молекулярная физика

Социальная педагогика

Теория обучения и воспитания

Уголовное право

Фармакология

Малый бизнес

Недвижимость

Теория бизнеса

iPhone и iPad

Ruby

Криптография

CMS

Android

Раскрутка и продвижение сайта

Литература

Личности в истории

ASP.NET

Системное администрирование

САПР

Дом, семья, дети

Здоровое и раздельное питание

Биографии

Путешествия

Современная проза

Саморазвитие

Анатомия и физиология

Семейное и жилищное право

Торговля, продажи, логистика

Словари

Химия

Психотерапия

Oracle

Музыка и танцы

Видеомонтаж

Международное право

Математический анализ

Английский язык

Философия

История России

Изучение языков

Французский язык

Музыка и звук на компьютере

Поэзия

Немецкий язык

Биографии, мемуары

Хирургия

Школьный психолог

Испанский язык

Публицистика

История

Коррекционная педагогика

Культура и искусство

Социология

Политология

Религия

Финансовое право

Всемирная история

1C

Литературоведение

Естествознание

Линейная алгебра

Прокуратура, адвокатура

Русский язык

Итальянский язык

Краткое изложение произведений

Школьный курс

Биология, экология

Промышленная экология

Архитектура

Системное программирование в Windows

Системное программирование в Windows

Побегайло А.П.

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

Издательство: БХВ-Петербург, 2006 г.

ISBN 5-94157-792-3

Количество страниц: 1056.

Содержание книги «Системное программирование в Windows»:

  • 15 Предисловие
  • 19 Глава 1. Операционные системы и их интерфейсы
    • 19 1.1. Назначение операционной системы
    • 19 1.2. Типы операционных систем
    • 21 1.3. Интерфейс программирования приложений Win32 API
    • 22 1.4. Типы данных в Win32 API
    • 24 1.5. Объекты и их дескрипторы в Windows
  • 27 ЧАСТЬ I. УПРАВЛЕНИЕ ПОТОКАМИ И ПРОЦЕССАМИ
  • 29 Глава 2. Потоки и процессы
    • 29 2.1. Определение потока
    • 31 2.2. Контекст потока
    • 33 2.3. Состояния потока
    • 37 2.4. Диспетчеризация и планирование потоков
    • 40 2.5. Определение процесса
  • 41 Глава 3. Потоки в Windows
    • 41 3.1. Определение потока
    • 42 3.2. Создание потоков
    • 47 3.3. Завершение потоков
    • 49 3.4. Приостановка и возобновление потоков
    • 52 3.5. Псевдодескрипторы потоков
    • 53 3.6. Обработка ошибок в Windows
  • 58 Глава 4. Процессы в Windows
    • 58 4.1. Определение процесса
    • 58 4.2. Создание процессов
    • 64 4.3. Завершение процессов
    • 67 4.4. Наследование дескрипторов
    • 75 4.5. Дублирование дескрипторов
    • 81 4.6. Псевдодескрипторы процессов
    • 82 4.7. Обслуживание потоков
    • 88 4.8. Динамическое изменение приоритетов потоков
  • 93 ЧАСТЬ II. СИНХРОНИЗАЦИЯ ПОТОКОВ И ПРОЦЕССОВ
  • 95 Глава 5. Синхронизация
    • 95 5.1. Непрерывные действия и команды
    • 96 5.2. Определение синхронизации
    • 97 5.3. Программная реализация синхронизации
    • 101 5.4. Аппаратная реализация синхронизации
    • 104 5.5. Примитивы синхронизации
  • 109 Глава 6. Синхронизация потоков в Windows
    • 109 6.1. Критические секции
    • 115 6.2. Объекты синхронизации и функции ожидания
    • 121 6.3. Мьютексы
    • 128 6.4. События
    • 137 6.5. Семафоры
  • 143 Глава 7. Взаимоисключающий доступ к переменным
    • 143 7.1. Атомарные операции
    • 144 7.2. Замена значения переменной
    • 146 7.3. Условная замена значения переменной
    • 148 7.4. Инкремент и декремент переменной
    • 150 7.5. Изменение значения переменной
  • 153 Глава 8. Тупики
    • 153 8.1. Определение тупиков
    • 154 8.2. Классификация системных ресурсов
    • 156 8.3. Обнаружение тупиков
    • 158 8.4. Восстановление заблокированного процесса
    • 160 8.5. Предотвращение тупиков
    • 161 8.6. Безопасное завершение потоков в Windows
  • 165 ЧАСТЬ III. ПРОГРАММИРОВАНИЕ КОНСОЛЬНЫХ ПРИЛОЖЕНИЙ
  • 167 Глава 9. Структура консольного приложения
    • 167 9.1. Структура консоли
    • 167 9.2. Входной буфер консоли
    • 171 9.3. Буфер экрана
  • 172 Глава 10. Работа с консолью
    • 172 10.1. Создание консоли
    • 177 10.2. Освобождение консоли
    • 178 10.3. Стандартные дескрипторы ввода-вывода
  • 180 Глава 11. Работа с окном консоли
    • 180 11.1. Получение дескриптора окна консоли
    • 181 11.2. Получение и изменение заголовка консоли
    • 183 11.3. Определение максимального размера окна
    • 184 11.4. Установка координат окна
  • 188 Глава 12. Работа с буфером экрана
    • 188 12.1. Создание и активация буфера экрана
    • 191 12.2. Определение и установка параметров буфера экрана
    • 194 12.3. Функции для работы с курсором
    • 197 12.4. Чтение и установка атрибутов консоли
  • 203 Глава 13. Ввод-вывод на консоль
    • 203 13.1. Ввод-вывод высокого уровня
    • 207 13.2. Ввод низкого уровня
    • 215 13.3. Вывод низкого уровня
    • 225 13.4. Режимы ввода-вывода консоли
    • 229 13.5. Прокрутка буфера экрана
  • 235 ЧАСТЬ IV. ОБМЕН ДАННЫМИ МЕЖДУ ПАРАЛЛЕЛЬНЫМИ ПРОЦЕССАМИ
  • 237 Глава 14. Передача данных
    • 237 14.1. Способы передачи данных между процессами
    • 239 14.2. Связи между процессами
    • 240 14.3. Передача сообщений
    • 241 14.4. Синхронный и асинхронный обмен данными
    • 242 14.5. Буферизация
  • 243 Глава 15. Работа с анонимными каналами в Windows
    • 243 15.1. Анонимные каналы
    • 244 15.2. Создание анонимных каналов
    • 245 15.3. Соединение клиентов с анонимным каналом
    • 246 15.4. Обмен данными по анонимному каналу
    • 247 15.5. Примеры работы с анонимными каналами
    • 257 15.6. Перенаправление стандартного ввода-вывода
  • 265 Глава 16. Работа с именованными каналами в Windows
    • 265 16.1. Именованные каналы
    • 266 16.2. Создание именованных каналов
    • 268 16.3. Соединение сервера с клиентом
    • 269 16.4. Соединение клиентов с именованным каналом
    • 272 16.5. Обмен данными по именованному каналу
    • 285 16.6. Копирование данных из именованного канала
    • 289 16.7. Передача транзакций по именованному каналу
    • 295 16.8. Определение и изменение состояния именованного канала
    • 303 16.9. Получение информации об именованном канале
  • 307 Глава 17. Работа с почтовыми ящиками в Windows
    • 307 17.1. Концепция почтовых ящиков
    • 308 17.2. Создание почтовых ящиков
    • 309 17.3. Соединение клиентов с почтовым ящиком
    • 311 17.4. Обмен данными через почтовый ящик
    • 315 17.5. Получение информации о почтовом ящике
    • 321 17.6. Изменение времени ожидания сообщения
  • 325 ЧАСТЬ V. СТРУКТУРНАЯ ОБРАБОТКА ИСКЛЮЧЕНИЙ
  • 327 Глава 18. Фреймовая обработка исключений
    • 327 18.1. Исключения и их обработчики
    • 330 18.2. Получение кода исключения
    • 332 18.3. Функции фильтра
    • 334 18.4. Получение информации об исключении
    • 337 18.5. Генерация программных исключений
    • 340 18.6. Необработанные исключения
    • 342 18.7. Обработка исключений с плавающей точкой
    • 344 18.8. Обработка вложенных исключений
    • 346 18.9. Передача управления и выход из фрейма
    • 348 18.10. Встраивание SEH в механизм исключений C
  • 351 Глава 19. Финальная обработка исключений
    • 351 19.1. Финальные блоки фрейма
    • 353 19.2. Проверка завершения фрейма
    • 354 19.3. Обработка вложенных финальных блоков
  • 357 ЧАСТЬ VI. РАБОТА С ВИРТУАЛЬНОЙ ПАМЯТЬЮ
  • 359 Глава 20. Виртуальная память
    • 359 20.1. Концепция виртуальной памяти
    • 360 20.2. Организация виртуальной памяти
    • 362 20.3. Алгоритмы замещения страниц
    • 363 20.4. Рабочее множество процесса
    • 363 20.5. Организация виртуальной памяти в Windows
  • 367 Глава 21. Работа с виртуальной памятью в Windows
    • 367 21.1. Состояния виртуальной памяти процесса
    • 368 21.2. Резервирование, распределение и освобождение виртуальной памяти
    • 376 21.3. Блокирование виртуальных страниц в реальной памяти
    • 378 21.4. Изменение атрибутов доступа к виртуальной странице
    • 380 21.5. Управление рабочим множеством страниц процесса
    • 383 21.6. Инициализация и копирование блоков виртуальной памяти
    • 385 21.7. Определение состояния памяти
    • 388 21.8. Работа с виртуальной памятью в другом процессе
  • 393 Глава 22. Работа с кучей в Windows
    • 393 22.1. Создание и удаление кучи
    • 395 22.2. Распределение и освобождение памяти из кучи
    • 401 22.3. Перераспределение памяти из кучи
    • 403 22.4. Блокирование и разблокирование кучи
    • 406 22.5. Проверка состояния кучи
    • 411 22.6. Уплотнение кучи
  • 415 ЧАСТЬ VII. УПРАВЛЕНИЕ ФАЙЛАМИ
  • 417 Глава 23. Общие концепции
    • 417 23.1. Накопители на жестких магнитных дисках
    • 418 23.2. Секторы и кластеры
    • 419 23.3. Форматирование дисков
    • 420 23.4. Функции файловой системы
    • 420 23.5. Каталоги
    • 421 23.6. Буферизация ввода-вывода
    • 421 23.7. Кэширование ввода-вывода
  • 423 Глава 24. Работа с файлами в Windows
    • 423 24.1. Именование файлов в Windows
    • 424 24.2. Создание и открытие файлов
    • 427 24.3. Закрытие и удаление файлов
    • 428 24.4. Запись данных в файл
    • 430 24.5. Освобождение буферов файла
    • 433 24.6. Чтение данных из файла
    • 435 24.7. Копирование файла
    • 437 24.8. Перемещение файла
    • 438 24.9. Замещение файла
    • 440 24.10. Работа с указателем позиции файла
    • 446 24.11. Определение и изменение атрибутов файла
    • 449 24.12. Определение и изменение размеров файла
    • 455 24.13. Блокирование файла
    • 459 24.14. Получение информации о файле
  • 468 Глава 25. Работа с каталогами (папками) в Windows
    • 468 25.1. Создание каталога
    • 470 25.2. Поиск файлов в каталоге
    • 473 25.3. Удаление каталога
    • 476 25.4. Перемещение каталога
    • 477 25.5. Определение и установка текущего каталога
    • 479 25.6. Наблюдение за изменениями в каталоге
  • 483 ЧАСТЬ VIII. АСИНХРОННАЯ ОБРАБОТКА ДАННЫХ
  • 485 Глава 26. Асинхронный вызов процедур
    • 485 26.1. Механизм асинхронного вызова процедур
    • 486 26.2. Установка асинхронных процедур
    • 487 26.3. Приостановка потока
    • 489 26.4. Ожидание события
    • 494 26.5. Оповещение и ожидание события
  • 499 Глава 27. Асинхронный доступ к данным
    • 499 27.1. Концепция асинхронного ввода-вывода
    • 500 27.2. Асинхронная запись данных
    • 506 27.3. Асинхронное чтение данных
    • 511 24.4. Блокирование файлов
    • 518 27.5. Определение состояния асинхронной операции ввода-вывода
    • 522 27.6. Отмена асинхронной операции ввода-вывода
    • 528 27.7. Процедуры завершения ввода-вывода
    • 529 27.8. Асинхронная запись данных с процедурами завершения
    • 532 27.9. Асинхронное чтение данных с процедурами завершения
  • 536 Глава 28. Порты завершения
    • 536 28.1. Концепция порта завершения
    • 537 28.2. Создание порта завершения
    • 538 28.3. Получение пакета из порта завершения
    • 539 28.4. Посылка пакета в порт завершения
  • 544 Глава 29. Работа с ожидающим таймером
    • 544 29.1. Ожидающий таймер
    • 545 29.2. Создание ожидающего таймера
    • 546 29.3. Установка ожидающего таймера
    • 549 29.4. Отмена ожидающего таймера
    • 552 29.5. Открытие существующего ожидающего таймера
    • 555 29.6. Процедуры завершения ожидания
  • 559 ЧАСТЬ IX. ДИНАМИЧЕСКИ ПОДКЛЮЧАЕМЫЕ БИБЛИОТЕКИ
  • 561 Глава 30. Отображение файлов в память
    • 561 30.1. Концепция механизма отображения файлов в память
    • 562 30.2. Создание и открытие объекта, отображающего файл
    • 564 30.3. Отображение файла в память
    • 569 30.4. Обмен данными между процессами через отображаемый в память файл
    • 573 30.5. Сброс вида в файл
  • 578 Глава 31. Динамически подключаемые библиотеки
    • 578 31.1. Концепция динамически подключаемых библиотек
    • 579 31.2. Создание DLL
    • 581 31.3. Динамическая загрузка и отключение DLL
    • 584 31.4. Использование DLL
    • 588 31.5. Использование файла определений
    • 592 31.6. Статическая загрузка DLL
  • 594 Глава 32. Локальная память потока
    • 594 32.1. Динамическая локальная память потока
    • 595 32.2. Распределение и освобождение локальной памяти потока
    • 595 32.3. Запись и чтение из локальной памяти потока
    • 602 32.4. Статическая локальная память потока
  • 605 ЧАСТЬ X. РАЗРАБОТКА СЕРВИСОВ В WINDOWS
  • 607 Глава 33. Сервисы в Windows
    • 607 33.1. Концепция сервиса
    • 608 33.2. Структура сервиса
    • 609 33.3. Организация функции main
    • 611 33.4. Организация функции ServiceMain
    • 617 33.5. Организация обработчика управляющих команд
  • 620 Глава 34. Работа с сервисами в Windows
    • 620 34.1. Открытие доступа к базе данных сервисов
    • 621 34.2. Установка сервиса
    • 627 34.3. Открытие доступа к сервису
    • 627 34.4. Запуск сервиса
    • 630 34.5. Определение и изменение состояния сервиса
    • 634 34.6. Определение и изменение конфигурации сервиса
    • 641 34.7. Определение имени сервиса
    • 646 34.8. Управление сервисом
    • 649 34.9. Удаление сервисов
    • 653 34.10. Блокирование базы данных сервисов
  • 659 ЧАСТЬ XI. УПРАВЛЕНИЕ БЕЗОПАСНОСТЬЮ В WINDOWS
  • 661 Глава 35. Система информационной безопасности
    • 661 35.1. Контроль доступа к ресурсам
    • 662 35.2. Политика безопасности
    • 663 35.3. Модель безопасности
    • 664 35.4. Дискреционная политика безопасности
    • 665 35.5. Дискреционная модель безопасности
    • 668 35.6. Реализация дискреционной модели безопасности
  • 671 Глава 36. Управление безопасностью в Windows
    • 671 36.1. Модель безопасности в Windows
    • 672 36.2. Учетные записи
    • 674 36.3. Домены
    • 676 36.4. Группы
    • 678 36.5. Идентификаторы безопасности
    • 682 36.6. Дескрипторы безопасности
    • 683 36.7. Списки управления доступом ACL
    • 687 36.8. Маркеры доступа
    • 693 36.9. Создание новых объектов
    • 694 36.10. Контроль доступа к охраняемому объекту
    • 696 36.11. Аудит доступа к охраняемому объекту
    • 696 36.12. Структура системы безопасности
  • 699 Глава 37. Управление пользователями
    • 699 37.1. Создание учетной записи пользователя
    • 704 37.2. Получение информации о пользователе
    • 706 37.3. Перечисление пользователей
    • 710 37.4. Перечисление групп, которым принадлежит пользователь
    • 715 37.5. Изменение учетной записи пользователя
    • 719 37.6. Изменение пароля пользователя
    • 721 37.7. Удаление учетной записи пользователя
  • 724 Глава 38. Управление группами
    • 724 38.1. Создание локальной группы
    • 727 38.2. Получение информации о локальной группе
    • 729 38.3. Перечисление локальных групп
    • 732 38.4. Изменение информации о локальной группе
    • 736 38.5. Добавление членов локальной группы
    • 742 38.6. Установка членов локальной группы
    • 745 38.7. Перечисление членов локальной группы
    • 748 38.8. Удаление членов локальной группы
    • 754 38.9. Удаление локальной группы
  • 756 Глава 39. Работа с идентификаторами безопасности
    • 756 39.1. Структура идентификатора безопасности
    • 757 39.2. Создание идентификатора безопасности
    • 764 39.3. Определение учетной записи по идентификатору безопасности
    • 769 39.4. Определение идентификатора безопасности по имени учетной записи
    • 773 39.5. Получение характеристик идентификатора безопасности
    • 777 39.6. Копирование и сравнение идентификаторов безопасности
    • 782 39.7. Строковое представление идентификатора безопасности
  • 788 Глава 40. Работа с дескрипторами безопасности
    • 788 40.1. Форматы дескрипторов безопасности
    • 791 40.2. Создание нового дескриптора безопасности
    • 797 40.3. Определение длины дескриптора безопасности
    • 802 40.4. Получение дескриптора безопасности по имени объекта
    • 806 40.5. Получение дескриптора безопасности по дескриптору объекта
    • 810 40.6. Получение данных из дескриптора безопасности
    • 815 40.7. Получение состояния управляющих флагов дескриптора безопасности
    • 818 40.8. Изменение дескриптора безопасности по имени объекта
    • 823 40.9. Изменение дескриптора безопасности по дескриптору объекта
    • 827 40.10. Изменение состояния управляющих флагов дескриптора безопасности
    • 831 40.11. Строковое представление дескрипторов безопасности
  • 840 Глава 41. Работа со списками управления доступом на высоком уровне
    • 840 41.1. Структура TRUSTEE
    • 842 41.2. Инициализация структуры TRUSTEE
    • 846 41.3. Структура EXPLICIT_ACCESS
    • 849 41.4. Инициализация структуры EXPLICIT_ACCESS
    • 850 41.5. Создание нового списка управления доступом
    • 862 41.6. Модификация списка управления доступом
    • 870 41.7. Получение элементов из списка управления доступом
    • 871 41.8. Получение информации из структуры TRUSTEE
    • 874 41.9. Получение прав доступа из списка управления доступом
    • 878 41.10. Получение из списка управления доступом прав, которые подвергаются аудиту
  • 885 Глава 42. Работа с привилегиями
    • 885 42.1. Локальные идентификаторы привилегий
    • 887 42.2. Инициализация локального идентификатора
    • 888 42.3. Получение локального идентификатора привилегии
    • 888 42.4. Получение имени привилегии
    • 891 42.5. Получение имени привилегии для отображения
  • 894 Глава 43. Работа с маркерами доступа
    • 894 43.1. Открытие маркера доступа процесса
    • 896 43.2. Открытие маркера доступа потока
    • 896 43.3. Структуры, используемые для работы с маркером доступа
    • 900 43.4. Получение информации из маркера доступа
    • 908 43.5. Изменение информации в маркере доступа
    • 917 43.6. Настройка привилегий
    • 918 43.7. Настройка групп
    • 920 43.8. Создание маркера ограниченного доступа
    • 927 43.9. Дублирование маркеров доступа
    • 929 43.10. Замещение маркеров доступа потока
    • 932 43.11. Проверка идентификатора безопасности на принадлежность маркеру доступа
  • 939 Глава 44. Работа со списками управления доступом на низком уровне
    • 939 44.1. Структура списка управления доступом
    • 940 44.2. Структура элемента списка управления доступом
    • 943 44.3. Инициализация списка управления доступом
    • 944 44.4. Проверка достоверности списка управления доступом
    • 945 44.5. Добавление элементов в список управления доступом
    • 972 44.6. Получение элементов из списка управления доступом
    • 977 44.7. Удаление элементов из списка управления доступом
    • 981 44.8. Получение информации о списке управления доступом
    • 985 44.9. Установка версии списка управления доступом
    • 986 44.10. Определение доступной памяти
  • 987 Глава 45. Управление безопасностью объектов на низком уровне
    • 988 45.1. Доступ к информации о владельце объекта
    • 992 45.2. Доступ к информации о первичной группе владельца объекта
    • 997 45.3. Доступ к списку DACL
    • 1004 45.4. Доступ к списку SACL
    • 1006 45.5. Защита файлов и каталогов
    • 1016 45.6. Защита объектов ядра
    • 1024 45.7. Защита сервисов
    • 1031 45.8. Защита ключей реестра
    • 1037 45.9. Защита объектов пользователя
  • 1045 Приложение. Описание компакт-диска
  • 1047 Предметный указатель

Скачать книгу Системное программирование в Windows / Побегайло А.П. в форматах DjVu, PDF, DOC или fb2 совершенно бесплатно.