Tato kniha je věnována vývoji aplikací využívajících aplikační programovací rozhraní operačních systémů Microsoft (Windows 9x, Windows XP, Windows 2000 a Windows Server 2003). Důraz je kladen na základní systémové služby, včetně správy souborového systému, správy procesů a vláken, meziprocesové komunikace, síťového programování a synchronizace. Je zvažována technika portování aplikací napsaných v prostředí Win32 do prostředí Win64. Podrobně popisuje všechny aspekty bezpečnostního systému Windows a jeho praktická aplikace. hojnost skutečné příklady, dostupný také na webových stránkách knihy, značně zjednodušuje asimilaci materiálu.

Kniha je určena pro vývojáře a programátory, jak vysoce kvalifikované, tak začátečníky, a bude užitečná i pro studenty příslušných specializací.

Úvod

Tato kniha popisuje, jak vyvíjet aplikace pomocí aplikačního programovacího rozhraní (API) operačních systémů Windows společnosti Microsoft, se zaměřením na základní systémové služby, včetně správy souborového systému, správy procesů a vláken, meziprocesové komunikace, síťového programování a synchronizace. Tato kniha se nezabývá uživatelskými rozhraními, interními prvky Windows a I/O ovladači, ačkoli tato témata jsou sama o sobě stejně důležitá a zajímavá. Pro příklady byly zvoleny především realistické scénáře, a proto mnohé z nich mohou dobře posloužit jako základ pro budování reálných aplikací.

Win32/Win64 API nebo obecně Windows API jsou podporovány rodinou 32bitových a 64bitových operačních systémů společnosti Microsoft, která v současnosti zahrnuje Windows XP, Windows 2000 a Windows Server 2003. Systémy Windows NT, Windows Me, Windows 98 a Windows 95; tyto systémy jsou nyní považovány za zastaralé, ale mnoho ukázkových programů v této knize pod nimi může běžet. Podle potřeby jsou diskutovány problémy s migrací z platformy Win32 na vyvíjející se platformu Win64. Win64, podporovaný jako 64bitové rozhraní v některých verzích Windows Server 2003 a Windows XP, je téměř totožný s Win32.

Není pochyb o tom, že Windows API je nejdůležitějším faktorem, který ovlivňuje celý proces vývoje aplikace a v mnoha případech nahrazuje POSIX API podporované operačními systémy UNIX a Linux, protože je považováno za vhodnější nebo alespoň poskytuje stejné možnosti. pro aplikace, zaměřené na desktopové a serverové systémy. Proto má mnoho zkušených programátorů zájem naučit se Windows API co nejdříve a tato kniha je navržena tak, aby to podpořila.

Nejprve vám musím říci, co je to Windows API a ukázat vám, jak jej používat reálné situace, a tento příběh by měl být co nejkratší a nepřetížený zbytečnými detaily. Proto tato kniha není určena k použití jako a Referenční příručku, ale seznámit se s hlavními vlastnostmi nejdůležitějších funkcí a demonstrovat možnosti jejich uplatnění v situacích praktické programování. Čtenář, vyzbrojený těmito znalostmi, bude moci využít rozsáhlou dokumentaci nápovědy poskytovanou společností Microsoft k samostatnému hloubkovému zkoumání konkrétních témat, pokročilých funkcí a méně známých funkcí podle svých potřeb nebo zájmů. Osobně s tímto přístupem pro mě bylo učení Windows API snadné a vývoj programů pro Windows byla velká radost, i když se našly i nepříjemné momenty. Mé impulsy nadšení jsou na některých místech knihy snadno viditelné, což vlastně není překvapivé. To ovšem vůbec nesvědčí o tom, že bych bezvýhradně souhlasil s nadřazeností Windows API nad API jiných operačních systémů (OS), ale jen málokdo bude namítat, že má spoustu kladných vlastností.

Autoři mnoha knih o Windows věnují značnou pozornost vysvětlení, co jsou procesy, virtuální paměť, meziprocesová komunikace, která předchází plánovači, ale neukazuje, jak se to všechno používá v reálných situacích. Programátoři se zkušenostmi s UNIXem, Linuxem, IBM MVS, Open VMS a některými dalšími operačními systémy již tyto pojmy znají a zajímá je pouze to, aby se co nejrychleji naučili, jak jsou tyto funkce implementovány ve Windows. Většina knih o Windows navíc dává důležité místo programovacím metodám založeným na uživatelské rozhraní. Abychom se soustředili pouze na nejdůležitější základní funkce poskytované systémem, tato kniha se nedotýká uživatelského rozhraní a omezujeme naši diskuzi na jednoduché I/O znakové konzole.

