Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«4.Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ устройство Windows (Π³Π». 12-14)Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 29

Автор ΠœΠ°Ρ€ΠΊ Руссинович

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π² Windows прСдусмотрСны клиСнтскиС ΠΈ сСрвСрныС API-интСрфСйсы доступа ΠΊ Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Ρƒ. C ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этих API прилоТСния ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сСрвисы Gopher, FTP ΠΈ HTTP, Π½Π΅ зная Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ устройства ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ². ΠšΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΠΈΠ΅ API Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Windows Internet, Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ WinInet (позволяСт прилоТСниям Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°ΠΌΠΈ Gopher, FTP ΠΈ HTTP), ΠΈ WinHTTP (Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ прилоТСниям Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ HTTP). B ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ситуациях WinHTTP ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ WinInet. HTTP β€” это сСрвСрный API, Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π² Windows Server 2003 для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сСрвСрных Web-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.


WinInet

WinInet ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ Gopher, FTP ΠΈ HTTP вСрсий 1.0 ΠΈ 1.1. Π­Ρ‚ΠΎΡ‚ API дСлится Π½Π° Π½Π°Π±ΠΎΡ€Ρ‹ ΠΏΠΎΠ΄-API, спСцифичныС для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ API-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ FTP Π²Ρ€ΠΎΠ΄Π΅ InternetConnect для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ FTP-cep-Π²Π΅Ρ€Ρƒ, FtpFindFirstFile ΠΈ FtpFindNextFile для пСрСчислСния содСрТимого FTP-ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ FtpGetFile ΠΈ FtpPutFile для ΠΏΡ€ΠΈΠ΅ΠΌΠ° ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ², Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ прилоТСния ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Π·Π°Π΄ΡƒΠΌΡ‹Π²Π°Ρ‚ΡŒΡΡ ΠΎ дСталях, связанных с установлСниСм соСдинСния ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ TCP/IP-сообщСний для ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° FTP API-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Gopher ΠΈ HTTP ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ абстракции. WinInet примСняСтся Π±Π°Π·ΠΎΠ²Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ Windows, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Windows Explorer ΠΈ Internet Explorer.


WinHTTP

ВСкущая вСрсия WinHTTP API β€” 5.1; ΠΎΠ½Π° доступна Π² Windows 2000 с Service Pack 3, Π² Windows XP ΠΈ Windows Server 2003- Π­Ρ‚ΠΎΡ‚ API обСспСчиваСт Π°Π±ΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΡŽ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° HTTP 1.1 для клиСнтских HTTP-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с HTTP API Π² WinInet. Однако, Ссли WinInet HTTP API ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… клиСнтских ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Ρ‚ΠΎ WinHTTP API β€” для сСрвСрных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… с HTTP-сСрвСрами. Π‘Π΅Ρ€Π²Π΅Ρ€Π½Ρ‹Π΅ прилоТСния часто Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Windows-слуТбы Π±Π΅Π· UI, поэтому ΠΈΠΌ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹Π΅ ΠΎΠΊΠ½Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ API-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ WinInet. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, WinHTTP API Π»ΡƒΡ‡ΡˆΠ΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ ΠΈ прСдоставляСт срСдства Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Π²Ρ€ΠΎΠ΄Π΅ ΠΏΠΎΠ΄ΠΌΠ΅Π½Ρ‹ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², нСдоступныС Π² WinInet API.


HTTP

C ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ HTTP API, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π² Windows Server 2003, сСрвСрныС прилоТСния ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° ΠΏΡ€ΠΈΠ΅ΠΌ HTTP-запросов с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… URL, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ запросы ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ HTTP-ΠΎΡ‚Π²Π΅Ρ‚Ρ‹. HTTP API Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ SSL (Secure Sockets Layer), Ρ‡Ρ‚ΠΎΠ±Ρ‹ прилоТСния ΠΌΠΎΠ³Π»ΠΈ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΠΎ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΌ HTTP-соСдинСниям. Π­Ρ‚ΠΎΡ‚ API ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° сСрвСрной сторонС, ΠΌΠΎΠ΄Π΅Π»ΠΈ синхронного ΠΈ асинхронного Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π°Π΄Ρ€Π΅ΡΠ°Ρ†ΠΈΡŽ ΠΏΠΎ IPv4 ΠΈ IPv6. HTTP API ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ IIS вСрсии 6 (поставляСтся с Windows Server 2003).

