Ez a könyv a Microsoft operációs rendszerek (Windows 9x, Windows XP, Windows 2000, ill. Windows Server 2003). A hangsúly az alapvető rendszerszolgáltatásokon van, beleértve a fájlrendszer-kezelést, a folyamat- és szálkezelést, a folyamatok közötti kommunikációt, a hálózati programozást és a szinkronizálást. Figyelembe veszi a Win32 környezetben írt alkalmazások Win64 környezetbe történő portolási technikáját. A rendszer minden aspektusát részletesen ismertetjük Windows biztonságés ő praktikus alkalmazás. bőség valós példák, a könyv weboldalán is elérhető, nagyban leegyszerűsíti az anyag asszimilációját.

A könyv fejlesztőknek és programozóknak szól, mind magasan képzett, mind kezdőknek, és hasznos lesz a releváns szakterületek hallgatóinak is.

Bevezetés

Ez a könyv leírja, hogyan lehet alkalmazásokat fejleszteni a Microsoft Windows operációs rendszerek Application Programming Interface (API) használatával, az alapvető rendszerszolgáltatásokra összpontosítva, beleértve a fájlrendszer-kezelést, a folyamat- és szálkezelést, a folyamatok közötti kommunikációt, a hálózati programozást és a szinkronizálást. A felhasználói felületekkel, a Windows belső elemeivel és az I/O illesztőprogramokkal ez a könyv nem foglalkozik, bár ezek a témák önmagukban egyaránt fontosak és érdekesek. Példákként elsősorban reális forgatókönyveket választottak, ezért sok közülük valós alkalmazások építésének alapjául szolgálhat.

A Win32/Win64 API-kat vagy általánosságban Windows API-kat a Microsoft 32 bites és 64 bites operációs rendszereiből álló család támogatja, amely jelenleg a Windows XP, Windows 2000 és Windows Server 2003 rendszereket tartalmazza. Windows rendszerek NT, Windows Me, Windows 98 és Windows 95; ezek a rendszerek mára elavultnak számítanak, de a könyvben szereplő példaprogramok közül sok futhat alattuk. A Win32 platformról a fejlődő Win64 platformra történő migrációs problémákat szükség szerint megvitatják. A Windows Server 2003 és a Windows XP egyes verzióiban 64 bites interfészként támogatott Win64 szinte teljesen megegyezik a Win32-vel.

Kétségtelen, hogy a Windows API a legfontosabb tényező, amely a teljes alkalmazásfejlesztési folyamatot befolyásolja, és sok esetben helyettesíti a UNIX és Linux operációs rendszerek által támogatott POSIX API-t, mivel előnyösebbnek tartják, vagy legalábbis ugyanazokat a képességeket biztosítja. alkalmazásokhoz. , asztali és szerverrendszerekre összpontosítva. Ezért sok tapasztalt programozó érdeklődik a Windows API mielőbbi elsajátítása iránt, és ez a könyv ennek elősegítésére készült.

Először is el kell mondanom, mi az a Windows API, és meg kell mutatnom, hogyan kell használni valós helyzeteket, és ez a történet legyen a lehető legrövidebb, és ne legyen túlterhelve felesleges részletekkel. Ezért ez a könyv nem arra szolgál, hogy a útmutató, hanem a legfontosabb funkciók főbb tulajdonságainak megismerése és helyzetekben való alkalmazási lehetőségeinek bemutatása gyakorlati programozás. Ezzel a tudással felvértezve az olvasó képes lesz kihasználni a Microsoft által biztosított kiterjedt súgódokumentáció előnyeit, hogy saját maga által vezetett, mélyrehatóan feltárhassa a konkrét témákat, speciális funkciókat és kevésbé ismert funkciókat igényeinek vagy érdeklődési körének megfelelően. Személy szerint ezzel a megközelítéssel számomra könnyű volt a Windows API elsajátítása, a Windows-os programok fejlesztése pedig nagy öröm volt, bár voltak kellemetlen pillanatok is. Lelkesedésem a könyv egyes helyein jól látható, ami valójában nem meglepő. Ez azonban egyáltalán nem jelenti azt, hogy feltétel nélkül egyetértek a Windows API felsőbbrendűségével a többi operációs rendszer (OS) API-jával szemben, de aligha fogja bárki kifogásolni, hogy sok pozitív tulajdonsággal rendelkezik.

Számos Windowsról szóló könyv szerzői nagy figyelmet szentelnek annak elmagyarázására, hogy mi a folyamatok, virtuális memória, folyamatok közötti kommunikáció, amely megelőzi az ütemezőt, de nem mutatja meg, hogyan használják mindezt a valós helyzetekben. A UNIX, Linux, IBM MVS, Open VMS és néhány más operációs rendszerben tapasztalattal rendelkező programozók már ismerik ezeket a fogalmakat, és csak az érdekli őket, hogy a lehető leggyorsabban megtanulják, hogyan valósítják meg ezeket a funkciókat a Windows rendszerben. Ezen kívül a legtöbb Windows-ról szóló könyv fontos helyet ad az azon alapuló programozási módszereknek felhasználói felület. Annak érdekében, hogy csak a legfontosabbra koncentrálhasson alapvető képességeit a rendszer által biztosított felhasználói felülettel ez a könyv nem foglalkozik, és csak az egyszerű konzolkarakteres I/O-t tárgyaljuk.

