На главную страницу
Форум txt.version   



Статья :: Системное программирование в среде Windows : Джонсон Харт

Эта книга посвящена вопросам разработки приложений с использованием интерфейса прикладного программирования операционных систем компании Microsoft (Windows 9х, Windows XP, Windows 2000 и Windows Server 2003). Основное внимание уделяется базовым системным службам, включая управление файловой системой, процессами и потоками, взаимодействие между процессами, сетевое программирование и синхронизацию. Рассматривается методика переноса приложений, написанных в среде Win32, в среду Win64. Подробно описываются все аспекты системы безопасности Windows и ее практического применения. Изобилие реальных примеров, доступных также и на Web-сайте книги, существенно упрощает усвоение материала.

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

Введение

В этой книге описывается разработка приложений с использованием интерфейса прикладного программирования (Application Programming Interface, API) операционных систем Windows компании Microsoft, причем основное внимание уделяется базовым системным службам, включая управление файловой системой, процессами и потоками, межпроцессное взаимодействие, сетевое программирование и синхронизацию. Пользовательские интерфейсы, внутренние функции Windows и драйверы ввода/вывода в данной книге не рассматриваются, хотя сами по себе эти темы не менее важны и представляют не меньший интерес. Для примеров преимущественно выбирались реалистичные сценарии, и поэтому многие из них вполне могут служить в качестве основы для построения реальных приложений.

Win32/Win64 API, или обобщенно Windows API, поддерживаются семейством 32– и 64-разрядных операционных систем компании Microsoft, в которое в настоящее время входят Windows XP, Windows 2000 и Windows Server 2003. К числу ранних представителей этого семейства относятся операционные системы Windows NT, Windows Me, Windows 98 и Windows 95; в настоящее время эти системы считаются устаревшими, однако многие из приведенных в книге примеров программ способны выполняться и под их управлением. Вопросы перехода от платформы Win32 к развивающейся платформе Win64 обсуждаются по мере необходимости. Win64, поддерживаемый в качестве 64-разрядного интерфейса в некоторых версиях Windows Server 2003 и Windows XP, почти идентичен Win32.

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

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

Авторы многих книг, посвященных Windows, значительное внимание уделяют объяснению того, что представляют собой процессы, виртуальная память, межпроцессное взаимодействие, вытесняющий планировщик, но при этом не показывают, как все это используется в реальных ситуациях. Программистам, имеющим опыт работы с системами UNIX, Linux, IBM MVS, Open VMS и некоторыми другими ОС эти понятия уже знакомы, и они заинтересованы лишь в том, чтобы как можно быстрее перейти к изучению того, как эти возможности реализованы в Windows. К тому же, в большинстве книг по Windows важное место отводится методам программирования на основе пользовательского интерфейса. С целью концентрации внимания лишь на самых главных базовых возможностях, предоставляемых системой, в данной книге тема пользовательского интерфейса не затрагивается, и мы ограничиваемся обсуждением лишь простого консольного символьного ввода/вывода.

В соответствии с принятой в данной книге точке зрения Windows — это всего лишь API операционной системы, предоставляющий набор вполне понятных средств. Потребность в ускоренном изучении Windows испытывают многие программисты, независимо от уровня их опыта, и без знания Windows немыслимо обсуждение таких, например, тем, как модель компонентного объекта (Component Object Model, СОМ), разработанная компанией Microsoft. В некоторых отношениях системы Windows превосходят остальные системы, в других — отстают от них или находятся примерно на том же уровне. Задача данной книги состоит в том, чтобы продемонстрировать, как эффективнее всего использовать эти возможности в реальных ситуациях для разработки полезных, высококачественных и высокопроизводительных приложений.

Потенциальная аудитория

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

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

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

• Программисты, использующие СОМ и .NET Framework, которые найдут здесь массу полезной информации, облегчающей изучение принципов работы динамически подключаемых библиотек (dynamic link libraries, DLL), моделей потоков и способов их применения, интерфейсов и синхронизации.

• Студенты, изучающие компьютерные дисциплины на старших курсах вузов или занятые подготовкой дипломных работ, связанных с системным программированием или разработкой приложений. Книга будет полезна также тем, кто изучает многопоточное программирование или сталкивается с необходимостью создания сетевых приложений. Ее также можно использовать в качестве полезного дополнения к таким, например, источникам, как книга У. Ричарда Стивенса (W. Richard Stevens) Advanced Programming in the UNIX Environment (см. библиографию), что позволит студентам сравнить возможности Windows и UNIX. Эта книга будет хорошим подспорьем и для студентов, проходящих курс ОС, поскольку в ней показано, какими именно средствами обеспечивается базовая функциональность ОС, представляющих интерес в коммерческом отношении.

Единственным допущением, которое неявно присутствует во всем вышесказанном, является предположение о том, что читатели имеют опыт программирования на языке С.

Изменения в третьем издании

Наряду со значительным обновлением и реорганизацией по сравнению с первыми двумя изданиями, в третьем издании добавлен обширный объем нового материала. Это издание призвано решать следующие задачи:

• Охватить новые возможности, появившиеся в Windows XP, Windows 2000 и Windows Server 2003, а также рассмотреть вопросы перехода к платформе Win64.

• Исключить материал, учитывающий специфику ОС Windows 95, Windows 98 и Windows ME (семейство "Windows 9x"), как устаревший, поскольку на поставляемых в настоящее время персональных системах устанавливается Windows XP, и ограничения, свойственные Windows 9х, уже потеряли свою актуальность.[1] В примерах программ без каких бы то ни было оговорок используются средства, которые входят лишь в текущие версии Windows, хотя в результате этого в Windows 9x некоторые программы работать не будут.

• Предоставить более полное освещение темы потоков и синхронизации, включая связанные с этим аспекты производительности, масштабируемости и надежности. Глава 9, равно как и некоторые из примеров в главе 10, являются новыми.

• Подчеркнуть все возрастающее влияние Windows 2000 и Windows Server 2003 и входящих в их состав новых средств на возможности высокопроизводительных, масштабируемых, многопоточных серверных приложений.

• Исследовать зависимость производительности программ от принципов их построения, обратив особое внимание на многопоточные программы с синхронизацией и на особенности эксплуатации этих программ в условиях симметричных многопроцессорных (Symmetrical Multiprocessor, SMP) систем.

• Учесть замечания читателей и студентов, касающиеся исправления недочетов и улучшения стиля изложения, а также все их советы и пожелания, как важные, так и самые незначительные.

Как организована эта книга

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