HTTP API, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ прилоТСния ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Httpapi.dll, опираСтся Π½Π° Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ Http.sys Ρ€Π΅ΠΆΠΈΠΌΠ° ядра. Http.sys запускаСтся ΠΏΠΎ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΡŽ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅ HttpInitialize Π»ΡŽΠ±Ρ‹ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Ѐункция HttpCreateHttpHandle позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ запросов, Π° функция HttpAddUrl β€” ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ URL-адрСса, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ собираСтся ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ запросы для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ запросов ΠΈ ΠΈΡ… зарСгистрированныС URL, Http.sys Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ НВВР-запросы Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΡ€Ρ‚Ρƒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 80, Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ.

HttpReceiveHttpRequest ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ входящиС запросы, Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΠΎ зарСгистрированным URL, zHttpSendHttpRespome ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ HTTP-ΠΎΡ‚Π²Π΅Ρ‚Ρ‹. ОбС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π² асинхронном Ρ€Π΅ΠΆΠΈΠΌΠ΅, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ, Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π° Π»ΠΈ какая-Ρ‚ΠΎ опСрация, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ GetOverlappedResult ΠΈΠ»ΠΈ ΠΏΠΎΡ€Ρ‚Ρ‹ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Http.sys для ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π½Π΅ΠΏΠΎΠ΄ΠΊΠ°Ρ‡ΠΈΠ²Π°Π΅ΠΌΠΎΠΉ физичСской памяти, вызывая HttpAddToFragmentCache ΠΈ сопоставляя имя Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° с ΠΊΡΡˆΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Ддя выдСлСния нСспроСцированных страниц физичСской памяти Http.sys запускаСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ MmAllocate-PagesForMdl, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΡƒΡŽ диспСтчСру памяти. Когда Http.sys трСбуСтся сопоставлСниС Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ адрСса с физичСской ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, описываСмой элСмСнтом кэша (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли Http.sys ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ Π² кэш ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΠΈΡ… ΠΈΠ· кэша), ΠΎΠ½ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ MmMapLockedPagesSpecifyCache, Π° ΠΏΠΎ ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ β€” MmUnmapLockedPages. Http.sys Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΊΡΡˆΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ ΠΈΡ… Π½Π΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈΠ»ΠΈ ΠΏΠΎΠΊΠ° Π½Π΅ истСчСт срок ΠΈΡ… Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Http.sys Ρ‚Π°ΠΊΠΆΠ΅ усСкаСт ΠΊΡΡˆΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ±ΡƒΠΆΠ΄Π΅Π½ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΈΠ·-Π·Π° ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π² свободноС состояниС события, ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»ΡΡŽΡ‰Π΅Π³ΠΎ ΠΎ ΠΌΠ°Π»ΠΎΠΌ объСмС памяти (ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± этом событии см. Π² Π³Π»Π°Π²Π΅ 7). Если ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ HttpSendHttpResponse ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠ΄Π½ΠΎ ΠΈΠ»ΠΈ нСсколько ΠΈΠΌΠ΅Π½ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ², Http.sys ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΡΡˆΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ Π² физичСской памяти, Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρƒ TCP/ IP ΠΈ Ρ‚Π΅ΠΌ самым ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ лишнюю ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ копирования.


Π˜ΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΊΠ°Π½Π°Π»Ρ‹ ΠΈ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹Π΅ ящики