Z pohledu této knihy je Windows jen API. operační systém, který poskytuje sadu dobře srozumitelných nástrojů. Potřebu zrychleného učení se Windows pociťuje mnoho programátorů bez ohledu na úroveň jejich zkušeností a bez znalosti Windows je nemyslitelné diskutovat o tématech, jako je Component Object Model (COM) vyvinutý společností Microsoft. V některých ohledech systémy Windows předčí jiné systémy, v jiných zaostávají nebo jsou přibližně na stejné úrovni. Účelem této knihy je ukázat, jak nejlépe využít tyto schopnosti v reálných situacích k vývoji užitečných, vysoce kvalitních a vysoce výkonných aplikací.

Potenciální publikum

Každý, kdo se chce rychle naučit vyvíjet aplikace, bez ohledu na úroveň zkušeností.

Programátoři a vývojáři software, kteří stojí před úkolem přenést existující aplikace napsané zejména pro UNIX na některý z Platformy Windows. Kniha demonstruje komparativní schopnosti funkcí a programovacích modelů s nimi spojených pomocí Windows, UNIX a standardní knihovna C. Každá z běžných funkcí systému UNIX, včetně řízení procesů, synchronizace, souborové systémy a meziprocesová komunikace, je uvažována z hlediska Windows.

Čtenáři začínající vyvíjet nové projekty, které nejsou omezeny ve svých akcích potřebou portovat stávající programové kódy na jiné platformy. Kniha pokrývá mnoho aspektů návrhu a implementace programu a ukazuje, jak k vytváření používat funkce Windows užitečné aplikace a řešení běžných problémů s programováním.

Programátoři COM a .NET Framework zde naleznou spoustu užitečných informací, které jim pomohou naučit se, jak fungují dynamické knihovny (DLL), modely vláken a jak je používat, rozhraní a synchronizaci.

Studenti, kteří studují informatiku nebo pracují na bakalářských pracích týkajících se systémového programování nebo vývoje aplikací. Kniha bude užitečná i pro ty, kteří studují vícevláknové programování nebo se potýkají s potřebou vytvářet síťové aplikace. Může být také použit jako užitečný doplněk ke zdrojům, jako je kniha W. Richarda Stevense (W. Richard Stevens) Pokročilé programování v prostředí UNIX(viz bibliografie), aby studenti mohli porovnávat Funkce Windows a UNIX. Tato kniha bude také velkou pomocí pro studenty, kteří se účastní kurzu OS, protože přesně ukazuje, jak jsou poskytovány základní funkce OS, které jsou komerčně zajímavé.

Jediným předpokladem, který je obsažen ve všem výše uvedeném, je předpoklad, že čtenáři mají zkušenosti s programováním v jazyce C.

Změny ve třetím vydání

Spolu s významnou aktualizací a reorganizací z prvních dvou vydání přidává třetí vydání značné množství nového materiálu. Tato publikace si klade za cíl vyřešit následující úkoly:

Pokryjte nové funkce představené ve Windows XP, Windows 2000 a Windows Server 2003 a zvažte přechod na platformu Win64.

Zastarat materiál specifický pro Windows 95, Windows 98 a Windows ME (řada "Windows 9x") jako zastaralý, protože se aktuálně dodává osobní systémy Je nainstalován systém Windows XP a omezení obsažená ve Windows 9x již ztratila svůj význam. Ve vzorových programech jsou bez výhrad použity nástroje, které jsou obsaženy pouze v aktuální verze Windows, ačkoli některé programy v důsledku toho nebudou na Windows 9x fungovat.

Poskytněte komplexnější pokrytí tématu vláken a synchronizace, včetně aspektů souvisejících s výkonem, škálovatelností a spolehlivostí. Kapitola 9, stejně jako některé příklady v kapitole 10, jsou nové.

Zdůrazněte rostoucí vliv systémů Windows 2000 a Windows Server 2003 a nových nástrojů, které obsahují, na vysoce výkonné, škálovatelné a vícevláknové serverové aplikace.

Prozkoumejte závislost výkonnosti programů na principech jejich konstrukce, přičemž zvláštní pozornost věnujte vícevláknovým programům se synchronizací a vlastnostem provozu těchto programů v podmínkách symetrických multiprocesorových (Symmetrical Multiprocessor, SMP) systémů.

Zohledněte připomínky čtenářů a studentů k nápravě nedostatků a vylepšení stylu prezentace a také všechny jejich rady a podněty, důležité i ty nejnepodstatnější.

Jak je tato kniha uspořádána

Kapitoly jsou řazeny podle jejich tematického zaměření, a proto jsou nejprve zvažovány nástroje nutné pro provoz výhradně jednovláknových aplikací, poté nástroje používané k řízení procesů a vláken a teprve poté problémy síťového programování ve vícevláknovém prostředí. jsou diskutovány. Tato organizace knihy usnadňuje čtenáři sledovat logiku prezentace, postupný přechod od souborových systémů ke správě paměti a mapování souborů, poté k procesům, vláknům a synchronizaci a poté k meziprocesové a síťové komunikaci a aplikacím. bezpečnostní problémy. Tato organizace také umožňuje přirozeně stavět na příkladech, protože se stávají složitějšími, podobně jako to dělá vývojář, když nejprve vytvoří jednoduchý prototyp a poté postupně představí další funkce. Zvažování pokročilých problémů, jako jsou asynchronní I/O a bezpečnostní problémy, bylo přesunuto na úplný konec knihy.