В пределах каждой главы, после краткого обсуждения отдельной функциональности, например, управления процессами или отображения файлов, подробно рассматриваются наиболее важные из соответствующих функций Windows и их взаимосвязь между собой. Изложение сопровождается иллюстративными примерами. В основной текст включены лишь наиболее существенные части листингов программ; полные тексты программ, а также необходимые включаемые файлы, вспомогательные функции и прочий код приведены в приложении А или доступны на Web-сайте книги (http://www.awprofessional.com/titles/0321256190). Во всех случаях, когда какие-либо возможности поддерживаются только текущими версиями Windows (XP, 2000 и Server 2003) и не поддерживаются предыдущими, например, Windows 9x и Windows NT, в которых не реализованы многие из усовершенствованных возможностей, делаются отдельные оговорки. В каждой главе приводится список дополнительной рекомендованной литературы и предлагается несколько упражнений. Многие упражнения акцентируют внимание на вопросах, которые имеют важное значение и представляют определенный интерес, но не были отражены в основном тексте, тогда как другие упражнения заставляют читателя глубже разобраться в темах более сложного или специального характера.

В главе 1 предлагается высокоуровневое введение в семейство ОС Windows и Windows API. Используемая в качестве примера простая программа демонстрирует основные элементы стиля программирования Windows и создает фундамент для реализации усовершенствованных возможностей Windows. Win64 и проблемы межплатформенной миграции программ предварительно рассматриваются в главе 1, более полно изучаются в главе 16, и обсуждаются по мере изложения в остальной части книги там, где это оказывается необходимым.

В главах 2 и 3 рассматриваются файловые системы, операции консольного ввода/вывода, блокирование файлов и управление каталогами. В главе 2 также рассказывается о кодировке Unicode — расширенном символьном наборе, который используется в Windows. Соответствующие иллюстративные примеры охватывают последовательный и прямой доступ к содержащимся в файле данным, обход дерева каталогов и архивирование файлов. Глава 3 заканчивается обсуждением программного управления реестром, имеющего много общего с управлением файлами и каталогами.

Глава 4 знакомит читателя с обработкой исключений в Windows, включая структурную обработку исключений (Structured Exception Handling, SEH), которая будет широко использоваться на протяжении всей книги. Во многих книгах изучение SEH откладывается до последних глав, однако мы, ознакомившись с этим средством уже на начальной стадии, получим возможность сразу же пользоваться им, что значительно упростит для нас некоторые задачи программирования и позволит повысить качество программ. Кроме того, здесь описано также одно из новейших средств — векторная обработка исключений.

В главе 5 рассмотрены вопросы управления памятью в Windows и показано, каким образом отображение файлов используется не только для упрощения программирования, но и для повышения производительности программ. В этой же главе рассмотрена организация библиотек DLL.

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

Главы 8, 9 и 10 предлагают углубленный анализ одного из наиболее мощных средств Windows — синхронизации потоков. Синхронизация — сложная тема, и поэтому в данных главах содержатся многочисленные примеры и описания вполне понятных моделей, которые должны помочь читателю в полной мере воспользоваться преимуществами потоков для повышения эффективности программирования и производительности программ и вместе с тем обойти множество подводных камней. В эти главы включен новый материал, охватывающий вопросы повышения производительности и масштабируемости, что приобретает особое значение при создании серверных приложений, включая те из них, которые предположительно должны выполняться на SMP-системах.

Главы 11 и 12 посвящены межпроцессным и межпоточным взаимодействиям, а также сетевому программированию. В главе 11 главное внимание уделено средствам, являющимся частью Windows, а именно, анонимным каналам, именованным каналам и почтовым ящикам. В главе 12 обсуждаются сокеты Windows (Windows Sockets), обеспечивающие возможность взаимодействия с системами, не входящими в семейство Windows, посредством стандартных протоколов, главным образом, TCP/IP. И хотя интерфейс Windows Sockets, строго говоря, не является частью Windows API, он способен обеспечивать связь и взаимодействие через сети и Internet, так что предмет рассмотрения данной главы согласуется с остальной частью книги. На примере многопоточной клиент-серверной системы проиллюстрировано, каким образом можно обеспечить межпроцессное взаимодействие наряду с потоками.

В главе 13 показано, каким образом Windows позволяет превращать серверные приложения, аналогичные созданным в главах 11 и 12, в службы Windows (Windows Services), которыми можно управлять как фоновыми серверами. Преобразование сервера в службу требует внесения лишь незначительных изменений в программу.

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

Глава 15 посвящена вопросам безопасности объектов Windows, а в качестве примера рассмотрена эмуляция системы защиты файлов в стиле UNIX, в которой для выполнения тех или иных операций с файлом требуется наличие соответствующих полномочий. Дополнительные примеры иллюстрируют, какими средствами обеспечивается защита процессов, потоков и именованных каналов. Дополнения, обеспечивающие безопасность, могут быть введены после этого в ранее рассмотренные примеры.

Глава 16 завершает изложение основного материала рассмотрением вопросов программирования для Win64, а также обеспечения программной совместимости с этой платформой. После этого один из рассмотренных ранее примеров преобразуется к виду, допускающему перенос программы на платформу Win64.

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

Сопоставление с UNIX и библиотекой С

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

Примеры

При подготовке примеров автор руководствовался следующими соображениями:

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

• Они должны соответствовать реальным ситуациям из сферы программирования, с которыми приходится сталкиваться в процессе разработки программного обеспечения, оказания консультаций и обучения. Некоторые из моих клиентов и слушателей использовали коды примеров при построении собственных систем. При оказании консультаций мне часто попадаются коды программ, аналогичные тем, которые включены в эту книгу, а в нескольких случаях ко мне приходили даже с кодами, непосредственно взятыми из первого или второго изданий. (Кстати, вы также можете использовать примеры из книги в своей работе, а если включите в документацию еще и благодарность в мой адрес, то я буду только рад.) Нередко эти коды встречались мне и в виде отдельных частей объектов СОМ или C++. Примеры, с учетом ограничений на время их подготовки и допустимый объем кода, приближены к "реальной жизни" и решают "реальные" задачи.

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

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

• Многие из примеров в нескольких первых главах реализуют такие команды UNIX, как ls, touch, chmod и sort, и тем самым представляют функции Windows в знакомом для части читателей контексте, одновременно создавая полезный набор вспомогательных функций.[2] Кроме того, наличие разных вариантов реализации одной и той же команды упрощает оценку преимуществ в отношении производительности, достигаемых за счет использования усовершенствованных средств Windows. Соответствующие результаты тестирования приведены в приложении В.

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

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

Все примеры отлажены и протестированы в средах операционных систем Windows XP, Windows 2000 и Windows Server 2003.– В необходимых случаях тестирование проводилось под управлением операционных систем Windows 9x и Windows NT. И хотя для разработки программ в основном использовались однопроцессорные системы на базе процессоров Intel, большинство программ тестировались также на многопроцессорных системах. При тестировании приложений с клиент-серверной архитектурой использовались одновременно несколько клиентов, взаимодействующих с сервером. Тем не менее, никогда нельзя с полной уверенностью заявлять о корректности или завершенности программ и их пригодности для тех или иных целей. Несомненно, даже простейшие примеры могут иметь недостатки и при определенных обстоятельствах вообще не работать — такова участь почти любого программного обеспечения. Поэтому автор будет искренне благодарен всем, кто пришлет сообщения о любых дефектах, обнаруженных в программах, а еще лучше — об ошибках.

Web-сайты, посвященные этой книге

На Web-сайте книги (http://www.awprofessional.com/titles/0321256190) находится загружаемый файл, содержащий весь программный код и проекты для всех примеров, которые приведены в книге, решения ряда упражнений, альтернативные варианты реализации некоторых примеров, указания, а также результаты тестовых оценок производительности. Эта информация по мере надобности периодически обновляется с целью включения в нее нового материала и внесения необходимых исправлений.

На моем персональном Web-сайте (http://www.world.std.com/~jmhart/windows.htm) вы найдете список опечаток, обнаруженных в книге, а также дополнительные примеры, письма читателей и дополнительные объяснения, не считая многого другого. Сюда же включены слайды PowerPoint, которые могут быть использованы в некоммерческих учебных целях. Этими слайдами уже воспользовались слушатели многих профессиональных курсов, но они вполне пригодны также для использования в колледжах.

По мере выявления недостатков и ошибок и получения откликов читателей этот материал будет периодически обновляться. В случае возникновения каких-либо затруднений при работе с программами или любым другим материалом, содержащимся в книге, посетите сначала указанные сайты, где вам, возможно, удастся найти необходимые объяснения или получить информацию об обнаруженных к этому времени ошибках. Если же подобная попытка получения ответа на интересующий вас вопрос окажется безрезультатной, обращайтесь непосредственно ко мне по следующему адресу электронной почты: jmhart@world.std.com.

Благодарности

Во время подготовки третьего издания множество людей оказывали мне действенную помощь, делились советами или просто поддерживали добрым словом, а читатели подсказали целый ряд ценных идей и замечаний. На Web-сайте автора выражена горячая признательность всем тем, чьи советы и замечания нашли свое отражение в третьем издании книги, тогда как в первых двух изданиях содержатся благодарности в адрес тех, кто еще раньше дал нам ценные советы. Кроме того, прекрасный подробный анализ содержания книги был дан в недавних рецензиях Вагифа Абилова (Vagif Abilov), Билла Дрейпера (Bill Draper), Хорста Д. Клаузена (Horst D. Clausen), Майкла Девидсона (Michael Davidson), Дэниела Джанга (Daniel Jiang), Эрика Ландеса (Eric Landes), Клауса X. Пробста (Klaus H. Probst) и Дугласа Рейли (Douglas Reilly), которые отнеслись к этой работе с гораздо большим вниманием, чем того требовали бы одни формальные обязанности; их советы и рекомендации заслуживают самой глубокой благодарности, и мне лишь остается надеяться, что с не меньшим вниманием и я отнесся к результатам их труда. Отдельной благодарности заслуживают мои друзья из ArrAy Inc.; у них я многому научился.

Анни X. Смит (Anne H. Smith), выполнявшая верстку, приложила все свое мастерство, настойчивость и терпение, готовя книгу к публикации; без ее вклада выход книги в свет был бы просто невозможен. Элисса Армер (Elissa Armour), готовившая макеты для первых двух изданий, тем самым заложила фундамент и для настоящего Издания, сделав этот переход как нельзя более гладким.

Криста Мидоубрук (Chrysta Meadowbrooke), редактор рукописи, значительно улучшила точность, ясность и связность изложения материала. Ее внимательное отношение к содержанию книги, острые вопросы и проницательность помогли глубже осветить целый ряд вопросов.

Сотрудники издательства Addison-Wesley Professional проявили такой профессионализм и знание дела, что работать с ними было сплошным удовольствием. Стефани Накиб (Stephane Nakib), редактор, и Карен Гетман (Karen Gettman), главный редактор, работали над проектом с самого начала, когда надо, торопили меня, устраняли все помехи в работе и следили за тем, чтобы я ни на йоту не отклонялся от рабочего графика. Эбони Хейт (Ebony Haight), помощник редактора, осуществлял общее руководство всеми этапами работы, а производственная группа Джона Фуллера (John Fuller) и Патрика Кэш-Петерсона (Patrick Cash-Peterson), координатора производства, заставили считать, что с производственным процессом не могут быть связаны никакие сложности.

Эта книга посвящается горячо любимым Бобу (Bob) и Элизабет (Elizabeth).

Джонсон (Джон) М. Харт (Johnson (John) M. Hart) jmhart@world.std.com  Август 2004 года.

От издательства

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

Мы ждем ваших комментариев и надеемся на них. Вы можете прислать нам бумажное или электронное письмо, либо просто посетить наш Web-сервер и оставить свои замечания там. Одним словом, любым удобным для вас способом дайте нам знать, нравится или нет вам эта книга, а также выскажите свое мнение о том, как сделать наши книги более интересными для вас.

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

Наши координаты:

E-mail: info@williamspublishing.com

WWW: http://www.williamspublishing.com

Информация для писем из: России: 115419, Москва, а/я 783 Украины: 03150, Киев, а/я 152




Системное программирование в среде Windows : Джонсон Харт

страницы в данном разделе 
Системное программирование в среде Windows : Джонсон Харт продолжение 1
Потенциальная аудитория : Джонсон Харт Как организована эта книга : Джонсон Харт
Примеры : Джонсон Харт Благодарности : Джонсон Харт
Основные возможности операционных систем : Джонсон Харт Версии Windows : Джонсон Харт
Устаревшие предыдущие версии Windows : Джонсон Харт Воздействие Windows на ситуацию на рынке : Джонсон Харт
Windows, стандарты и открытые системы : Джонсон Харт продолжение 11 : Джонсон Харт
Принципы, лежащие в основе Windows : Джонсон Харт Подготовка к работе с Win64 : Джонсон Харт
О целесообразности привлечения функций стандартной библиотеки C для обработки файлов : Джонсон Харт Что требуется для работы с данной книгой : Джонсон Харт
Пример: простое последовательное копирование файла : Джонсон Харт продолжение 17 : Джонсон Харт
Копирование файлов с использованием стандартной библиотеки С : Джонсон Харт Копирование файлов с использованием Windows : Джонсон Харт
Резюме : Джонсон Харт Дополнительная литература : Джонсон Харт
Упражнения : Джонсон Харт Основные возможности операционных систем : Джонсон Харт
Устаревшие предыдущие версии Windows : Джонсон Харт Устаревшие предыдущие версии Windows : Джонсон Харт
Воздействие Windows на ситуацию на рынке : Джонсон Харт Windows, стандарты и открытые системы : Джонсон Харт
продолжение 28 Принципы, лежащие в основе Windows : Джонсон Харт
Подготовка к работе с Win64 : Джонсон Харт О целесообразности привлечения функций стандартной библиотеки C для обработки файлов : Джонсон Харт
Что требуется для работы с данной книгой : Джонсон Харт Пример: простое последовательное копирование файла : Джонсон Харт
Копирование файлов с использованием стандартной библиотеки С : Джонсон Харт Копирование файлов с использованием Windows : Джонсон Харт
продолжение 36 Копирование файлов с использованием стандартной библиотеки С : Джонсон Харт
Копирование файлов с использованием Windows : Джонсон Харт Дополнительная литература : Джонсон Харт
Дополнительная литература : Джонсон Харт Упражнения : Джонсон Харт
Файловые системы Windows : Джонсон Харт Правила именования файлов : Джонсон Харт
Операции открытия, чтения, записи и закрытияфайлов : Джонсон Харт Создание и открытие файла : Джонсон Харт
Закрытие файла : Джонсон Харт Чтение файла  : Джонсон Харт
Запись в файл  : Джонсон Харт Вступление: стандартные символы и символы Unicode : Джонсон Харт
продолжение 50 : Джонсон Харт Стратегии использования символов Unicode : Джонсон Харт
Стандартные устройства и консольный ввод/вывод : Джонсон Харт Пример: вывод на консоль сообщений и подсказок для пользователя : Джонсон Харт
Пример: обработка ошибок : Джонсон Харт Пример: копирование нескольких файлов на стандартное устройство вывода : Джонсон Харт
Пример: преобразование символов из ASCII в Unicode : Джонсон Харт продолжение 57 : Джонсон Харт
Управление файлами и каталогами : Джонсон Харт Управление файлами : Джонсон Харт
Управление каталогами : Джонсон Харт Резюме : Джонсон Харт
Упражнения : Джонсон Харт Файловые системы Windows : Джонсон Харт
Правила именования файлов : Джонсон Харт Создание и открытие файла : Джонсон Харт
Закрытие файла : Джонсон Харт Чтение файла  : Джонсон Харт
Запись в файл  : Джонсон Харт Создание и открытие файла : Джонсон Харт
Закрытие файла : Джонсон Харт Чтение файла  : Джонсон Харт
Запись в файл  : Джонсон Харт Вступление: стандартные символы и символы Unicode : Джонсон Харт
продолжение 74 Стратегии использования символов Unicode : Джонсон Харт
Стандартные устройства и консольный ввод/вывод : Джонсон Харт Пример: вывод на консоль сообщений и подсказок для пользователя : Джонсон Харт
Пример: обработка ошибок : Джонсон Харт Пример: копирование нескольких файлов на стандартное устройство вывода : Джонсон Харт
Пример: преобразование символов из ASCII в Unicode : Джонсон Харт продолжение 81
Управление файлами : Джонсон Харт Управление каталогами : Джонсон Харт
Управление файлами : Джонсон Харт Управление каталогами : Джонсон Харт
Упражнения : Джонсон Харт Указатели файлов : Джонсон Харт
продолжение 88 : Джонсон Харт Указание позиции файла с помощью структуры OVERLAPPED : Джонсон Харт
Определение размера файла : Джонсон Харт Установка размера файла, инициализация файла и разреженные файлы : Джонсон Харт
Пример: обновление записей, находящихся в произвольном месте файла : Джонсон Харт Атрибуты файлов и управление каталогами : Джонсон Харт
продолжение 94 : Джонсон Харт Другие методы определения атрибутов файлов и каталогов : Джонсон Харт
Именование временных файлов : Джонсон Харт Пример: вывод списка атрибутов файла : Джонсон Харт
Стратегии обработки файлов : Джонсон Харт Блокирование файлов : Джонсон Харт
продолжение 100 : Джонсон Харт Следствия принятой логики блокирования файлов : Джонсон Харт
Реестр : Джонсон Харт продолжение 103 : Джонсон Харт
Управление системным реестром : Джонсон Харт Управление подразделами реестра : Джонсон Харт
Управление значениями : Джонсон Харт Пример: вывод списка разделов и содержимого реестра : Джонсон Харт
Упражнения : Джонсон Харт Указатели файлов : Джонсон Харт
Указание позиции файла с помощью структуры OVERLAPPED : Джонсон Харт продолжение 111
Указание позиции файла с помощью структуры OVERLAPPED : Джонсон Харт Установка размера файла, инициализация файла и разреженные файлы : Джонсон Харт
Установка размера файла, инициализация файла и разреженные файлы : Джонсон Харт Пример: обновление записей, находящихся в произвольном месте файла : Джонсон Харт
Атрибуты файлов и управление каталогами : Джонсон Харт Другие методы определения атрибутов файлов и каталогов : Джонсон Харт
Именование временных файлов : Джонсон Харт продолжение 119
Другие методы определения атрибутов файлов и каталогов : Джонсон Харт Именование временных файлов : Джонсон Харт
Пример: вывод списка атрибутов файла : Джонсон Харт Стратегии обработки файлов : Джонсон Харт
Блокирование файлов : Джонсон Харт Следствия принятой логики блокирования файлов : Джонсон Харт
продолжение 126 Следствия принятой логики блокирования файлов : Джонсон Харт
Реестр : Джонсон Харт продолжение 129
Управление подразделами реестра : Джонсон Харт Управление значениями : Джонсон Харт
Управление подразделами реестра : Джонсон Харт Управление значениями : Джонсон Харт
Пример: вывод списка разделов и содержимого реестра : Джонсон Харт Упражнения : Джонсон Харт
ГЛАВА 4 Обработка исключений : Джонсон Харт Исключения и обработчики исключений : Джонсон Харт
Блоки try и except : Джонсон Харт Выражения фильтров и их значения : Джонсон Харт
Коды исключений : Джонсон Харт Исключения, возникающие при выполнении операций над числами с плавающей точкой : Джонсон Харт
Ошибки и исключения : Джонсон Харт продолжение 143 : Джонсон Харт
Исключения, генерируемые приложением : Джонсон Харт Пример: обработка ошибок как исключений : Джонсон Харт
Обработчики завершения : Джонсон Харт Сочетание блоков finally и except : Джонсон Харт
Пример: использование обработчиков завершения для повышения качества программ : Джонсон Харт Пример: использование функции фильтра : Джонсон Харт
Обработчики управляющих сигналов консоли : Джонсон Харт Пример: обработчик управляющих сигналов консоли : Джонсон Харт
Векторная обработка исключений : Джонсон Харт Упражнения : Джонсон Харт
продолжение 154 Блоки try и except : Джонсон Харт
Выражения фильтров и их значения : Джонсон Харт Коды исключений : Джонсон Харт
Блоки try и except : Джонсон Харт Выражения фильтров и их значения : Джонсон Харт
Коды исключений : Джонсон Харт Исключения, возникающие при выполнении операций над числами с плавающей точкой : Джонсон Харт
Ошибки и исключения : Джонсон Харт Исключения, генерируемые приложением : Джонсон Харт
продолжение 164 Исключения, генерируемые приложением : Джонсон Харт
Пример: обработка ошибок как исключений : Джонсон Харт Сочетание блоков finally и except : Джонсон Харт
Сочетание блоков finally и except : Джонсон Харт Пример: использование обработчиков завершения для повышения качества программ : Джонсон Харт
Пример: использование функции фильтра : Джонсон Харт Обработчики управляющих сигналов консоли : Джонсон Харт
Пример: обработчик управляющих сигналов консоли : Джонсон Харт Векторная обработка исключений : Джонсон Харт
Упражнения : Джонсон Харт Архитектура системы управления памятью в Win32 и Win64 : Джонсон Харт
Обзор методов управления памятью : Джонсон Харт Куча : Джонсон Харт
Управление памятью кучи : Джонсон Харт продолжение 179 : Джонсон Харт
Пример: сортировка файлов с использованием бинарного дерева поиска : Джонсон Харт Отображение файлов : Джонсон Харт
продолжение 182 : Джонсон Харт Объекты отображения файлов : Джонсон Харт
Отображение файла на адресное пространство процесса : Джонсон Харт Ограничения метода отображения файлов : Джонсон Харт
Пример: последовательная обработка файлов с использованием метода отображения : Джонсон Харт Пример: сортировка отображенных файлов : Джонсон Харт
Пример: использование базовых указателей : Джонсон Харт Динамически компонуемые библиотеки : Джонсон Харт
Статические и динамические библиотеки : Джонсон Харт Неявное связывание : Джонсон Харт
Явное связывание : Джонсон Харт Пример: явное связывание функци и преобразования файлов : Джонсон Харт
продолжение 194 : Джонсон Харт Точки входа библиотеки DLL : Джонсон Харт
Управление версиями DLL : Джонсон Харт Резюме : Джонсон Харт
Упражнения : Джонсон Харт Обзор методов управления памятью : Джонсон Харт
Обзор методов управления памятью : Джонсон Харт Куча : Джонсон Харт
Управление памятью кучи : Джонсон Харт продолжение 203
Пример: сортировка файлов с использованием бинарного дерева поиска : Джонсон Харт Отображение файлов : Джонсон Харт
Объекты отображения файлов : Джонсон Харт Отображение файла на адресное пространство процесса : Джонсон Харт
Ограничения метода отображения файлов : Джонсон Харт продолжение 209
Объекты отображения файлов : Джонсон Харт Отображение файла на адресное пространство процесса : Джонсон Харт
Ограничения метода отображения файлов : Джонсон Харт Пример: последовательная обработка файлов с использованием метода отображения : Джонсон Харт
Пример: сортировка отображенных файлов : Джонсон Харт Пример: использование базовых указателей : Джонсон Харт
Статические и динамические библиотеки : Джонсон Харт Неявное связывание : Джонсон Харт
Явное связывание : Джонсон Харт Статические и динамические библиотеки : Джонсон Харт
Неявное связывание : Джонсон Харт Явное связывание : Джонсон Харт
Пример: явное связывание функци и преобразования файлов : Джонсон Харт продолжение 223
Точки входа библиотеки DLL : Джонсон Харт Управление версиями DLL : Джонсон Харт
Упражнения : Джонсон Харт Процессы и потоки Windows : Джонсон Харт
Создание процесса : Джонсон Харт продолжение 229 : Джонсон Харт
Указание исполняемого модуля и командной строки : Джонсон Харт Наследуемые дескрипторы : Джонсон Харт
Идентификаторы процессов : Джонсон Харт Дублирование дескрипторов : Джонсон Харт
Завершение и прекращение выполнения процесса : Джонсон Харт Ожидание завершения процесса : Джонсон Харт
Блоки и строки окружения : Джонсон Харт Защита процесса : Джонсон Харт
Пример: параллельный поиск указанного текстового шаблона : Джонсон Харт Процессы в многопроцессорной среде : Джонсон Харт
Пример: временные характеристики процессов : Джонсон Харт продолжение 241 : Джонсон Харт
Генерация управляющих событий консоли : Джонсон Харт Пример: простое управление задачами : Джонсон Харт
продолжение 244 : Джонсон Харт Создание фоновых задач : Джонсон Харт
Получение номера задачи : Джонсон Харт Объекты задач : Джонсон Харт
Упражнения : Джонсон Харт Процессы и потоки Windows : Джонсон Харт
Создание процесса : Джонсон Харт Указание исполняемого модуля и командной строки : Джонсон Харт
Наследуемые дескрипторы : Джонсон Харт продолжение 253
Указание исполняемого модуля и командной строки : Джонсон Харт Наследуемые дескрипторы : Джонсон Харт
Идентификаторы процессов : Джонсон Харт Дублирование дескрипторов : Джонсон Харт
Завершение и прекращение выполнения процесса : Джонсон Харт Ожидание завершения процесса : Джонсон Харт
Защита процесса : Джонсон Харт Защита процесса : Джонсон Харт
Пример: параллельный поиск указанного текстового шаблона : Джонсон Харт Процессы в многопроцессорной среде : Джонсон Харт
Пример: временные характеристики процессов : Джонсон Харт продолжение 265
Генерация управляющих событий консоли : Джонсон Харт Пример: простое управление задачами : Джонсон Харт
Создание фоновых задач : Джонсон Харт Получение номера задачи : Джонсон Харт
продолжение 270 Создание фоновых задач : Джонсон Харт
Получение номера задачи : Джонсон Харт Объекты задач : Джонсон Харт
Упражнения : Джонсон Харт Обзор потоков : Джонсон Харт
продолжение 276 : Джонсон Харт Перспективы и проблемы : Джонсон Харт
Основные сведения о потоках : Джонсон Харт Управление потоками : Джонсон Харт
продолжение 280 : Джонсон Харт Ожидание завершения потока : Джонсон Харт
Удаленные потоки : Джонсон Харт Использование библиотеки С впотоках : Джонсон Харт
продолжение 284 : Джонсон Харт Пример: многопоточный поиск контекста : Джонсон Харт
Модель "хозяин/рабочий" и другие модели многопоточных приложений : Джонсон Харт j287.html
Локальные области хранения потоков : Джонсон Харт Приоритеты процессов и потоков и планирование выполнения : Джонсон Харт
продолжение 290 : Джонсон Харт Состояния потоков : Джонсон Харт
Возможные ловушки и распространенные ошибки : Джонсон Харт Облегченные потоки : Джонсон Харт
Упражнения : Джонсон Харт Обзор потоков : Джонсон Харт
Перспективы и проблемы : Джонсон Харт продолжение 297
Перспективы и проблемы : Джонсон Харт Основные сведения о потоках : Джонсон Харт
Управление потоками : Джонсон Харт Ожидание завершения потока : Джонсон Харт
Удаленные потоки : Джонсон Харт продолжение 303
Ожидание завершения потока : Джонсон Харт Удаленные потоки : Джонсон Харт
Использование библиотеки С впотоках : Джонсон Харт продолжение 307
Пример: многопоточный поиск контекста : Джонсон Харт Модель "хозяин/рабочий" и другие модели многопоточных приложений : Джонсон Харт
j310.html Локальные области хранения потоков : Джонсон Харт
Приоритеты процессов и потоков и планирование выполнения : Джонсон Харт продолжение 313
Состояния потоков : Джонсон Харт Возможные ловушки и распространенные ошибки : Джонсон Харт
Облегченные потоки : Джонсон Харт Упражнения : Джонсон Харт
Необходимость в синхронизации потоков : Джонсон Харт продолжение 319 : Джонсон Харт
Критические участки кода : Джонсон Харт Резюме: безопасный многопоточный код : Джонсон Харт
Объекты синхронизации потоков : Джонсон Харт Объекты критических участковкода : Джонсон Харт
продолжение 324 : Джонсон Харт Использование объектов CRITICAL_SECTION для защиты разделяемыхпеременных : Джонсон Харт
Пример: простая система "производитель/потребитель" : Джонсон Харт продолжение 327 : Джонсон Харт
Комментарии к примеру простой системы "производитель/потребитель" : Джонсон Харт Мьютексы : Джонсон Харт
продолжение 330 : Джонсон Харт Мьютексы, критические участки кода и взаимоблокировки : Джонсон Харт
Семафоры : Джонсон Харт продолжение 333 : Джонсон Харт
Использование семафоров : Джонсон Харт Ограниченность семафоров : Джонсон Харт
События : Джонсон Харт продолжение 337 : Джонсон Харт
Обзор: четыре модели использования событий : Джонсон Харт Пример: система "производитель/потребитель" : Джонсон Харт
Обзор: объекты синхронизации Windows : Джонсон Харт продолжение 341 : Джонсон Харт
j342.html Другие функции взаимоблокировки : Джонсон Харт
Резюме : Джонсон Харт Упражнения : Джонсон Харт
Необходимость в синхронизации потоков : Джонсон Харт Критические участки кода : Джонсон Харт
Резюме: безопасный многопоточный код : Джонсон Харт продолжение 349
Критические участки кода : Джонсон Харт Резюме: безопасный многопоточный код : Джонсон Харт
Объекты синхронизации потоков : Джонсон Харт Объекты критических участковкода : Джонсон Харт
продолжение 354 Использование объектов CRITICAL_SECTION для защиты разделяемыхпеременных : Джонсон Харт
Пример: простая система "производитель/потребитель" : Джонсон Харт Комментарии к примеру простой системы "производитель/потребитель" : Джонсон Харт
продолжение 358 Комментарии к примеру простой системы "производитель/потребитель" : Джонсон Харт
Мьютексы : Джонсон Харт Мьютексы, критические участки кода и взаимоблокировки : Джонсон Харт
продолжение 362 Мьютексы, критические участки кода и взаимоблокировки : Джонсон Харт
Семафоры : Джонсон Харт Использование семафоров : Джонсон Харт
Ограниченность семафоров : Джонсон Харт продолжение 367
Использование семафоров : Джонсон Харт Ограниченность семафоров : Джонсон Харт
События : Джонсон Харт Обзор: четыре модели использования событий : Джонсон Харт
продолжение 372 Обзор: четыре модели использования событий : Джонсон Харт
Пример: система "производитель/потребитель" : Джонсон Харт Обзор: объекты синхронизации Windows : Джонсон Харт
продолжение 376 j377.html
Другие функции взаимоблокировки : Джонсон Харт Упражнения : Джонсон Харт
ГЛАВА 9 Влияние синхронизации на производительность и рекомендации по ее повышению : Джонсон Харт Влияние синхронизации на производительность : Джонсон Харт
Достоинства и недостатки объектов CRITICAL_SECTION : Джонсон Харт Модельная программа для исследования факторов производительности : Джонсон Харт
Настройка производительности SMP-систем с помощью спин-счетчиков : Джонсон Харт продолжение 385 : Джонсон Харт
Дросселирование семафора для уменьшения состязательности между потоками : Джонсон Харт Родство процессоров : Джонсон Харт
Маски родства системы, процесса и потока : Джонсон Харт Рекомендации по повышению производительности и возможные риски : Джонсон Харт
Упражнения : Джонсон Харт продолжение 391
Достоинства и недостатки объектов CRITICAL_SECTION : Джонсон Харт Достоинства и недостатки объектов CRITICAL_SECTION : Джонсон Харт
Модельная программа для исследования факторов производительности : Джонсон Харт Настройка производительности SMP-систем с помощью спин-счетчиков : Джонсон Харт
продолжение 396 Дросселирование семафора для уменьшения состязательности между потоками : Джонсон Харт
Маски родства системы, процесса и потока : Джонсон Харт Маски родства системы, процесса и потока : Джонсон Харт
Рекомендации по повышению производительности и возможные риски : Джонсон Харт Упражнения : Джонсон Харт
Модель переменных условий и свойства безопасности : Джонсон Харт Совместное использование событий и мьютексов : Джонсон Харт
Модель переменных условий : Джонсон Харт Использование функции SignalObjectAndWait : Джонсон Харт
Пример: объект порогового барьера : Джонсон Харт продолжение 407 : Джонсон Харт
Объект очереди : Джонсон Харт продолжение 409 : Джонсон Харт
Комментарии по поводу функций управления очередью с точки зрения производительности : Джонсон Харт Пример: использование очередей в многоступенчатом конвейере : Джонсон Харт
продолжение 412 : Джонсон Харт Асинхронные вызовы процедур : Джонсон Харт
Очередизация асинхронных вызовов процедур : Джонсон Харт Состояния дежурного ожидания : Джонсон Харт
Рекомендации по проектированию, отладке и тестированию программ : Джонсон Харт Как избежать создания некорректного программного кода : Джонсон Харт
Резюме : Джонсон Харт Упражнения : Джонсон Харт
Совместное использование событий и мьютексов : Джонсон Харт Модель переменных условий : Джонсон Харт
Использование функции SignalObjectAndWait : Джонсон Харт Совместное использование событий и мьютексов : Джонсон Харт
Модель переменных условий : Джонсон Харт Использование функции SignalObjectAndWait : Джонсон Харт
Пример: объект порогового барьера : Джонсон Харт продолжение 427
Объект очереди : Джонсон Харт Комментарии по поводу функций управления очередью с точки зрения производительности : Джонсон Харт
продолжение 430 Комментарии по поводу функций управления очередью с точки зрения производительности : Джонсон Харт
Пример: использование очередей в многоступенчатом конвейере : Джонсон Харт продолжение 433
Асинхронные вызовы процедур : Джонсон Харт Состояния дежурного ожидания : Джонсон Харт
Рекомендации по проектированию, отладке и тестированию программ : Джонсон Харт Как избежать создания некорректного программного кода : Джонсон Харт
Упражнения : Джонсон Харт ГЛАВА 11 Взаимодействие между процессами : Джонсон Харт
Пример: перенаправление ввода/вывода с использованием анонимного канала : Джонсон Харт Именованные каналы : Джонсон Харт
продолжение 442 : Джонсон Харт Создание именованных каналов : Джонсон Харт
Функции подключения именованных каналов : Джонсон Харт Подключение клиентов и серверов именованных каналов : Джонсон Харт
Функции транзакций именованных каналов : Джонсон Харт продолжение 447 : Джонсон Харт
Определение наличия сообщений в именованных каналах : Джонсон Харт Пример: клиент-серверный процессор командной строки : Джонсон Харт
Комментарии по поводу клиент-серверного процессора командной строки : Джонсон Харт Почтовые ящики : Джонсон Харт
продолжение 452 : Джонсон Харт Использование почтовых ящиков : Джонсон Харт
Создание и открытие почтового ящика : Джонсон Харт Создание, подключение и именование каналов и почтовых ящиков : Джонсон Харт
Пример: сервер, обнаруживаемый клиентами : Джонсон Харт Комментарии по поводу многопоточных моделей : Джонсон Харт
Упражнения : Джонсон Харт продолжение 459
Пример: перенаправление ввода/вывода с использованием анонимного канала : Джонсон Харт Именованные каналы : Джонсон Харт
Создание именованных каналов : Джонсон Харт Функции подключения именованных каналов : Джонсон Харт
Подключение клиентов и серверов именованных каналов : Джонсон Харт продолжение 465
Создание именованных каналов : Джонсон Харт Функции подключения именованных каналов : Джонсон Харт
Подключение клиентов и серверов именованных каналов : Джонсон Харт Функции транзакций именованных каналов : Джонсон Харт
Определение наличия сообщений в именованных каналах : Джонсон Харт продолжение 471
Определение наличия сообщений в именованных каналах : Джонсон Харт Пример: клиент-серверный процессор командной строки : Джонсон Харт
Комментарии по поводу клиент-серверного процессора командной строки : Джонсон Харт Почтовые ящики : Джонсон Харт
Использование почтовых ящиков : Джонсон Харт Создание и открытие почтового ящика : Джонсон Харт
продолжение 478 Использование почтовых ящиков : Джонсон Харт
Создание и открытие почтового ящика : Джонсон Харт Создание, подключение и именование каналов и почтовых ящиков : Джонсон Харт
Пример: сервер, обнаруживаемый клиентами : Джонсон Харт Комментарии по поводу многопоточных моделей : Джонсон Харт
Упражнения : Джонсон Харт ГЛАВА 12 Сетевое программирование с помощью сокетов Windows : Джонсон Харт
Сокеты Windows : Джонсон Харт Инициализация Winsock : Джонсон Харт
Создание сокета : Джонсон Харт Серверные функции сокета : Джонсон Харт
Связывание сокета : Джонсон Харт Клиентские функции сокета : Джонсон Харт
Сравнение именованных каналов и сокетов : Джонсон Харт Пример: функция приема сообщений в случае сокета : Джонсон Харт
Пример: клиент на основе сокета : Джонсон Харт Пример: усовершенствованный сервер на основе сокетов : Джонсон Харт
продолжение 496 : Джонсон Харт Внутрипроцессные серверы : Джонсон Харт
Ориентированные на строки сообщения, точкив хода DLL и TLS : Джонсон Харт Пример: безопасная многопоточная DLL для обмена сообщениями через сокет : Джонсон Харт
продолжение 500 : Джонсон Харт Комментарии по поводу DLL и безопасной многопоточной среды : Джонсон Харт
j502.html Дейтаграммы : Джонсон Харт
Резюме : Джонсон Харт Упражнения : Джонсон Харт
продолжение 506 Инициализация Winsock : Джонсон Харт
Создание сокета : Джонсон Харт Инициализация Winsock : Джонсон Харт
Создание сокета : Джонсон Харт Связывание сокета : Джонсон Харт
Связывание сокета : Джонсон Харт Пример: функция приема сообщений в случае сокета : Джонсон Харт
Пример: клиент на основе сокета : Джонсон Харт Пример: усовершенствованный сервер на основе сокетов : Джонсон Харт
продолжение 516 Внутрипроцессные серверы : Джонсон Харт
Пример: безопасная многопоточная DLL для обмена сообщениями через сокет : Джонсон Харт Комментарии по поводу DLL и безопасной многопоточной среды : Джонсон Харт
продолжение 520 Комментарии по поводу DLL и безопасной многопоточной среды : Джонсон Харт
j522.html Упражнения : Джонсон Харт
ГЛАВА 13 Windows Services : Джонсон Харт Функция main() : Джонсон Харт
Функции ServiceMain() : Джонсон Харт Структура SERVICE_STATUS : Джонсон Харт
Пример: "интерфейсная оболочка" службы : Джонсон Харт Управление службами Windows : Джонсон Харт
Создание и удаление службы : Джонсон Харт Пример:команднаяоболочкауправленияслужбами : Джонсон Харт
Замечания по отладке службы : Джонсон Харт продолжение 533
Функция main() : Джонсон Харт Структура SERVICE_STATUS : Джонсон Харт
Структура SERVICE_STATUS : Джонсон Харт Пример: "интерфейсная оболочка" службы : Джонсон Харт
Создание и удаление службы : Джонсон Харт Создание и удаление службы : Джонсон Харт
Пример:команднаяоболочкауправленияслужбами : Джонсон Харт Замечания по отладке службы : Джонсон Харт
Обзор методов асинхронного ввода/вывода Windows : Джонсон Харт Перекрывающийся ввод/вывод : Джонсон Харт
продолжение 544 : Джонсон Харт Следствия применения перекрывающегося ввода/вывода : Джонсон Харт
Структуры OVERLAPPED : Джонсон Харт j547.html
Расширенный ввод/вывод с использованием процедуры завершения : Джонсон Харт продолжение 549 : Джонсон Харт
Функции ReadFileEx, WriteFileEx и процедурызавершения : Джонсон Харт Функции дежурного ожидания : Джонсон Харт
Выполнение процедуры завершения и возврат из функции дежурного ожидания : Джонсон Харт Пример: преобразование файла с использованием расширенного ввода/вывода : Джонсон Харт
Асинхронный ввод/вывод сиспользованием нескольких потоков : Джонсон Харт Таймеры ожидания : Джонсон Харт
Пример: использование таймера ожидания : Джонсон Харт продолжение 557 : Джонсон Харт
Порты завершения ввода/вывода : Джонсон Харт продолжение 559 : Джонсон Харт
Управление портами завершения ввода/вывода : Джонсон Харт Ожидание порта завершения ввода/вывода : Джонсон Харт
Пример: сервер, использующий порты завершения ввода/вывода : Джонсон Харт Резюме : Джонсон Харт
продолжение 564 : Джонсон Харт Обзор методов асинхронного ввода/вывода Windows : Джонсон Харт
Перекрывающийся ввод/вывод : Джонсон Харт Следствия применения перекрывающегося ввода/вывода : Джонсон Харт
Структуры OVERLAPPED : Джонсон Харт продолжение 569
Следствия применения перекрывающегося ввода/вывода : Джонсон Харт Структуры OVERLAPPED : Джонсон Харт
j572.html Расширенный ввод/вывод с использованием процедуры завершения : Джонсон Харт
Функции ReadFileEx, WriteFileEx и процедурызавершения : Джонсон Харт Функции дежурного ожидания : Джонсон Харт
Выполнение процедуры завершения и возврат из функции дежурного ожидания : Джонсон Харт продолжение 577
Функции ReadFileEx, WriteFileEx и процедурызавершения : Джонсон Харт Функции дежурного ожидания : Джонсон Харт
Выполнение процедуры завершения и возврат из функции дежурного ожидания : Джонсон Харт Пример: преобразование файла с использованием расширенного ввода/вывода : Джонсон Харт
Асинхронный ввод/вывод сиспользованием нескольких потоков : Джонсон Харт Таймеры ожидания : Джонсон Харт
Пример: использование таймера ожидания : Джонсон Харт продолжение 585
Порты завершения ввода/вывода : Джонсон Харт Управление портами завершения ввода/вывода : Джонсон Харт
Ожидание порта завершения ввода/вывода : Джонсон Харт продолжение 589
Управление портами завершения ввода/вывода : Джонсон Харт Ожидание порта завершения ввода/вывода : Джонсон Харт
Пример: сервер, использующий порты завершения ввода/вывода : Джонсон Харт Резюме : Джонсон Харт
продолжение 594 ГЛАВА 15 Безопасность объектов Windows : Джонсон Харт
Общий обзор средств безопасности: дескриптор безопасности : Джонсон Харт Идентификаторы безопасности : Джонсон Харт
Работа с ACL : Джонсон Харт Пример: использование разрешений на доступ в стиле UNIX к файлам NTFS : Джонсон Харт
Пример: инициализация атрибутов защиты : Джонсон Харт продолжение 601 : Джонсон Харт
Комментарии к программе 15.3 : Джонсон Харт Чтение и изменение дескрипторов безопасности : Джонсон Харт
Пример: чтение разрешений на доступ к файлу : Джонсон Харт Пример: изменение разрешений на доступ к файлу : Джонсон Харт
Защита объектов ядра и коммуникаций : Джонсон Харт Защита именованных каналов : Джонсон Харт
Обзор дополнительных возможностей защиты объектов : Джонсон Харт Упражнения : Джонсон Харт
продолжение 610 Идентификаторы безопасности : Джонсон Харт
Работа с ACL : Джонсон Харт Пример: использование разрешений на доступ в стиле UNIX к файлам NTFS : Джонсон Харт
Пример: инициализация атрибутов защиты : Джонсон Харт Комментарии к программе 15.3 : Джонсон Харт
продолжение 616 Комментарии к программе 15.3 : Джонсон Харт
Чтение и изменение дескрипторов безопасности : Джонсон Харт Пример: чтение разрешений на доступ к файлу : Джонсон Харт
Пример: изменение разрешений на доступ к файлу : Джонсон Харт Защита именованных каналов : Джонсон Харт
Защита именованных каналов : Джонсон Харт Упражнения : Джонсон Харт
Нынешнее состояние Win64 : Джонсон Харт Обзор 64-разрядной архитектуры : Джонсон Харт
Необходимость в 64-битовой адресации : Джонсон Харт Типы данных : Джонсон Харт
Типы данных, соответствующие точности указателей : Джонсон Харт Перенос имеющегося программного кода : Джонсон Харт
j630.html Пример: перенос программы sortMM (программа 5.5) : Джонсон Харт
Предупреждающие сообщения компилятора : Джонсон Харт Резюме : Джонсон Харт
Необходимость в 64-битовой адресации : Джонсон Харт Необходимость в 64-битовой адресации : Джонсон Харт
Типы данных, соответствующие точности указателей : Джонсон Харт Типы данных, соответствующие точности указателей : Джонсон Харт
j638.html j639.html
Предупреждающие сообщения компилятора : Джонсон Харт Предупреждающие сообщения компилятора : Джонсон Харт
ПРИЛОЖЕНИЕ А Использование примеров программ : Джонсон Харт Структура каталогов : Джонсон Харт
Каталог Utility : Джонсон Харт Распределение программ по главам : Джонсон Харт
Листинги включаемых файлов : Джонсон Харт Дополнительные служебные программы : Джонсон Харт
продолжение 648 Каталог Utility : Джонсон Харт
Распределение программ по главам : Джонсон Харт Каталог Utility : Джонсон Харт
Распределение программ по главам : Джонсон Харт Листинги включаемых файлов : Джонсон Харт
Дополнительные служебные программы : Джонсон Харт ПРИЛОЖЕНИЕ Б Сопоставление функций Windows, UNIX и библиотеки С : Джонсон Харт
Тестовые конфигурации : Джонсон Харт Приложения : Джонсон Харт
Измерение производительности : Джонсон Харт продолжение 659 : Джонсон Харт
Копирование файлов : Джонсон Харт Преобразование символов из кодировки ASCII в Unicode : Джонсон Харт
Поиск заданных комбинаций символов : Джонсон Харт Сортировка файлов : Джонсон Харт
Множество потоков, соревнующихся между собой за обладание единственным ресурсом : Джонсон Харт Приложения : Джонсон Харт
Приложения : Джонсон Харт Измерение производительности : Джонсон Харт
Копирование файлов : Джонсон Харт Преобразование символов из кодировки ASCII в Unicode : Джонсон Харт
Поиск заданных комбинаций символов : Джонсон Харт Сортировка файлов : Джонсон Харт
Множество потоков, соревнующихся между собой за обладание единственным ресурсом : Джонсон Харт продолжение 673
Копирование файлов : Джонсон Харт Преобразование символов из кодировки ASCII в Unicode : Джонсон Харт
Поиск заданных комбинаций символов : Джонсон Харт Сортировка файлов : Джонсон Харт
Множество потоков, соревнующихся между собой за обладание единственным ресурсом : Джонсон Харт Библиография : Джонсон Харт
Использовалась литература : Системное программирование в среде Windows    

Разделы
Околокомпьютерная литература (375)
Программирование (102)
Программы (75)
ОС и Сети (49)
Интернет (29)
Аппаратное обеспечение (16)
Базы данных (6)


Microsoft Office Журнал Компьютерра № 32 от 5 сентября 2006 года Журнал Компьютерра № 34 от 18 сентября 2006 года