Π˜ΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΊΠ°Π½Π°Π»Ρ‹ ΠΈ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹Π΅ ящики β€” это API, ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ Microsoft для OS/2 LAN Manager ΠΈ впослСдствии пСрСнСсСнныС Π² Windows NT Π˜ΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΊΠ°Π½Π°Π»Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Π½Π°Π΄Π΅ΠΆΠ½ΡƒΡŽ Π΄Π²ΡƒΡΡ‚ΠΎΡ€ΠΎΠ½Π½ΡŽΡŽ связь, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹Π΅ ящики β€” Π½Π΅Π½Π°Π΄Π΅ΠΆΠ½ΡƒΡŽ ΠΎΠ΄Π½ΠΎΡΡ‚ΠΎΡ€ΠΎΠ½Π½ΡŽΡŽ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹Ρ… ящиков β€” Π² ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ²Π΅Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ. Оба API ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ систСму Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Windows, Ρ‡Ρ‚ΠΎ позволяСт сСрвСрам ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΊ Π½ΠΈΠΌ.

Π‘Π΅Ρ€Π²Π΅Ρ€Ρ‹ Π½Π°Π·Π½Π°Ρ‡Π°ΡŽΡ‚ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΊΠ°Π½Π°Π»Π°ΠΌΠΈ ΠΈ ΠΈΡ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ ΠΈΠΌΠ΅Π½Π° Π² соотвСтствии с ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ имСнования (Universal Naming Convention, UNC), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ нСзависимый ΠΎΡ‚ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² способ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ рСсурсов Π² Windows-сСтях. O Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ UNC-ΠΈΠΌΠ΅Π½ ΠΌΡ‹ расскаТСм ΠΏΠΎΠ·ΠΆΠ΅.


Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΊΠ°Π½Π°Π»ΠΎΠ²

ΠšΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Π°Ρ связь ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ ΠΊΠ°Π½Π°Π»Ρƒ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ сСрвСр ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ°Π½Π°Π»Π° ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ°Π½Π°Π»Π°. Π‘Π΅Ρ€Π²Π΅Ρ€ΠΎΠΌ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ°Π½Π°Π»Π° являСтся ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΠΎΠ·Π΄Π°ΡŽΡ‰Π΅Π΅ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠ°Π½Π°Π», ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹. Π€ΠΎΡ€ΠΌΠ°Ρ‚ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠ°Π½Π°Π»Π° выглядит Ρ‚Π°ΠΊ: \\CepΠ²ep\Pipe\ ИмяКанала. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Π‘Π΅Ρ€Π²Π΅Ρ€ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ сСрвСр ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ°Π½Π°Π»Π°. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Pipe Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ строкой Β«PipeΒ», Π° Имя-Канала β€” ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ имя, Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠ΅ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ ΠΊΠ°Π½Π°Π»Ρƒ. Уникальная Ρ‡Π°ΡΡ‚ΡŒ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠ°Π½Π°Π»Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°ΠΊΠΎΠ³ΠΎ UNC-ΠΈΠΌΠ΅-Π½ΠΈ ΠΊΠ°Π½Π°Π»Π° β€” \\MyComputer\Pipe\MyServerApp\ConnectionPipe.