A könyv nézőpontja szerint a Windows csak egy API. operációs rendszer, amely egy sor jól érthető eszköztárat biztosít. Sok programozó tapasztalati szintjétől függetlenül szükségét érzi a Windows gyorsított tanulásának, és a Windows ismerete nélkül elképzelhetetlen olyan témák megvitatása, mint a Microsoft által kifejlesztett Component Object Model (COM). A Windows rendszerek bizonyos tekintetben felülmúlják a többi rendszert, másokban lemaradnak, vagy körülbelül azonos szinten állnak. Ennek a könyvnek az a célja, hogy bemutassa, hogyan lehet a legjobban használni ezeket a képességeket valós helyzetekben hasznos, kiváló minőségű, nagy teljesítményű alkalmazások fejlesztésére.

Potenciális közönség

Bárki, aki gyorsan szeretné megtanulni az alkalmazások fejlesztését, tapasztalati szinttől függetlenül.

Programozók és fejlesztők szoftver, akiknek azzal a feladattal kell szembenézniük, hogy meglévő, különösen UNIX-ra írt alkalmazásokat a Windows platformok. A könyv bemutatja a kapcsolódó funkciók és programozási modellek összehasonlító képességeit Windows használatával, UNIX és C szabványos könyvtár. Mindegyik közös funkcionalitás UNIX, beleértve a folyamatkezelést, a szinkronizálást, fájlrendszerekés a folyamatok közötti kommunikációt a Windows szempontjából tekintik.

Az olvasók olyan új projekteket kezdenek kifejleszteni, amelyek tevékenységét nem korlátozza a meglévő programkódok más platformokra történő áthelyezése. A könyv a programtervezés és -végrehajtás számos aspektusát lefedi, és bemutatja, hogyan használhatja a Windows szolgáltatásait a létrehozáshoz hasznos alkalmazásokés gyakori programozási problémák megoldása.

COM és .NET Framework programozók, akik sok hasznos információ, amely megkönnyíti a dinamikus hivatkozási könyvtárak (dynamic link libraries, DLL) elveinek, a szálmodellek és használatuk, az interfészek és a szinkronizálás elveinek tanulmányozását.

Azok a hallgatók, akik informatikus alapképzésben vesznek részt, vagy rendszerprogramozással vagy alkalmazásfejlesztéssel kapcsolatos egyetemi diplomamunkákon dolgoznak. A könyv azoknak is hasznos lesz, akik többszálú programozást tanulnak, vagy hálózati alkalmazások létrehozásának szükségességével szembesülnek. Úgy is használható, mint hasznos kiegészítés olyan forrásokhoz, mint például W. Richard Stevens (W. Richard Stevens) könyve Speciális programozás UNIX környezetben(lásd az irodalomjegyzéket), hogy a tanulók összehasonlíthassák ablakok jellemzőiés UNIX. Ez a könyv az operációs rendszer tanfolyamot tanuló hallgatóknak is nagy segítségére lesz, mivel pontosan bemutatja, hogyan biztosítják a kereskedelmi érdeklődésre számot tartó operációs rendszer alapvető funkcióit.

Az egyetlen feltételezés, amely a fentiekben benne van, az az a feltevés, hogy az olvasók tapasztalattal rendelkeznek a C nyelv programozásában.

Változások a harmadik kiadásban

Az első két kiadás jelentős frissítése és átszervezése mellett a harmadik kiadás jelentős mennyiségű új anyagot ad hozzá. Ez a kiadvány a következő feladatokat kívánja megoldani:

Ismertesse meg a Windows XP, Windows 2000 és Windows Server 2003 új szolgáltatásait, és fontolja meg a Win64 platformra való átállást.

A Windows 95, Windows 98 és Windows ME („Windows 9x” család) specifikus anyagok elavulttá tétele, mivel elavult személyes rendszerek A Windows XP telepítve van, és a Windows 9x-ben rejlő korlátok már elvesztették relevanciájukat. A mintaprogramokban minden fenntartás nélkül olyan eszközöket használnak, amelyek csak benne vannak aktuális verziók Windows, bár egyes programok emiatt nem fognak működni Windows 9x alatt.

Átfogóbb lefedettséget biztosít a szálfűzés és szinkronizálás témájáról, beleértve a teljesítménnyel, a skálázhatósággal és a megbízhatósággal kapcsolatos szempontokat. A 9. fejezet, valamint a 10. fejezet néhány példája új.

Emelje ki a Windows 2000 és a Windows Server 2003, valamint az általuk kínált új eszközök növekvő hatását a nagy teljesítményű, méretezhető, többszálas szerveralkalmazás-képességekre.

Vizsgálja meg a programok teljesítményének függőségét a felépítési elvektől, különös tekintettel a többszálas, szinkronizált programokra, valamint ezeknek a programoknak a működésének jellemzőire szimmetrikus többprocesszoros (Symmetrical Multiprocessor, SMP) rendszerek körülményei között.

Vegye figyelembe az olvasók és hallgatók észrevételeit a hiányosságok kijavításával és az előadásmód javításával kapcsolatban, valamint minden fontos és legjelentéktelenebb tanácsukat, javaslatukat.

Hogyan épül fel ez a könyv

A fejezetek tematikai fókuszuk szerint vannak elrendezve, ezért először a kizárólag egyszálú alkalmazások futtatásához szükséges eszközöket, majd a folyamatok, szálak kezeléséhez használt eszközöket, majd csak ezt követően a többszálú környezetben történő hálózati programozást tárgyaljuk. A könyvnek ez a felépítése megkönnyíti az olvasó számára a prezentáció logikájának követését, a fájlrendszerekről egymás után a memóriakezelésre és fájlleképezésre, majd a folyamatokra, szálakra és szinkronizálásra, majd a folyamatok közötti és hálózati kommunikációra és alkalmazásra. biztonsági kérdések. Ez a szervezet lehetővé teszi a példák természetes építését is, ahogy bonyolultabbá válnak, hasonlóan a fejlesztőhöz, amikor először létrehoz egy egyszerű prototípust, majd fokozatosan bevezeti. további jellemzők. A speciális problémák, például az aszinkron I/O és biztonsági problémák megvitatása a könyv legvégére került.