V rámci každé kapitoly jsou po krátké diskusi o jednotlivých funkcích, jako je řízení procesů nebo mapování souborů, podrobně rozebrány nejdůležitější z příslušných funkcí Windows a jejich vzájemný vztah. Prezentace je doplněna názornými ukázkami. V hlavním textu jsou zahrnuty pouze nejvýznamnější části výpisů programů; plné texty programů, stejně jako nezbytné soubory, pomocné funkce a další kódy jsou uvedeny v příloze A nebo jsou k dispozici na webových stránkách knihy (http://www.awprofessional.com/titles/0321256190) . Kdykoli jsou funkce podporovány pouze aktuálními verzemi Windows (XP, 2000 a Server 2003) a nejsou podporovány dřívějšími verzemi, jako jsou Windows 9x a Windows NT, které neobsahují mnoho vylepšených funkcí, platí samostatné prohlášení o vyloučení odpovědnosti. Každá kapitola obsahuje seznam další doporučené literatury a nabízí několik cvičení. Mnohá ​​cvičení se zaměřují na problémy, které jsou důležité a do určité míry zajímavé, ale nebyly obsaženy v hlavním textu, zatímco jiná cvičení nutí čtenáře proniknout hlouběji do témat složitějšího nebo specializovaného charakteru.

Kapitola 1 poskytuje úvod do rodiny operačních systémů Windows a rozhraní API systému Windows na vysoké úrovni. Použito jako příklad jednoduchý program Demonstruje základní prvky stylu programování Windows a poskytuje základ pro implementaci pokročilých funkcí Windows. Problémy s migrací softwaru Win64 a mezi platformami jsou diskutovány nejprve v kapitole 1, podrobněji prozkoumány v kapitole 16 a podle potřeby diskutovány ve zbytku knihy.

Kapitoly 2 a 3 pokrývají systémy souborů, vstup/výstup konzoly, zamykání souborů a správu adresářů. Kapitola 2 také hovoří o Unicode, rozšířené znakové sadě používané systémem Windows. Relevantní ilustrativní příklady zahrnují sekvenční a přímý přístup k datům obsaženým v souboru, procházení stromem adresářů a archivaci souborů. Kapitola 3 končí diskusí ovládání programu registru, který má hodně společného se správou souborů a adresářů.

Kapitola 4 seznamuje čtenáře se zpracováním výjimek Windows, včetně Structured Exception Handling (SEH), které bude široce používáno v celé knize. V mnoha knihách je studium SEH odloženo až do posledních kapitol, nicméně poté, co jsme se s tímto nástrojem seznámili již v počáteční fázi, budeme jej moci okamžitě používat, což nám výrazně zjednoduší některé programovací úlohy a zlepší kvalitu našich programů. Kromě toho je zde také popsána jedna z nejnovějších funkcí, zpracování vektorových výjimek.

Kapitola 5 se zabývá správou paměti ve Windows a ukazuje, jak se mapování souborů používá nejen ke zjednodušení programování, ale také ke zlepšení výkonu programu. Tato kapitola také pojednává o organizaci knihoven DLL.

Kapitola 6 poskytuje úvod do procesů, řízení procesů a jednoduché metody synchronizace v systému Windows. Později v kapitole 7 jsou tyto pojmy použity k popisu řízení toku. Příklady v každé kapitole ilustrují mnoho výhod, včetně zjednodušení programu a zlepšení výkonu, které plynou z používání vláken a procesů.

Kapitoly 8, 9 a 10 nabízejí hloubkovou analýzu jednoho z nejvýkonnějších Nástroje Windows- synchronizace vláken. Synchronizace je složité téma, a proto tyto kapitoly obsahují četné příklady a popisy dobře srozumitelných modelů, které by měly čtenáři pomoci plně využít vlákna ke zlepšení efektivity programování a výkonu programu a zároveň se vyhnout mnoha nástrahám. Tyto kapitoly zahrnují nový materiál, zabývající se otázkami výkonu a škálovatelnosti, které jsou zvláště důležité při vytváření serverových aplikací, včetně těch, které mají běžet na SMP systémech.

Kapitoly 11 a 12 jsou věnovány meziprocesové a mezivláknové komunikaci a také síťovému programování. Kapitola 11 se zaměřuje na funkce, které jsou součástí Windows, jmenovitě anonymní kanály, pojmenované kanály a poštovní schránky. Kapitola 12 pojednává o Windows Sockets (Windows Sockets), které poskytují možnost komunikace se systémy mimo Windows. Rodina Windows prostřednictvím standardních protokolů, zejména TCP/IP. A i když Rozhraní Windows Sockety, přísně vzato, nejsou součástí Windows API, jsou schopné komunikovat a interagovat přes sítě a Internet, takže předmět této kapitoly je v souladu se zbytkem knihy. Na příkladu vícevláknového systému klient-server je ilustrováno, jak může být zajištěna meziprocesová komunikace spolu s vlákny.

Kapitola 13 ukazuje jak způsobem Windows umožňuje přeměnit serverové aplikace, jako jsou ty vytvořené v kapitolách 11 a 12 služby Windows(Windows Services), které lze spravovat jako back-end servery. Převod serveru na službu vyžaduje pouze drobné změny v programu.

Kapitola 14 ukazuje, jak provádět asynchronní I/O operace pomocí překrývajících se I/O, stejně jako události a rutiny dokončení. Stejných výsledků lze dosáhnout s vlákny, proto jsou uvedeny příklady pro porovnání různých řešení z hlediska jednoduchosti a výkonu příslušných programů. Budování škálovatelných vícevláknových serverů zároveň vyžaduje použití dokončovacích portů, jejichž použití je ilustrováno na příkladu serverů vytvořených v předchozích kapitolách. Jsou také popsány čekací časovače, jejichž diskuse vyžaduje použití pojmů představených dříve v této kapitole.

Kapitola 15 se zaměřuje na zabezpečení objektů Windows a jako příklad používá emulaci systému ochrany souborů ve stylu UNIX, který vyžaduje příslušná oprávnění k provádění určitých operací se souborem. Další příklady ilustrují, jak jsou chráněny procesy, vlákna a pojmenované kanály. K dříve diskutovaným příkladům lze poté přidat bezpečnostní doplňky.

Kapitola 16 uzavírá hlavní materiál diskusí o programování pro Win64 a také o zajištění kompatibility softwaru s touto platformou. Poté je jeden z výše uvažovaných příkladů převeden do podoby, která umožňuje přenést program na platformu Win64.

Hlavní materiál knihy doplňují tři přílohy. Příloha A obsahuje popisy programů dostupných na webových stránkách knihy a doporučení pro jejich použití. Příloha B obsahuje několik tabulek, které porovnávají funkce Windows s ekvivalentními funkcemi poskytovanými UNIXem a standardní knihovnou C. Příloha C porovnává výkon alternativních implementací některých příkladů v hlavním textu, což umožňuje čtenáři vytvořit si vlastní představu o relativní přednosti a nedostatky nástrojů Windows, základních i pokročilých, a nástrojů poskytovaných knihovnou C.

Srovnání s UNIXem a knihovnou C

V průběhu prezentace materiálu porovnáváme styl a funkční vlastnosti Nástroje Windows a podobné nástroje obsažené v UNIX (Linux) a standardní knihovně ANSI C. Jak již bylo uvedeno, tabulky v příloze B poskytují úplný seznam srovnatelných funkcí. Mysleli jsme si, že by bylo užitečné tyto informace zahrnout, protože mnoho čtenářů zná UNIX a výsledky vzájemného porovnání obou systémů je nepochybně budou zajímat. Ti, kteří nejsou obeznámeni se systémem UNIX, mohou bezpečně přeskočit příslušné sekce, které jsou vytištěny malým písmem a odsazeny, aby bylo snazší je rozlišit.

Příklady by měly poskytovat příklady běžného, ​​nejběžnějšího a praktického použití funkcí systému Windows.

Měly by odpovídat reálným situacím z oblasti programování, kterým musí člověk čelit v procesu vývoje softwaru, poradenství a školení. Někteří z mých klientů a posluchačů použili ukázkové kódy při budování svých vlastních systémů. Při svých konzultacích se často setkávám s kódy programů podobnými těm, které jsou obsaženy v této knize, a při několika příležitostech jsem byl dokonce osloven s kódy převzatými přímo z prvního nebo druhého vydání. (Mimochodem, ukázky z knihy můžete využít i ve své práci, a pokud i díky mně zahrnete do dokumentace, pak budu jedině rád.) Často jsem se s těmito kódy setkával jako se samostatnými částmi COM nebo C ++ objekty. Příklady se s přihlédnutím k omezením na dobu jejich přípravy a povolenému množství kódu blíží „skutečnému životu“ a řeší „skutečné“ problémy.

Příklady by měly upozornit na skutečné chování a interakci funkcí, které nejsou vždy takové, jaké by se po přečtení dokumentace očekávaly. V této knize se text i příklady nezaměřují na samotné funkce, ale na to, jak se vzájemně ovlivňují.

Ukázkový kód by měl být vytvářen postupně a rozšiřován tak, aby k předchozímu řešení přidal novou funkcionalitu jednoduchým a srozumitelným způsobem a demonstroval alternativní implementační techniky.

Mnoho příkladů v prvních několika kapitolách implementuje příkazy systému UNIX, jako je ls, touch, chmod a sort, čímž představuje některým čtenářům funkce Windows ve známém kontextu a zároveň poskytuje užitečnou sadu pomocných funkcí. Různé implementace stejného příkazu navíc usnadňuje vyhodnocení výkonových výhod používání vylepšení systému Windows. Příslušné výsledky zkoušek jsou uvedeny v příloze B.

Příklady uvedené na začátku knihy se zpravidla liší krátkou délkou programů, ale jak se látka v následujících kapitolách komplikuje, velikost ilustrativního programového kódu se v případě potřeby výrazně zvětšuje.

Ve cvičeních uvedených na konci každé kapitoly je čtenář požádán, aby se rozvinul alternativní možnostiřešení, prozkoumejte samostatně doporučená témata nebo prozkoumejte další funkce, které jsou sice zajímavé, ale nemohou být v této knize podrobně popsány. Některá cvičení jsou docela jednoduchá, jiná pro vás mohou být obtížná. Není neobvyklé, že vidíte i jasně neúspěšná řešení, protože identifikace a oprava chyb vám poskytne vynikající příležitosti k zdokonalení vašich dovedností.

Všechny příklady byly odladěny a testovány pod operačními systémy Windows XP, Windows 2000 a Windows Server 2003. – V případě potřeby bylo testování provedeno pod operačními systémy Windows 9x a Windows NT. A přestože jednoprocesorové systémy založené na procesory Intel, většina programů byla také testována na víceprocesorových systémech. Při testování aplikací pomocí architektura klient-server několik klientů interagujících se serverem bylo použito současně. Nikdy však nelze s plnou důvěrou konstatovat správnost či úplnost programů a jejich vhodnost pro ten či onen účel. Nepochybně i ty nejjednodušší příklady mohou být chybné a za určitých okolností vůbec nefungovat – takový je osud téměř každého softwaru. Proto bude autor upřímně vděčný každému, kdo zasílá zprávy o jakýchkoli závadách nalezených v programech, a ještě lépe - o chybách.

Webové stránky pro tuto knihu

Webová stránka knihy (http://www.awprofessional.com/titles/0321256190) obsahuje soubor ke stažení obsahující všechny programovací kód a plány pro všechny příklady v knize, řešení některých cvičení, alternativní implementace některých příkladů, pokyny a výsledky testů výkonu. Tyto informace jsou pravidelně aktualizovány podle potřeby, aby zahrnovaly nový materiál a provedly nezbytné opravy.

Na mé osobní webové stránce (http://www.world.std.com/~jmhart/windows.htm) najdete seznam chyb nalezených v knize, stejně jako další příklady, dopisy od čtenářů a další vysvětlení , mimo mnoho jiných věcí.. Součástí jsou také PowerPoint snímky, které lze použít pro nekomerční vzdělávací účely. Tyto diapozitivy již využili studenti v mnoha odborných kurzech, ale jsou vhodné i pro použití na vysokých školách.

Jakmile budou zjištěny nedostatky a chyby a obdržíme zpětnou vazbu od čtenářů, bude tento materiál pravidelně aktualizován. Pokud narazíte na jakékoli potíže s programy nebo jakýmkoli jiným materiálem obsaženým v této knize, navštivte prosím nejprve uvedené stránky, kde můžete najít potřebná vysvětlení nebo získat informace o dosud objevených chybách. Pokud bude takový pokus o získání odpovědi na vaši otázku neúspěšný, kontaktujte mě prosím přímo na následující adrese. E-mailem: [e-mail chráněný]

dík

Při přípravě třetího vydání mi mnoho lidí poskytlo účinnou pomoc, podělilo se o radu nebo jen podpořilo vlídným slovem a čtenáři navrhovali celá řada cenné nápady a připomínky. Autorův web vyjadřuje vřelou vděčnost všem, jejichž rady a komentáře se dostaly do třetího vydání knihy, zatímco první dvě vydání obsahují poděkování těm, kteří nám poskytli cenné rady dříve. Navíc úžasné podrobná analýza Obsah knihy v nedávných recenzích zhodnotili Vagif Abilov, Bill Draper, Horst D. Clausen, Michael Davidson, Daniel Jiang, Eric Landes Landes, Klaus H. Probst a Douglas Reilly, kteří tuto práci brali mnohem vážněji než vyžadovaly by pouze formální povinnosti; jejich rady a doporučení si zaslouží nejhlubší vděčnost a mohu jen doufat, že jsem s výsledky jejich práce zacházel s neméně pozorností. Zvláštní poděkování patří mým přátelům v ArrAy Inc.; Hodně jsem se od nich naučil.

Anne H. Smithová, která provedla sazbu, vložila do přípravy knihy k vydání všechnu svou zručnost, vytrvalost a trpělivost; Bez jejího přispění by tato kniha nevyšla. Elissa Armor, která připravila rozvržení pro první dvě edice, položila základy pro tuto edici, takže přechod byl co nejhladší.

Chrysta Meadowbrooke, editorka rukopisu, výrazně zlepšila přesnost, jasnost a soudržnost prezentace. Její pozorný přístup k obsahu knihy, ostré otázky a vhled pomohly vnést více do hloubky řady problémů.

Zaměstnanci společnosti Addison-Wesley Professional prokázali takovou profesionalitu a znalosti, že s nimi bylo potěšením pracovat. Stephanie Nakib, editorka, a Karen Gettman, šéfredaktorka, pracovaly na projektu od začátku, spěchaly mě, když bylo potřeba, odstranily všechny zádrhely a ujistily se, že jsem se ani trochu neodchýlil od pracovního plánu. Ebony Haight, zástupkyně redaktora, dohlížela na celý proces, zatímco produkční tým Johna Fullera a Patrick Cash-Peterson, koordinátor výroby, byli vedeni k přesvědčení, že produkční proces nelze bez problémů propojit.

Tato kniha je věnována našemu milovanému Bobovi a Elizabeth.

Johnson (John) M. Hart (Johnson (John) M. Hart) [e-mail chráněný] srpna 2004

Od vydavatele

Vy, čtenáři této knihy, jste jejím hlavním kritikem a komentátorem. Vážíme si vašeho názoru a chceme vědět, co jsme udělali správně, co by se dalo udělat lépe a co byste ještě rádi zveřejnili. Zajímají nás jakékoli další komentáře, které byste nám chtěli sdělit.

Čekáme na vaše komentáře a těšíme se na ně. Můžete nám poslat papír nebo e-mail, nebo jednoduše navštívit náš webový server a zanechat zde své komentáře. Jedním slovem, jakkoli se vám to hodí, dejte nám vědět, zda se vám tato kniha líbí nebo ne, a také vyjádřete svůj názor na to, jak pro vás naše knihy udělat zajímavější.

Při zasílání dopisu nebo zprávy nezapomeňte uvést název knihy a její autory a také váš zpáteční adresa. Váš názor si pečlivě přečteme a určitě jej zohledníme při výběru a přípravě na vydání dalších knih.

Naše souřadnice:

E-mailem: [e-mail chráněný]

WWW: http://www.williamspublishing.com

Informace pro dopisy z: Rusko: 115419, Moskva, PO Box 783 Ukrajina: 03150, Kyjev, PO Box 152


Johnson M. Hart Systems Programování v Prostředí Windows Třetí edice

Úvod

Tato kniha popisuje, jak vyvíjet aplikace pomocí aplikačního programovacího rozhraní (API) operačních systémů Windows společnosti Microsoft, se zaměřením na základní systémové služby, včetně správy souborového systému, správy procesů a vláken, meziprocesové komunikace, síťového programování a synchronizace. Tato kniha se nezabývá uživatelskými rozhraními, interními prvky Windows a I/O ovladači, ačkoli tato témata jsou sama o sobě stejně důležitá a zajímavá. Pro příklady byly zvoleny především realistické scénáře, a proto mnohé z nich mohou dobře posloužit jako základ pro budování reálných aplikací.

Win32/Win64 API, nebo obecně Windows API, jsou podporována rodinou 32bitových a 64bitových operačních systémů společnosti Microsoft, která v současnosti zahrnuje Windows XP, Windows 2000 a Windows Server 2003. První členové této rodiny zahrnují operační systémy Windows NT , Windows Me, Windows 98 a Windows 95; tyto systémy jsou nyní považovány za zastaralé, ale mnoho ukázkových programů v této knize pod nimi může běžet. Podle potřeby jsou diskutovány problémy s migrací z platformy Win32 na vyvíjející se platformu Win64. Win64, podporovaný jako 64bitové rozhraní v některých verzích Windows Server 2003 a Windows XP, je téměř totožný s Win32.

Není pochyb o tom, že Windows API je nejdůležitějším faktorem, který ovlivňuje celý proces vývoje aplikace a v mnoha případech nahrazuje POSIX API podporované operačními systémy UNIX a Linux, protože je považováno za vhodnější nebo alespoň poskytuje stejné možnosti. pro aplikace, zaměřené na desktopové a serverové systémy. Proto má mnoho zkušených programátorů zájem naučit se Windows API co nejdříve a tato kniha je navržena tak, aby to podpořila.

Nejprve je nutné říci, co je to Windows API a ukázat vám, jak jej používat v reálných situacích, a tento příběh by měl být co nejkratší a nepřetížený zbytečnými detaily. Proto tato kniha nemá sloužit jako referenční příručka, ale má vám představit základní vlastnosti nejdůležitějších funkcí a ukázat, jak je lze použít v praktických programovacích situacích. Čtenář, vyzbrojený těmito znalostmi, bude moci využít rozsáhlou dokumentaci nápovědy poskytovanou společností Microsoft k samostatnému hloubkovému zkoumání konkrétních témat, pokročilých funkcí a méně známých funkcí podle svých potřeb nebo zájmů. Osobně s tímto přístupem pro mě bylo učení Windows API snadné a vývoj programů pro Windows byla velká radost, i když se našly i nepříjemné momenty. Mé impulsy nadšení jsou na některých místech knihy snadno viditelné, což vlastně není překvapivé. To ovšem vůbec nesvědčí o tom, že bych bezvýhradně souhlasil s nadřazeností Windows API nad API jiných operačních systémů (OS), ale jen málokdo bude namítat, že má spoustu kladných vlastností.

Autoři mnoha knih o Windows tráví spoustu času vysvětlováním, co jsou procesy, virtuální paměť, meziprocesová komunikace, preemptivní plánovač, ale neukazují, jak se to všechno používá v reálných situacích. Programátoři se zkušenostmi s UNIXem, Linuxem, IBM MVS, Open VMS a některými dalšími operačními systémy již tyto pojmy znají a zajímá je pouze to, aby se co nejrychleji naučili, jak jsou tyto funkce implementovány ve Windows. Většina knih o Windows se navíc silně zaměřuje na techniky programování uživatelského rozhraní. Abychom se soustředili pouze na nejdůležitější základní funkce poskytované systémem, tato kniha se nedotýká uživatelského rozhraní a omezujeme naši diskuzi na jednoduché I/O znakové konzole.

Windows je podle pohledu této knihy pouze API operačního systému, které poskytuje sadu dobře srozumitelných nástrojů. Potřebu zrychleného učení se Windows pociťuje mnoho programátorů bez ohledu na úroveň jejich zkušeností a bez znalosti Windows je nemyslitelné diskutovat o tématech, jako je Component Object Model (COM) vyvinutý společností Microsoft. V některých ohledech systémy Windows předčí jiné systémy, v jiných zaostávají nebo jsou přibližně na stejné úrovni. Účelem této knihy je ukázat, jak nejlépe využít tyto schopnosti v reálných situacích k vývoji užitečných, vysoce kvalitních a vysoce výkonných aplikací.

Johnson M. Hart

Systémové programování v prostředí Windows

Třetí edice

Úvod

Tato kniha popisuje, jak vyvíjet aplikace pomocí aplikačního programovacího rozhraní (API) operačních systémů Windows společnosti Microsoft, se zaměřením na základní systémové služby, včetně správy souborového systému, správy procesů a vláken, meziprocesové komunikace, síťového programování a synchronizace. Tato kniha se nezabývá uživatelskými rozhraními, interními prvky Windows a I/O ovladači, ačkoli tato témata jsou sama o sobě stejně důležitá a zajímavá. Pro příklady byly zvoleny především realistické scénáře, a proto mnohé z nich mohou dobře posloužit jako základ pro budování reálných aplikací.

Win32/Win64 API, nebo obecně Windows API, jsou podporována rodinou 32bitových a 64bitových operačních systémů společnosti Microsoft, která v současnosti zahrnuje Windows XP, Windows 2000 a Windows Server 2003. První členové této rodiny zahrnují operační systémy Windows NT , Windows Me, Windows 98 a Windows 95; tyto systémy jsou nyní považovány za zastaralé, ale mnoho ukázkových programů v této knize pod nimi může běžet. Podle potřeby jsou diskutovány problémy s migrací z platformy Win32 na vyvíjející se platformu Win64. Win64, podporovaný jako 64bitové rozhraní v některých verzích Windows Server 2003 a Windows XP, je téměř totožný s Win32.

Není pochyb o tom, že Windows API je nejdůležitějším faktorem, který ovlivňuje celý proces vývoje aplikace a v mnoha případech nahrazuje POSIX API podporované operačními systémy UNIX a Linux, protože je považováno za vhodnější nebo alespoň poskytuje stejné možnosti. pro aplikace, zaměřené na desktopové a serverové systémy. Proto má mnoho zkušených programátorů zájem naučit se Windows API co nejdříve a tato kniha je navržena tak, aby to podpořila.

Nejprve je nutné říci, co je to Windows API a ukázat vám, jak jej používat v reálných situacích, a tento příběh by měl být co nejkratší a nepřetížený zbytečnými detaily. Proto tato kniha nemá sloužit jako referenční příručka, ale má vám představit základní vlastnosti nejdůležitějších funkcí a ukázat, jak je lze použít v praktických programovacích situacích. Čtenář, vyzbrojený těmito znalostmi, bude moci využít rozsáhlou dokumentaci nápovědy poskytovanou společností Microsoft k samostatnému hloubkovému zkoumání konkrétních témat, pokročilých funkcí a méně známých funkcí podle svých potřeb nebo zájmů. Osobně s tímto přístupem pro mě bylo učení Windows API snadné a vývoj programů pro Windows byla velká radost, i když se našly i nepříjemné momenty. Mé impulsy nadšení jsou na některých místech knihy snadno viditelné, což vlastně není překvapivé. To ovšem vůbec nesvědčí o tom, že bych bezvýhradně souhlasil s nadřazeností Windows API nad API jiných operačních systémů (OS), ale jen málokdo bude namítat, že má spoustu kladných vlastností.

Autoři mnoha knih o Windows tráví spoustu času vysvětlováním, co jsou procesy, virtuální paměť, meziprocesová komunikace, preemptivní plánovač, ale neukazují, jak se to všechno používá v reálných situacích. Programátoři se zkušenostmi s UNIXem, Linuxem, IBM MVS, Open VMS a některými dalšími operačními systémy již tyto pojmy znají a zajímá je pouze to, aby se co nejrychleji naučili, jak jsou tyto funkce implementovány ve Windows. Většina knih o Windows se navíc silně zaměřuje na techniky programování uživatelského rozhraní. Abychom se soustředili pouze na nejdůležitější základní funkce poskytované systémem, tato kniha se nedotýká uživatelského rozhraní a omezujeme naši diskuzi na jednoduché I/O znakové konzole.

Windows je podle pohledu této knihy pouze API operačního systému, které poskytuje sadu dobře srozumitelných nástrojů. Potřebu zrychleného učení se Windows pociťuje mnoho programátorů bez ohledu na úroveň jejich zkušeností a bez znalosti Windows je nemyslitelné diskutovat o tématech, jako je Component Object Model (COM) vyvinutý společností Microsoft. V některých ohledech systémy Windows předčí jiné systémy, v jiných zaostávají nebo jsou přibližně na stejné úrovni. Účelem této knihy je ukázat, jak nejlépe využít tyto schopnosti v reálných situacích k vývoji užitečných, vysoce kvalitních a vysoce výkonných aplikací.

Potenciální publikum

Každý, kdo se chce rychle naučit vyvíjet aplikace, bez ohledu na úroveň zkušeností.

Programátoři a vývojáři softwaru, kteří stojí před úkolem přenést existující aplikace napsané speciálně pro UNIX na kteroukoli z platforem Windows. Kniha demonstruje komparativní schopnosti funkcí a programovacích modelů spojených s používáním Windows, UNIX a standardní knihovny C. Každá z běžných funkcí UNIXu, včetně správy procesů, synchronizace, souborových systémů a meziprocesní komunikace, je diskutována v termínech Windows .

Čtenáři začínající vyvíjet nové projekty, které nejsou omezeny ve svých akcích potřebou portovat stávající programové kódy na jiné platformy. Tato kniha pokrývá mnoho aspektů návrhu a implementace programů a ukazuje, jak používat funkce Windows k vytváření užitečných aplikací a řešení běžných problémů s programováním.

Programátoři COM a .NET Framework zde naleznou spoustu užitečných informací, které jim pomohou naučit se, jak fungují dynamické knihovny (DLL), modely vláken a jak je používat, rozhraní a synchronizaci.

Studenti, kteří studují informatiku nebo pracují na bakalářských pracích týkajících se systémového programování nebo vývoje aplikací. Kniha bude užitečná i pro ty, kteří studují vícevláknové programování nebo se potýkají s potřebou vytvářet síťové aplikace. Může být také použit jako užitečný doplněk zdrojů, jako je W. Richard Stevens Pokročilé programování v prostředí UNIX(viz bibliografie), která studentům umožní porovnat vlastnosti Windows a UNIX. Tato kniha bude také velkou pomocí pro studenty, kteří se účastní kurzu OS, protože přesně ukazuje, jak jsou poskytovány základní funkce OS, které jsou komerčně zajímavé.

Jediným předpokladem, který je obsažen ve všem výše uvedeném, je předpoklad, že čtenáři mají zkušenosti s programováním v jazyce C.

Změny ve třetím vydání

Spolu s významnou aktualizací a reorganizací z prvních dvou vydání přidává třetí vydání značné množství nového materiálu. Tato publikace si klade za cíl vyřešit následující úkoly:

Pokryjte nové funkce představené ve Windows XP, Windows 2000 a Windows Server 2003 a zvažte přechod na platformu Win64.

Odstraňte materiály specifické pro Windows 95, Windows 98 a Windows ME (řada "Windows 9x") jako zastaralé, protože aktuálně dodávané osobní systémy používají Windows XP a omezení Windows 9x již nejsou relevantní. Vzorové programy používají bez výhrad nástroje, které jsou zahrnuty pouze v aktuálním Verze Windows, ačkoli některé programy v důsledku toho nebudou na Windows 9x fungovat.

Poskytněte komplexnější pokrytí tématu vláken a synchronizace, včetně aspektů souvisejících s výkonem, škálovatelností a spolehlivostí. Kapitola 9, stejně jako některé příklady v kapitole 10, jsou nové.

Zdůrazněte rostoucí vliv systémů Windows 2000 a Windows Server 2003 a nových nástrojů, které obsahují, na vysoce výkonné, škálovatelné a vícevláknové serverové aplikace.

Prozkoumejte závislost výkonnosti programů na principech jejich konstrukce, přičemž zvláštní pozornost věnujte vícevláknovým programům se synchronizací a vlastnostem provozu těchto programů v podmínkách symetrických multiprocesorových (Symmetrical Multiprocessor, SMP) systémů.