Для создания ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ°Π½Π°Π»Π° сСрвСр ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Windows-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ CreateNamedPipe. Одним ΠΈΠ· Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ являСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° имя ΠΊΠ°Π½Π°Π»Π° Π² Ρ„ΠΎΡ€ΠΌΠ΅ \\.\Π iΡ€Π΅\ИмяКанала, Π³Π΄Π΅ Β«\\.\Β» β€” псСвдоним локального ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π² Windows. Ѐункция Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ дСскриптор Π·Π°Ρ‰ΠΈΡ‚Ρ‹, Π·Π°ΠΏΡ€Π΅Ρ‰Π°ΡŽΡ‰ΠΈΠΉ нСсанкционированный доступ ΠΊ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ ΠΊΠ°Π½Π°Π»Ρƒ, Ρ„Π»Π°Π³, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π»ΠΈ ΠΊΠ°Π½Π°Π» Π±Ρ‹Ρ‚ΡŒ двусторонним ΠΈΠ»ΠΈ односторонним, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΉ максимальноС число ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… соСдинСний ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΌΡƒ ΠΊΠ°Π½Π°Π»Ρƒ, ΠΈ Ρ„Π»Π°Π³ Ρ€Π΅ΠΆΠΈΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠ°Π½Π°Π»Π° (ΠΏΠΎΠ±Π°ΠΉΡ‚ΠΎΠ²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ сообщСний).

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ сСтСвых API-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΏΠΎΠ±Π°ΠΉΡ‚ΠΎΠ²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ΅ сообщСниС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ принято адрСсатом Π² Π²ΠΈΠ΄Π΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… воссоздаСтся ΠΏΠΎΠ»Π½ΠΎΠ΅ сообщСниС. Π˜ΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΊΠ°Π½Π°Π»Ρ‹, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ сообщСний, ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ°, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² этом случаС число ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ ΠΈ ΠΏΡ€ΠΈΠ΅ΠΌΠΎΠ² ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ, Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊ, Ρ€Π°Π·ΠΎΠΌ получая Ρ†Π΅Π»ΠΎΠ΅ сообщСниС, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Π±ΠΎΡ‚ΠΈΡ‚ΡŒΡΡ ΠΎΠ± отслСТивании Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² сообщСний.

ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅ CreateNamedPipe с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΠΈΠΌΠ΅Π½ΠΈ создаСтся ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ экзСмпляр ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ°Π½Π°Π»Π° с этим ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈ задаСтся ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ всСх ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… экзСмпляров этого ΠΊΠ°Π½Π°Π»Π°. ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ вызывая CreateNamedPipe, сСрвСр ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ экзСмпляры ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ°Π½Π°Π»Π°, максимальноС число ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… указываСтся ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅ CreateNamedPipe. Π‘ΠΎΠ·Π΄Π°Π² ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΎΠ΄ΠΈΠ½ экзСмпляр ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ°Π½Π°Π»Π°, сСрвСр выполняСт Windows-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ConnectNamedPipe, послС Ρ‡Π΅Π³ΠΎ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠ°Π½Π°Π» позволяСт ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ соСдинСния с ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ. Ѐункция ConnectNamedPipe ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΊΠ°ΠΊ синхронно, Ρ‚Π°ΠΊ ΠΈ асинхронно, ΠΈ ΠΎΠ½Π° Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ, ΠΏΠΎΠΊΠ° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π½Π΅ установит соСдинСниС Ρ‡Π΅Ρ€Π΅Π· Π΄Π°Π½Π½Ρ‹ΠΉ экзСмпляр ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ°Π½Π°Π»Π° (ΠΈΠ»ΠΈ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ошибка).

Для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ сСрвСру ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ°Π½Π°Π»Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Windows-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ CreateFile ΠΈΠ»ΠΈ CallNamedPipe, указывая ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ имя созданного сСрвСром ΠΊΠ°Π½Π°Π»Π°. Если сСрвСр Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ConnectNamedPipe, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈ Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½Ρ‹Π΅ ΠΈΠΌ ΠΏΡ€Π°Π²Π° доступа ΠΊ ΠΊΠ°Π½Π°Π»Ρƒ (для чтСния ΠΈΠ»ΠΈ записи) ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ с дСскриптором Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΊΠ°Π½Π°Π»Π° (ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°Ρ… ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΡ€Π°Π² доступа см. Π³Π»Π°Π²Ρƒ 8). Если ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ доступ ΠΊ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ ΠΊΠ°Π½Π°Π»Ρƒ, ΠΎΠ½ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΡƒΡŽ сторону ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ°Π½Π°Π»Π°, ΠΈ функция ConnectNamedPipe, вызванная сСрвСром, Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ.

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ соСдинСниС ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ ΠΊΠ°Π½Π°Π»Ρƒ установлСно, ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΈ сСрвСр ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ для чтСния ΠΈ записи Π΄Π°Π½Π½Ρ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· Windows-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ReadFile ΠΈ WriteFile. Π˜ΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΊΠ°Π½Π°Π»Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΊΠ°ΠΊ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΡƒΡŽ, Ρ‚Π°ΠΊ ΠΈ Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ сообщСний. ВзаимодСйствиС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈ сСрвСра Ρ‡Π΅Ρ€Π΅Π· ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠ°Π½Π°Π» ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рис. 13-9.