Az egyes fejezeteken belül az egyes funkcionalitások, például a folyamatvezérlés vagy a fájlmegjelenítés rövid tárgyalása után részletesen kitérünk a releváns Windows-szolgáltatások legfontosabb elemeire és ezek egymáshoz való viszonyára. Az előadást szemléltető példák kísérik. A programlistának csak a legjelentősebb részei szerepelnek a főszövegben; a programok teljes szövege, valamint a szükséges fájlok, segédfunkciók és egyéb kódok az A függelékben találhatók, vagy elérhetők a könyv webhelyén (http://www.awprofessional.com/titles/0321256190) . Ha a szolgáltatásokat csak a Windows jelenlegi verziói (XP, 2000 és Server 2003) támogatják, és a korábbi verziók, például a Windows 9x és a Windows NT, amelyek nem tartalmaznak sok továbbfejlesztett szolgáltatást, nem, külön nyilatkozatok vonatkoznak rájuk. Minden fejezet további ajánlott olvasmányok listáját tartalmazza, és számos gyakorlatot kínál. Sok gyakorlat azokra a kérdésekre összpontosít, amelyek fontosak és érdekesek, de a főszöveg nem foglalkozik velük, míg más gyakorlatok arra kényszerítik az olvasót, hogy mélyebben elmélyedjen összetettebb vagy speciálisabb témákban.

Az 1. fejezet magas szintű bevezetést nyújt a Windows operációs rendszerek családjába és a Windows API-kba. Példaként használva egyszerű program bemutatja a stílus főbb elemeit Windows programozásés alapot ad a fejlett Windows-szolgáltatások megvalósításához. A Win64 és a többplatformos szoftveráttelepítési problémákat először az 1. fejezet tárgyalja, részletesebben a 16. fejezetben tárgyalja, és szükség szerint a könyv további részében.

A 2. és 3. fejezet a fájlrendszereket, a konzol I/O-t, a fájlzárolást és a címtárkezelést tárgyalja. A 2. fejezet a Unicode-ról, a Windows által használt kiterjesztett karakterkészletről is szól. A vonatkozó szemléltető példák a fájlban található adatokhoz való szekvenciális és közvetlen hozzáférést, a könyvtárfa bejárását és a fájlarchiválást foglalják magukban. A 3. fejezet beszélgetéssel zárul programvezérlés rendszerleíró adatbázist, amelynek sok köze van a fájlok és könyvtárak kezeléséhez.

A 4. fejezet bevezeti az olvasót a Windows kivételkezelésébe, beleértve a strukturált kivételkezelést (SEH), amelyet széles körben használunk a könyvben. Sok könyvben a SEH tanulmányozása az utolsó fejezetekre tolódik, de miután már a kezdeti szakaszban megismertük ezt az eszközt, azonnal használhatjuk, ami nagyban leegyszerűsíti számunkra néhány programozási feladatot és javítja a programozási feladatokat. programjaink minőségét. Ezenkívül itt ismertetjük az egyik legújabb szolgáltatást, a vektorkivételek kezelését.

Az 5. fejezet a Windows memóriakezelésével foglalkozik, és bemutatja, hogyan használják a fájlleképezést nemcsak a programozás egyszerűsítésére, hanem a program teljesítményének javítására is. Ez a fejezet a DLL-ek szervezését is tárgyalja.

A 6. fejezet bemutatja a folyamatokat, a folyamatkezelést és egyszerű módszerek szinkronizálás Windows rendszeren. Később a 7. fejezetben ezeket a fogalmakat használjuk az áramlásszabályozás leírására. Az egyes fejezetekben található példák bemutatják a szálak és folyamatok használatából származó számos előnyt, beleértve a program egyszerűsítését és a teljesítménynövekedést.

A 8., 9. és 10. fejezet mélyreható elemzést kínál az egyik legerősebbről Windows Eszközök- szál szinkronizálás. A szinkronizálás összetett téma, ezért ezek a fejezetek számos példát és leírást tartalmaznak jól érthető modellekről, amelyek segítik az olvasót, hogy teljes mértékben kihasználhassa a szálak előnyeit a programozás hatékonyságának és teljesítményének javítása érdekében, miközben számos buktatót elkerül. Ezek a fejezetek tartalmazzák új anyag, amely a teljesítmény és a skálázhatóság kérdéseivel foglalkozik, amelyek különösen fontosak a szerveralkalmazások létrehozásakor, beleértve azokat is, amelyeknek SMP rendszereken kell futniuk.

A 11. és 12. fejezet a folyamatok és a szálak közötti kommunikációval, valamint a hálózati programozással foglalkozik. A 11. fejezet a Windows részét képező szolgáltatásokra összpontosít, nevezetesen az anonim csövekre, az elnevezett csövekre és postafiókok. A 12. fejezet a Windows Socketeket (Windows Sockets) tárgyalja, amelyek lehetővé teszik a Windowson kívüli rendszerekkel való kommunikációt. Windows család szabványos protokollokon, főleg TCP/IP-n keresztül. És bár Windows interfész A socket szigorúan véve nem része a Windows API-nak, képes a hálózatokon és az interneten keresztüli kommunikációra és interakcióra, így ennek a fejezetnek a témája összhangban van a könyv többi részével. Egy többszálú kliens-szerver rendszer példáján szemléltetjük, hogyan lehet folyamatközi kommunikációt biztosítani a szálakkal együtt.

A 13. fejezet bemutatja, hogyan módon Windows lehetővé teszi a 11. és 12. fejezetben létrehozott szerveralkalmazások átalakítását Windows szolgáltatások(Windows Services), amelyek háttérkiszolgálóként kezelhetők. A szerver szolgáltatássá alakítása csak kisebb változtatásokat igényel a programban.

A 14. fejezet bemutatja, hogyan hajthat végre aszinkron I/O műveleteket átfedő I/O használatával, valamint eseményeket és befejezési rutinokat. Ugyanezeket az eredményeket lehet elérni a streamekkel is, ezért példákat adunk összehasonlításra különféle megoldások az egyes programok egyszerűsége és teljesítménye szempontjából. Ugyanakkor a méretezhető többszálú szerverek építése megköveteli a komplett portok használatát, melyek használatát az előző fejezetekben készített szerverek példája szemlélteti. Leírjuk a várakozási időzítőket is, amelyek tárgyalása a fejezetben korábban bemutatott fogalmak használatát igényli.

A 15. fejezet a Windows objektumbiztonságára összpontosít, példaként egy UNIX típusú fájlvédelmi rendszer emulációját használva, amely megfelelő engedélyeket igényel bizonyos műveletek végrehajtásához egy fájlon. További példák mutatják be a folyamatok, szálak és elnevezett csövek védelmét. Ezután biztonsági kiegészítéseket lehet hozzáadni a korábban tárgyalt példákhoz.

A 16. fejezet a fő anyagot a Win64 programozásáról, valamint a szoftverek ezzel a platformmal való kompatibilitásának biztosításával zárja. Ezt követően a korábban tárgyalt példák egyikét olyan formává alakítjuk, amely lehetővé teszi a program Win64 platformra történő portolását.

A könyv fő anyagát három melléklet egészíti ki. Az A függelék a könyv webhelyén elérhető programok leírását és a használatukra vonatkozó ajánlásokat tartalmazza. A B függelék több táblázatot tartalmaz, amelyek összehasonlítják a Windows funkciókat a UNIX és a C szabványkönyvtár által biztosított egyenértékű funkciókkal. A C függelék összehasonlítja a főszövegben szereplő néhány példa alternatív megvalósításainak teljesítményét, lehetővé téve az olvasó számára, hogy saját elképzelést alkothasson az alap és haladó Windows-eszközök, valamint a C könyvtár által biztosított eszközök viszonylagos előnyei és hiányosságai.

Összehasonlítás a UNIX-szal és a C könyvtárral

Az anyag bemutatása során összehasonlítjuk a stílus ill funkcionális jellemzői A UNIX-ban (Linux) és az ANSI C szabványkönyvtárban található Windows-eszközök és hasonló eszközök Mint már említettük, a B. függelék táblázatai a hasonló funkciók teljes listáját tartalmazzák. Hasznosnak tartottuk ezt az információt, mivel sok olvasó ismeri a UNIX-ot, és a két rendszer egymással való összehasonlításának eredménye kétségtelenül érdekes lesz számukra. Azok, akik nem ismerik a UNIX rendszert, nyugodtan kihagyhatják a megfelelő részeket, amelyek apró betűkkel és behúzással vannak ellátva, hogy könnyebben megkülönböztethetők legyenek.

A példáknak példákat kell mutatniuk a Windows-szolgáltatások általános, leggyakoribb és gyakorlati használatára.

Meg kell felelniük a programozás területéről származó valós helyzeteknek, amelyekkel a szoftverfejlesztés, tanácsadás és képzés során szembe kell nézni. Egyes ügyfeleim és hallgatóim a példakódokat használták saját rendszereik építésekor. Konzultációim során gyakran találkozom a könyvben szereplőkhöz hasonló programkódokkal, sőt többször megkerestek már közvetlenül az első vagy második kiadásból vett kódokkal is. (Egyébként a könyvben szereplő példákat a munkád során is felhasználhatod, és ha a dokumentációba is beleírod a köszönetet, akkor csak örülni fogok.) Gyakran találkoztam ezekkel a kódokkal a COM vagy a C különálló részeként ++ objektumok. A példák, figyelembe véve az elkészítésük idejére és a megengedett kódmennyiségre vonatkozó korlátozásokat, közel állnak a „valós élethez”, és „valódi” problémákat oldanak meg.

A példáknak rá kell mutatniuk a függvények tényleges viselkedésére és interakciójára, amely nem mindig az, ami a dokumentáció elolvasása után várható. Ebben a könyvben mind a szöveg, mind a példák nem magukra a funkciókra összpontosítanak, hanem arra, hogyan hatnak egymásra.

A mintakódot fokozatosan kell felépíteni és ki kell terjeszteni, hogy egyszerű és érthető módon új funkcionalitást adjon egy korábbi megoldáshoz, és mutasson be alternatív megvalósítási technikákat.

Az első néhány fejezetben szereplő példák közül sok UNIX-parancsokat valósít meg, mint például az ls, touch, chmod és sort, így a Windows-funkciókat ismerős kontextusban mutatja be néhány olvasó számára, miközben hasznos segédfunkciókat biztosít. Ezen túlmenően, ha ugyanazt a parancsot különböző módon implementálják, könnyebben értékelhető a Windows-bővítések használatának teljesítménybeli előnyei. A vonatkozó vizsgálati eredményeket a B. melléklet tartalmazza.

A könyv elején közölt példák általában a programok rövid hosszában térnek el egymástól, de ahogy az anyag bonyolultabbá válik a következő fejezetekben, a szemléltető programkód mérete, ha szükséges, jelentősen megnő.

Az egyes fejezetek végén bemutatott gyakorlatokban arra kérik az olvasót, hogy fejlesszék alternatívák megoldásokat, fedezze fel önállóan az ajánlott témákat, vagy fedezzen fel további funkciókat, amelyek bár érdekesek, de nem tárgyalhatók részletesen ebben a könyvben. Néhány gyakorlat meglehetősen egyszerű, míg mások nehezek lehetnek az Ön számára. Gyakran előfordul, hogy egyértelműen sikertelen megoldások elé is állítanak, mert a hibák feltárása és kiküszöbölése kiváló lehetőségeket kínál a képességek fejlesztésére.

Valamennyi példa hibakeresésre és tesztelésre került Windows XP, Windows 2000 és Windows Server 2003 operációs rendszerek alatt – Ahol szükséges volt, a tesztelést Windows 9x és Windows NT operációs rendszerek alatt végeztük. És bár egyprocesszoros rendszerek alapján Intel processzorok, a legtöbb programot többprocesszoros rendszereken is tesztelték. Az alkalmazások tesztelésekor a kliens-szerver architektúra több, a szerverrel interakcióba lépő klienst egyszerre használtak. A programokról azonban soha nem mondható el, hogy helyesek vagy teljesek és bármilyen célra alkalmasak. Kétségtelen, hogy a legegyszerűbb példák is hibásak lehetnek, és bizonyos körülmények között egyáltalán nem működnek – szinte minden szoftvernek ez a sorsa. Ezért a szerző őszintén hálás lesz mindenkinek, aki jelentést küld a programokban talált hibákról, és még jobb - a hibákról.

Weboldalak ehhez a könyvhöz

A könyv webhelye (http://www.awprofessional.com/titles/0321256190) tartalmaz egy letöltést, amely az összes programozási kódés tervrajzok a könyvben található összes példához, néhány gyakorlat megoldása, néhány példa alternatív megvalósítása, útmutatások és teljesítménytesztek eredményei. Ezt az információt rendszeresen frissítik, ha szükséges, hogy új anyagokat tartalmazzanak és a szükséges javításokat elvégezzék.

Személyes webhelyemen (http://www.world.std.com/~jmhart/windows.htm) megtalálja a könyvben található hibák listáját, valamint további példákat, olvasói leveleket és további magyarázatokat. , sok más mellett.. Tartalmaz továbbá nem kereskedelmi oktatási célokra használható PowerPoint diákat is. Ezeket a csúszdákat már számos szakmai kurzuson használták a hallgatók, de alkalmasak főiskolai használatra is.

Amint hiányosságokat és hibákat azonosítanak, és visszajelzéseket kapnak az olvasóktól, ezt az anyagot rendszeresen frissítjük. Ha a könyvben található programokkal vagy egyéb anyagokkal kapcsolatban bármilyen nehézségbe ütközik, kérjük, először keresse fel a megjelölt oldalakat, ahol esetleg megtalálhatja a szükséges magyarázatokat, illetve tájékozódhat az eddig feltárt hibákról. Ha egy ilyen kísérlet, hogy választ kapjon kérdésére, sikertelen, kérjük, vegye fel velem a kapcsolatot közvetlenül a következő címen. Email: [e-mail védett]

Kösz

A harmadik kiadás készítése során sokan nyújtottak nekem hathatós segítséget, tanácsot adtak vagy egyszerűen csak egy jó szóval támogattak, az olvasók pedig javasolták egész sorértékes ötletek és megjegyzések. A szerző honlapja meleg köszönetét fejezi ki mindazoknak, akiknek tanácsai és megjegyzései eljutottak a könyv harmadik kiadásába, míg az első két kiadásban köszönet azoknak, akik korábban értékes tanácsokat adtak nekünk. Ezen kívül csodálatos részletes elemzés A könyv tartalmát Vagif Abilov, Bill Draper, Horst D. Clausen, Michael Davidson, Daniel Jiang, Eric Landes Landes, Klaus H. Probst és Douglas Reilly ismertette a legutóbbi kritikákban, akik sokkal komolyabban vették a munkát, mint a formális feladatok önmagukban megkövetelték volna; tanácsaik, javaslataik a legmélyebb köszönetet érdemelnek, és csak remélni tudom, hogy munkájuk eredményét nem kevesebb figyelemmel kezeltem. Külön köszönet az ArrAy Inc.-nél dolgozó barátaimnak; Sokat tanultam tőlük.

Anne H. Smith, aki a szedést végezte, minden ügyességét, kitartását és türelmét belefektette a könyv megjelenésre való előkészítésébe; Az ő közreműködése nélkül ez a könyv nem jelent volna meg. Elissa Armor, aki az első két kiadás elrendezését készítette, lefektette a jelenlegi kiadás alapjait, így a lehető legzökkenőmentesebbé tette az átmenetet.

Chrysta Meadowbrooke, a kézirat szerkesztője nagymértékben javította az előadás pontosságát, érthetőségét és koherenciáját. A könyv tartalmához való figyelmes hozzáállása, éles kérdései és belátása segített több témában mélyebbre ásni.

Az Addison-Wesley Professional munkatársai olyan profizmusról és tudásról tettek tanúbizonyságot, hogy öröm volt velük dolgozni. Stephanie Nakib, a szerkesztő és Karen Gettman, a főszerkesztő a kezdetektől fogva a projekten dolgoztak, amikor kellett, siettették velem, elhárítottak minden rendetlenséget, és ügyeltek arra, hogy egy cseppet se térjek el a munkatervtől. Ebony Haight, társszerkesztő felügyelte a teljes folyamatot, míg John Fuller gyártási csapata és Patrick Cash-Peterson, a gyártási koordinátor azt hitte, hogy a gyártási folyamatot nem lehet minden nehézség nélkül összekapcsolni.

Ezt a könyvet szeretett Bobnak és Elizabethnek ajánljuk.

Johnson (John) M. Hart (Johnson (John) M. Hart) [e-mail védett] 2004. augusztus

A kiadótól

Te, e könyv olvasója vagy a fő kritikusa és kommentátora. Értékeljük véleményét, és szeretnénk tudni, mit csináltunk jól, mit lehetett volna jobban csinálni, és mit szeretne még közzétenni. Kíváncsiak vagyunk minden további észrevételére, amelyet szeretne kifejezni velünk.

Várjuk észrevételeiket és várjuk őket. Küldhet nekünk papírt vagy e-mailt, vagy egyszerűen csak keresse fel webszerverünket, és hagyja ott észrevételeit. Egyszóval, az Ön számára megfelelő módon tudassa velünk, hogy tetszik-e ez a könyv vagy sem, és mondja el véleményét arról is, hogyan teheti könyveinket érdekesebbé az Ön számára.

Levél vagy üzenet küldésekor ne felejtse el feltüntetni a könyv címét és szerzőit, valamint az Önét visszaszállítási cím. Gondosan elolvassuk véleményét, és mindenképpen figyelembe vesszük a következő könyvek kiválasztásánál és kiadására való felkészülésnél.

Koordinátáink:

Email: [e-mail védett]

WWW: http://www.williamspublishing.com

Információ a levelekhez: Oroszország: 115419, Moszkva, PO Box 783 Ukrajna: 03150, Kijev, PO Box 152


Johnson M. Hart Systems programozás Windows környezet Harmadik kiadás

Bevezetés

Ez a könyv leírja, hogyan lehet alkalmazásokat fejleszteni a Microsoft Windows operációs rendszerek Application Programming Interface (API) használatával, az alapvető rendszerszolgáltatásokra összpontosítva, beleértve a fájlrendszer-kezelést, a folyamat- és szálkezelést, a folyamatok közötti kommunikációt, a hálózati programozást és a szinkronizálást. A felhasználói felületekkel, a Windows belső elemeivel és az I/O illesztőprogramokkal ez a könyv nem foglalkozik, bár ezek a témák önmagukban egyaránt fontosak és érdekesek. Példákként elsősorban reális forgatókönyveket választottak, ezért sok közülük valós alkalmazások építésének alapjául szolgálhat.

A Win32/Win64 API-kat vagy általában a Windows API-kat a Microsoft 32 bites és 64 bites operációs rendszereinek családja támogatja, amely jelenleg a Windows XP, Windows 2000 és Windows Server 2003 rendszereket tartalmazza. A család korai tagjai közé tartozik a Windows NT operációs rendszerek is. , Windows Me, Windows 98 és Windows 95; ezek a rendszerek mára elavultnak számítanak, de a könyvben szereplő példaprogramok közül sok futhat alattuk. A Win32 platformról a fejlődő Win64 platformra történő migrációs problémákat szükség szerint megvitatják. A Windows Server 2003 és a Windows XP egyes verzióiban 64 bites interfészként támogatott Win64 szinte teljesen megegyezik a Win32-vel.

Kétségtelen, hogy a Windows API a legfontosabb tényező, amely a teljes alkalmazásfejlesztési folyamatot befolyásolja, és sok esetben helyettesíti a UNIX és Linux operációs rendszerek által támogatott POSIX API-t, mivel előnyösebbnek tartják, vagy legalábbis ugyanazokat a képességeket biztosítja. alkalmazásokhoz. , asztali és szerverrendszerekre összpontosítva. Ezért sok tapasztalt programozó érdeklődik a Windows API mielőbbi elsajátítása iránt, és ez a könyv ennek elősegítésére készült.

Először is el kell mondanunk, hogy mi a Windows API, és meg kell mutatni, hogyan kell használni valós helyzetekben, és ez a történet legyen a lehető legtömörebb, és ne legyen túlterhelve felesleges részletekkel. Ezért ez a könyv nem útmutatóként szolgál, hanem arra, hogy megismertesse Önt a legfontosabb függvények alapvető tulajdonságaival, és bemutassa, hogyan használhatók gyakorlati programozási helyzetekben. Ezzel a tudással felvértezve az olvasó képes lesz kihasználni a Microsoft által biztosított kiterjedt súgódokumentáció előnyeit, hogy saját maga által vezetett, mélyrehatóan feltárhassa a konkrét témákat, speciális funkciókat és kevésbé ismert funkciókat igényeinek vagy érdeklődési körének megfelelően. Személy szerint ezzel a megközelítéssel számomra könnyű volt a Windows API elsajátítása, a Windows-os programok fejlesztése pedig nagy öröm volt, bár voltak kellemetlen pillanatok is. Lelkesedésem a könyv egyes helyein jól látható, ami valójában nem meglepő. Ez azonban egyáltalán nem jelenti azt, hogy feltétel nélkül egyetértek a Windows API felsőbbrendűségével a többi operációs rendszer (OS) API-jával szemben, de aligha fogja bárki kifogásolni, hogy sok pozitív tulajdonsággal rendelkezik.

Sok Windows-ról szóló könyv szerzői sok időt töltenek azzal, hogy elmagyarázzák, mi is azok a folyamatok, a virtuális memória, a folyamatok közötti kommunikáció, a megelőző ütemező, de nem mutatják be, hogy mindezt hogyan használják a valós helyzetekben. A UNIX, Linux, IBM MVS, Open VMS és néhány más operációs rendszerben tapasztalattal rendelkező programozók már ismerik ezeket a fogalmakat, és csak az érdekli őket, hogy a lehető leggyorsabban megtanulják, hogyan valósítják meg ezeket a funkciókat a Windows rendszerben. Ezenkívül a legtöbb Windows-könyv nagy hangsúlyt fektet a felhasználói felület programozási technikáira. Annak érdekében, hogy csak a rendszer által biztosított legfontosabb alapfunkciókra összpontosítsunk, ez a könyv nem érinti a felhasználói felületet, és tárgyalásunkat az egyszerű konzolkarakteres I/O-ra korlátozzuk.

A könyv nézőpontja szerint a Windows csak egy operációs rendszer API, amely egy sor jól érthető szolgáltatást biztosít. Sok programozó tapasztalati szintjétől függetlenül szükségét érzi a Windows gyorsított tanulásának, és a Windows ismerete nélkül elképzelhetetlen olyan témák megvitatása, mint a Microsoft által kifejlesztett Component Object Model (COM). A Windows rendszerek bizonyos tekintetben felülmúlják a többi rendszert, másokban lemaradnak, vagy körülbelül azonos szinten állnak. Ennek a könyvnek az a célja, hogy bemutassa, hogyan lehet a legjobban használni ezeket a képességeket valós helyzetekben hasznos, kiváló minőségű, nagy teljesítményű alkalmazások fejlesztésére.

Johnson M. Hart

Rendszerprogramozás Windows környezetben

Harmadik kiadás

Bevezetés

Ez a könyv leírja, hogyan lehet alkalmazásokat fejleszteni a Microsoft Windows operációs rendszerek Application Programming Interface (API) használatával, az alapvető rendszerszolgáltatásokra összpontosítva, beleértve a fájlrendszer-kezelést, a folyamat- és szálkezelést, a folyamatok közötti kommunikációt, a hálózati programozást és a szinkronizálást. A felhasználói felületekkel, a Windows belső elemeivel és az I/O illesztőprogramokkal ez a könyv nem foglalkozik, bár ezek a témák önmagukban egyaránt fontosak és érdekesek. Példákként elsősorban reális forgatókönyveket választottak, ezért sok közülük valós alkalmazások építésének alapjául szolgálhat.

A Win32/Win64 API-kat vagy általában a Windows API-kat a Microsoft 32 bites és 64 bites operációs rendszereinek családja támogatja, amely jelenleg a Windows XP, Windows 2000 és Windows Server 2003 rendszereket tartalmazza. A család korai tagjai közé tartozik a Windows NT operációs rendszerek is. , Windows Me, Windows 98 és Windows 95; ezek a rendszerek mára elavultnak számítanak, de a könyvben szereplő példaprogramok közül sok futhat alattuk. A Win32 platformról a fejlődő Win64 platformra történő migrációs problémákat szükség szerint megvitatják. A Windows Server 2003 és a Windows XP egyes verzióiban 64 bites interfészként támogatott Win64 szinte teljesen megegyezik a Win32-vel.

Kétségtelen, hogy a Windows API a legfontosabb tényező, amely a teljes alkalmazásfejlesztési folyamatot befolyásolja, és sok esetben helyettesíti a UNIX és Linux operációs rendszerek által támogatott POSIX API-t, mivel előnyösebbnek tartják, vagy legalábbis ugyanazokat a képességeket biztosítja. alkalmazásokhoz. , asztali és szerverrendszerekre összpontosítva. Ezért sok tapasztalt programozó érdeklődik a Windows API mielőbbi elsajátítása iránt, és ez a könyv ennek elősegítésére készült.

Először is el kell mondanunk, hogy mi a Windows API, és meg kell mutatni, hogyan kell használni valós helyzetekben, és ez a történet legyen a lehető legtömörebb, és ne legyen túlterhelve felesleges részletekkel. Ezért ez a könyv nem útmutatóként szolgál, hanem arra, hogy megismertesse Önt a legfontosabb függvények alapvető tulajdonságaival, és bemutassa, hogyan használhatók gyakorlati programozási helyzetekben. Ezzel a tudással felvértezve az olvasó képes lesz kihasználni a Microsoft által biztosított kiterjedt súgódokumentáció előnyeit, hogy saját maga által vezetett, mélyrehatóan feltárhassa a konkrét témákat, speciális funkciókat és kevésbé ismert funkciókat igényeinek vagy érdeklődési körének megfelelően. Személy szerint ezzel a megközelítéssel számomra könnyű volt a Windows API elsajátítása, a Windows-os programok fejlesztése pedig nagy öröm volt, bár voltak kellemetlen pillanatok is. Lelkesedésem a könyv egyes helyein jól látható, ami valójában nem meglepő. Ez azonban egyáltalán nem jelenti azt, hogy feltétel nélkül egyetértek a Windows API felsőbbrendűségével a többi operációs rendszer (OS) API-jával szemben, de aligha fogja bárki kifogásolni, hogy sok pozitív tulajdonsággal rendelkezik.

Sok Windows-ról szóló könyv szerzői sok időt töltenek azzal, hogy elmagyarázzák, mi is azok a folyamatok, a virtuális memória, a folyamatok közötti kommunikáció, a megelőző ütemező, de nem mutatják be, hogy mindezt hogyan használják a valós helyzetekben. A UNIX, Linux, IBM MVS, Open VMS és néhány más operációs rendszerben tapasztalattal rendelkező programozók már ismerik ezeket a fogalmakat, és csak az érdekli őket, hogy a lehető leggyorsabban megtanulják, hogyan valósítják meg ezeket a funkciókat a Windows rendszerben. Ezenkívül a legtöbb Windows-könyv nagy hangsúlyt fektet a felhasználói felület programozási technikáira. Annak érdekében, hogy csak a rendszer által biztosított legfontosabb alapfunkciókra összpontosítsunk, ez a könyv nem érinti a felhasználói felületet, és tárgyalásunkat az egyszerű konzolkarakteres I/O-ra korlátozzuk.

A könyv nézőpontja szerint a Windows csak egy operációs rendszer API, amely egy sor jól érthető szolgáltatást biztosít. Sok programozó tapasztalati szintjétől függetlenül szükségét érzi a Windows gyorsított tanulásának, és a Windows ismerete nélkül elképzelhetetlen olyan témák megvitatása, mint a Microsoft által kifejlesztett Component Object Model (COM). A Windows rendszerek bizonyos tekintetben felülmúlják a többi rendszert, másokban lemaradnak, vagy körülbelül azonos szinten állnak. Ennek a könyvnek az a célja, hogy bemutassa, hogyan lehet a legjobban használni ezeket a képességeket valós helyzetekben hasznos, kiváló minőségű, nagy teljesítményű alkalmazások fejlesztésére.

Potenciális közönség

Bárki, aki gyorsan szeretné megtanulni az alkalmazások fejlesztését, tapasztalati szinttől függetlenül.

Programozók és szoftverfejlesztők, akiknek azzal a feladattal kell szembenézniük, hogy meglévő, kifejezetten UNIX-ra írt alkalmazásokat bármely Windows-platformra portoljanak. A könyv bemutatja a Windows, a UNIX és a C szabványkönyvtár használatához kapcsolódó szolgáltatások és programozási modellek relatív képességeit. A közös UNIX-szolgáltatások mindegyikét, beleértve a folyamatkezelést, a szinkronizálást, a fájlrendszereket és a folyamatok közötti kommunikációt, Windows-kifejezésekkel tárgyaljuk. .

Az olvasók olyan új projekteket kezdenek kifejleszteni, amelyek tevékenységét nem korlátozza a meglévő programkódok más platformokra történő áthelyezése. Ez a könyv a programtervezés és -megvalósítás számos aspektusával foglalkozik, és bemutatja, hogyan használhatók a Windows szolgáltatásai hasznos alkalmazások létrehozására és gyakori programozási problémák megoldására.

A COM és a .NET Framework programozói sok hasznos információt találnak itt, amelyek segítségével megismerhetik a dinamikus hivatkozási könyvtárakat (DLL), a szálfűzési modelleket és azok használatát, az interfészeket és a szinkronizálást.

Azok a hallgatók, akik informatikus alapképzésben vesznek részt, vagy rendszerprogramozással vagy alkalmazásfejlesztéssel kapcsolatos egyetemi diplomamunkákon dolgoznak. A könyv azoknak is hasznos lesz, akik többszálú programozást tanulnak, vagy hálózati alkalmazások létrehozásának szükségességével szembesülnek. Használható olyan források hasznos kiegészítéseként is, mint például W. Richard Stevens Speciális programozás UNIX környezetben(lásd az irodalomjegyzéket), amely lehetővé teszi a diákok számára a Windows és a UNIX szolgáltatásainak összehasonlítását. Ez a könyv az operációs rendszer tanfolyamot tanuló hallgatóknak is nagy segítségére lesz, mivel pontosan bemutatja, hogyan biztosítják a kereskedelmi érdeklődésre számot tartó operációs rendszer alapvető funkcióit.

Az egyetlen feltételezés, amely a fentiekben benne van, az az a feltevés, hogy az olvasók tapasztalattal rendelkeznek a C nyelv programozásában.

Változások a harmadik kiadásban

Az első két kiadás jelentős frissítése és átszervezése mellett a harmadik kiadás jelentős mennyiségű új anyagot ad hozzá. Ez a kiadvány a következő feladatokat kívánja megoldani:

Ismertesse meg a Windows XP, Windows 2000 és Windows Server 2003 új szolgáltatásait, és fontolja meg a Win64 platformra való átállást.

Távolítsa el a Windows 95, Windows 98 és Windows ME-specifikus anyagokat (a "Windows 9x" családot), mivel elavult, mert a jelenleg szállított személyes rendszereken Windows XP fut, és a Windows 9x korlátozásai már nem érvényesek. A mintaprogramok fenntartás nélkül olyan eszközöket használnak, amelyek csak az aktuálisban szerepelnek Windows verziók, bár egyes programok emiatt nem fognak működni Windows 9x rendszeren.

Átfogóbb lefedettséget biztosít a szálfűzés és szinkronizálás témájáról, beleértve a teljesítménnyel, a skálázhatósággal és a megbízhatósággal kapcsolatos szempontokat. A 9. fejezet, valamint a 10. fejezet néhány példája új.

Emelje ki a Windows 2000 és a Windows Server 2003, valamint az általuk kínált új eszközök növekvő hatását a nagy teljesítményű, méretezhető, többszálas szerveralkalmazás-képességekre.

Vizsgálja meg a programok teljesítményének függőségét a felépítési elvektől, különös tekintettel a többszálas, szinkronizált programokra, valamint ezeknek a programoknak a működésének jellemzőire szimmetrikus többprocesszoros (Symmetrical Multiprocessor, SMP) rendszerek körülményei között.