ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Β«Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы кластСров»

ΠšΡƒΡ€ΡΠΎΠ²Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π±Ρ‹Π»ΠΎ принято Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ .NET, Ρ‚.ΠΊ. ΠΎΠ½Π° являСтся «Ρ€ΠΎΠ΄Π½ΠΎΠΉ» для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм сСмСйства Windows ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмой. .NET Framework — программная тСхнология ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Microsoft, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° для создания ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚ывания ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Она прСдоставляСт Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π½Π° ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π°Ρ…, ΠΌΠ½ΠΎΠ³ΠΎΡΠ·Ρ‹ΠΊΠΎΠ²ΡƒΡŽ срСду… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Β«Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы кластСров» (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Π‘Π»ΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ Π²Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ³ΠΎ устройства, ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€. Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² Π² ΠΏΠΎΠ²ΡΠ΅Π΄Π½Π΅Π²Π½ΡƒΡŽ Тизнь людСй достигла ΠΎΡ‡Π΅Π½ΡŒ высокого уровня, Ρ‡Ρ‚ΠΎ позволяСт ΡΠΏΡ€ΠΎΠ³Π½ΠΎΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Ρ‰Π΅ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡŽ всСх сфСр ΠΆΠΈΠ·Π½ΠΈ. Вакая ситуация слоТилась благодаря Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ прСвратился Π² ΡˆΠΈΡ€ΠΎΠΊΠΎ распространённоС ΠΈ Π³ΠΈΠ±ΠΊΠΎΠ΅ срСдство для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡.

ΠŸΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€, ΠΊΠ°ΠΊ извСстно, являСтся ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ устройством для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. ΠŸΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ практичСски Π»ΡŽΠ±Ρ‹Π΅ дСйствия ΠΏΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ для ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° Π½Π° ΠΏΠΎΠ½ΡΡ‚Π½ΠΎΠΌ Π΅ΠΌΡƒ языкС Ρ‚ΠΎΡ‡Π½ΡƒΡŽ ΠΈ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ инструкций (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ), ΠΊΠ°ΠΊ Π½Π°Π΄ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ.

ΠΠ±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ΅ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ всСх ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² ΠΌΠΈΡ€Π° Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΏΠΎΠ΄ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой Windows Ρ€Π°Π·Π½Ρ‹Ρ… вСрсий. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ, созданы для использования ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠ΄ ΠžΠ‘ Windows. НСслоТно ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎΡΡ‚ΡŒ любой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, вСдь Ρ€Π°Π±ΠΎΡ‚Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… программистов ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π°ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π² ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Π΅, Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΈΡ… Π΄ΠΎΡΡƒΠ³, ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅.

Π’ ΡΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… условиях Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния слоТно ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π½ΠΎΠ²ΠΎΠ΅, поэтому практичСски Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ вСдСтся оТСсточСнная Π±ΠΎΡ€ΡŒΠ±Π° «Π·Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Сля». Если Ρ€Π°Π½ΡŒΡˆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Π»Π° всСго лишь Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΠ±Π»Π°Π΄Π°Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΈ Ρ€ΡΠ΄ΠΎΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… свойств: ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ интСрфСйсом, простотой использования, Π³Π°Ρ€ΠΌΠΎΠ½ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ Π΄ΠΈΠ·Π°ΠΉΠ½Π°.

1 ΠžΠ‘Π©Π˜Π• Π‘Π’Π•Π”Π•ΠΠ˜Π― Π’ ΠžΠ‘ЛАБВИ Π€ΠžΠ ΠœΠ˜Π ΠžΠ’ΠΠΠ˜Π― ΠšΠžΠΠ’Π ΠžΠ›Π¬ΠΠžΠ™ БУММЫ И ΠŸΠ ΠžΠ’Π•Π ΠšΠ˜ ΠšΠ›ΠΠ‘Π’Π•Π ΠžΠ’

ЦСлью Π΄Π°Π½Π½ΠΎΠ³ΠΎ курсового ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° являСтся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ «ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы кластСров». ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ для выполнСния задания Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ просмотра ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ТСсткого диска ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° Π΅Π³ΠΎ структуры, Ρ‚Π°ΠΊΠΆΠ΅ подсчСта ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ для понимания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… возмоТностСй Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ знания ΠΎ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°Ρ… исслСдования — стуктура Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСм Windows ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ сумма.

1.1 ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ элСмСнты Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС Windows ΠΈ ΠΈΡ… Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΈΠ΅

Ѐайловая систСма (Π°Π½Π³Π». file system) — Ρ€Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΉ способ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ, хранСния ΠΈ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° Π½ΠΎΡΠΈΡ‚Слях ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Она опрСдСляСт Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ физичСского хранСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ принято Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ². ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Π°Ρ файловая систСма опрСдСляСт Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π° (ΠΏΠ°ΠΏΠΊΠΈ), ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»Π° ΠΈ Ρ€Π°Π·Π΄Π΅Π»Π°, Π½Π°Π±ΠΎΡ€ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² Ρ„Π°ΠΉΠ»Π°. НСкоторыС Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ систСмы ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ сСрвисныС возмоТности, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ€Π°Π·Π³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ доступа ΠΈΠ»ΠΈ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ².

Ѐайловая систСма связываСт Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ с ΠΎΠ΄Π½ΠΎΠΉ стороны ΠΈ API для доступа ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ — с Π΄Ρ€ΡƒΠ³ΠΎΠΉ. Когда прикладная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° обращаСтся ΠΊ Ρ„Π°ΠΉΠ»Ρƒ, ΠΎΠ½Π° Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ прСдставлСния ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ располоТСна информация Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅, Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ физичСском Ρ‚ΠΈΠΏΠ΅ носитСля (CD, Тёстком дискС, ΠΌΠ°Π³Π½ΠΈΡ‚Π½ΠΎΠΉ Π»Π΅Π½Ρ‚Π΅ ΠΈΠ»ΠΈ Π±Π»ΠΎΠΊΠ΅ Ρ„Π»Π΅Ρˆ-памяти) ΠΎΠ½ Π·Π°ΠΏΠΈΡΠ°Π½. Всё, Ρ‡Ρ‚ΠΎ Π·Π½Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° — это имя Ρ„Π°ΠΉΠ»Π°, Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹. Π­Ρ‚ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ½Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΎΡ‚ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы. ИмСнно файловая систСма устанавливаСт, Π³Π΄Π΅ ΠΈ ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ записан Ρ„Π°ΠΉΠ» Π½Π° Ρ„изичСском носитСлС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Тёстком дискС).

Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы, вСсь диск прСдставляСт собой Π½Π°Π±ΠΎΡ€ кластСров Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ ΠΎΡ‚ 512 Π±Π°ΠΉΡ‚ ΠΈ Π²Ρ‹ΡˆΠ΅. Π”Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы ΠΎΡ€Π³Π°Π½ΠΈΠ·ΡƒΡŽΡ‚ кластСры Π² Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ (Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ ΡΠ²Π»ΡΡŽΡ‰ΠΈΠ΅ΡΡ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, содСрТащими список Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΡΡ‚ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅). Π­Ρ‚ΠΈ ΠΆΠ΅ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°ΡŽΡ‚, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠ· ΠΊΠ»Π°ΡΡ‚Π΅Ρ€ΠΎΠ² Π² Π½Π°ΡΡ‚оящСС врСмя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ свободны, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ ΠΊΠ°ΠΊ нСисправныС.

ΠšΠ»Π°ΡΡ‚Π΅Ρ€ (Π°Π½Π³Π». cluster) — Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‚ΠΈΠΏΠ°Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСм логичСская Π΅Π΄ΠΈΠ½ΠΈΡ†Π° хранСния Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ размСщСния Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‰Π°Ρ Π³Ρ€ΡƒΠΏΠΏΡƒ сСкторов. НапримСр, Π½Π° Π΄ΠΈΡΠΊΠ°Ρ… с Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ сСкторов Π² 512 Π±Π°ΠΉΡ‚, 512-Π±Π°ΠΉΡ‚Π½Ρ‹ΠΉ кластСр содСрТит ΠΎΠ΄ΠΈΠ½ сСктор, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ 4-ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚Π½Ρ‹ΠΉ кластСр содСрТит восСмь сСкторов.

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, это наимСньшСС мСсто Π½Π° Π΄ΠΈΡΠΊΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΎ для хранСния Ρ„Π°ΠΉΠ»Π°.

ΠŸΠΎΠ½ΡΡ‚ΠΈΠ΅ кластСр ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСмах FAT ΠΈ NTFS. Π”Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ систСмы ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ схоТими понятиями (Π·ΠΎΠ½Ρ‹ Π² Minix, Π±Π»ΠΎΠΊΠΈ Π² Unix).

Рисунок 1.1 — Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° диска На Ρ€ΠΈΡΡƒΠ½ΠΊΡƒ 1.1 ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ основныС элСмСнты структуры диска:

A. Π”ΠΎΡ€ΠΎΠΆΠΊΠ°.

B. ГСомСтричСский сСктор.

C. Π‘Π΅ΠΊΡ‚ΠΎΡ€ Π΄ΠΎΡ€ΠΎΠΆΠΊΠΈ.

D. ΠšΠ»Π°ΡΡ‚Π΅Ρ€.

1.2 ΠŸΠΎΠ½ΡΡ‚ΠΈΠ΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы, Π΅Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ сумма — Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, рассчитанноС ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡƒΡ‚Ρ‘ΠΌ примСнСния ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… (для ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ влияния ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΏΠΎΠΌΠ΅Ρ… ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅).

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

ΠŸΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ использования ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Ρ… сумм для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ цСлостности Π΄Π°Π½Π½Ρ‹Ρ… обусловлСна Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ подобная ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° просто Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΠ° Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΌ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ, Π»Π΅Π³ΠΊΠΎ анализируСтся ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для обнаруТСния ΠΎΠ±Ρ‰ΠΈΡ… ошибок, Π²Ρ‹Π·Π²Π°Π½Π½Ρ‹Ρ… Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ΠΌ ΡˆΡƒΠΌΠ° Π² ΠΊΠ°Π½Π°Π»Π°Ρ… ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

Одним ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² подсчСта ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы являСтся цикличСский ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ (Π² Ρ‡Π°ΡΡ‚ности, CRC32), примСняСтся для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ цСлостности ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹-Π°Ρ€Ρ…ΠΈΠ²Π°Ρ‚ΠΎΡ€Ρ‹ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ CRC исходных Π΄Π°Π½Π½Ρ‹Ρ… Π² ΡΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π°Ρ€Ρ…ΠΈΠ² для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‰ΠΈΠΉ ΠΌΠΎΠ³ ΡƒΠ΄ΠΎΡΡ‚ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒΡΡ Π² ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ности ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Вакая ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ сумма проста Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ Π½ΠΈΠ·ΠΊΡƒΡŽ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ возникновСния ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ.

Алгоритм вычислСния ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы (Π°Π½Π³Π». Cyclic redundancy code, CRC — цикличСский ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄) — способ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Π²Ρ‹Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ значСния Π΅Ρ‘ Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π΅ΡΠΊΠΎΠ³ΠΎ ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

Алгоритм CRC базируСтся Π½Π° ΡΠ²ΠΎΠΉΡΡ‚Π²Π°Ρ… дСлСния с ΠΎΡΡ‚Π°Ρ‚ΠΊΠΎΠΌ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠ½ΠΎΠ³ΠΎΡ‡Π»Π΅Π½ΠΎΠ², Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΡ‡Π»Π΅Π½ΠΎΠ² Π½Π°Π΄ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ ΠΏΠΎΠ»Π΅ΠΌ GF (2). Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ CRC являСтся ΠΏΠΎ ΡΡƒΡ‚ΠΈ остатком ΠΎΡ‚ Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎΡ‡Π»Π΅Π½Π°, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Π²Ρ…ΠΎΠ΄Π½Ρ‹ΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ, Π½Π° Π½Π΅ΠΊΠΈΠΉ фиксированный ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠΉ ΠΌΠ½ΠΎΠ³ΠΎΡ‡Π»Π΅Π½.

КаТдой ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π±ΠΈΡ‚ΠΎΠ² Π²Π·Π°ΠΈΠΌΠ½ΠΎ-ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ сопоставляСтся Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ ΠΌΠ½ΠΎΠ³ΠΎΡ‡Π»Π΅Π½, ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ коэффициСнтов ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ прСдставляСт собой ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. НапримСр, ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±ΠΈΡ‚ΠΎΠ² 1 011 010 соотвСтствуСт ΠΌΠ½ΠΎΠ³ΠΎΡ‡Π»Π΅Π½Ρƒ:

НСтрудно Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ количСство Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠ½ΠΎΠ³ΠΎΡ‡Π»Π΅Π½ΠΎΠ² стСпСни мСньшСй N Ρ€Π°Π²Π½ΠΎ 2N, Ρ‡Ρ‚ΠΎ совпадаСт с Ρ‡ΠΈΡΠ»ΠΎΠΌ всСх Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ Π΄Π»ΠΈΠ½Ρ‹ N.

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ CRC с ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠΌ ΠΌΠ½ΠΎΠ³ΠΎΡ‡Π»Π΅Π½ΠΎΠΌ G (x) стСпСни N ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ся ΠΊΠ°ΠΊ битовая ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π΄Π»ΠΈΠ½Ρ‹ N, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π°Ρ ΠΌΠ½ΠΎΠ³ΠΎΡ‡Π»Π΅Π½ R (x), ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠΈΠΉΡΡ Π² ΠΎΡΡ‚Π°Ρ‚ΠΊΠ΅ ΠΏΡ€ΠΈ Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡ‡Π»Π΅Π½Π° P (x), ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊ Π±ΠΈΡ‚, Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΡ‡Π»Π΅Π½ G (x):

Π³Π΄Π΅:

R (x) — ΠΌΠ½ΠΎΠ³ΠΎΡ‡Π»Π΅Π½, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ CRC.

P (x) — ΠΌΠ½ΠΎΠ³ΠΎΡ‡Π»Π΅Π½, коэффициСнты ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅.

G (x) — ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠΉ ΠΌΠ½ΠΎΠ³ΠΎΡ‡Π»Π΅Π½.

— ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡ‡Π»Π΅Π½Π°.

Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ xN осущСствляСтся приписываниСм N Π½ΡƒΠ»Π΅Π²Ρ‹Ρ… Π±ΠΈΡ‚ΠΎΠ² ΠΊ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Ρ‡Ρ‚ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ качСство Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ для ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΡ… Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ.

ΠŸΡ€ΠΈ Π΄Π΅Π»Π΅Π½ΠΈΠΈ с ΠΎΡΡ‚Π°Ρ‚ΠΊΠΎΠΌ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΡ‡Π»Π΅Π½Π°-остатка строго мСньшС стСпСни ΠΌΠ½ΠΎΠ³ΠΎΡ‡Π»Π΅Π½Π°-дСлитСля, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈ Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΡ‡Π»Π΅Π½ G (x) стСпСни N ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ 2N Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… остатков ΠΎΡ‚ Π΄Π΅Π»Π΅Π½ΠΈΡ. ΠŸΡ€ΠΈ «ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ» Π²Ρ‹Π±ΠΎΡ€Π΅ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡ‡Π»Π΅Π½Π° G (x), остатки ΠΎΡ‚ Π΄Π΅Π»Π΅Π½ΠΈΡ Π½Π° Π½Π΅Π³ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±Π»Π°Π΄Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹ΠΌΠΈ свойствами Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ — Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡˆΠΈΠ²Π°Π΅ΠΌΠΎΡΡ‚ΡŒΡŽ ΠΈ Π±Ρ‹ΡΡ‚Ρ€Ρ‹ΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ вычислСния. Π’Ρ‚ΠΎΡ€ΠΎΠ΅ обСспСчиваСтся Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡ‡Π»Π΅Π½Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π° Π΄Π»ΠΈΠ½Π΅ Π±Π°ΠΉΡ‚Π° ΠΈΠ»ΠΈ машинного слова (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 8, 16 ΠΈΠ»ΠΈ 32).

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ дСлСния Π½Π° ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΠΈΠ½ΠΎΠΌ Ρ‚Π°ΠΊΠΆΠ΅ эквивалСнтна ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ схСмС:

ΠŸΡƒΡΡ‚ΡŒ Π²Ρ‹Π±Ρ€Π°Π½ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΠΈΠ½ΠΎΠΌ, Π·Π°Π΄Π°ΡŽΡ‰ΠΈΠΉ Ρ†ΠΈΠΊΠ» Π΄Π΅ Π‘Ρ€Π΅ΠΉΠ½Π° 10 111 001 011 100… ΠΈ Π±Π»ΠΎΠΊ Π΄Π°Π½Π½Ρ‹Ρ… 111 110, построСна Ρ‚Π°Π±Π»ΠΈΡ†Π°, вСрхняя строка Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π° Π±Π»ΠΎΠΊΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ…, Π° Π½ΠΈΠΆΠ½ΠΈΠ΅ строки — смСщСния Π½Π° 0,1,2 Π±ΠΈΡ‚ Ρ†ΠΈΠΊΠ»Π° Π΄Π΅ Π‘Ρ€Π΅ΠΉΠ½Π° Π’ΠΎΠ³Π΄Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ сумма Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ XOR Ρ‚Π΅Ρ… столбцов, Π½Π°Π΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ строкС располоТСна 1. Π’ ΡΡ‚ΠΎΠΌ случаС, 010 xor 101 xor 011 xor 111 xor 110 = 101 (CRC).

Алгоритм CRC32, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ, основан Π½Π° ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½ΠΎΠΌ ΠΏΠΎΠ»ΠΈΠ½ΠΎΠΌΠ΅ 0xEDB88320 (Π·Π΅Ρ€ΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΠΈΠ½ΠΎΠΌΠ° 0×04C11DB7) ΠΈ ΡΠ²Π»ΡΠ΅Ρ‚ся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠ°ΠΌΡ‹Ρ… распространСнных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² подсчСта ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы.

Π•Ρ‰Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ криптографичСский Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ MD5.

MD5 (Π°Π½Π³Π». Message Digest 5) — 128-Π±ΠΈΡ‚Π½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ профСссором Рональдом Π›. РивСстом ΠΈΠ· ΠœΠ°ΡΡΠ°Ρ‡ΡƒΡΠ΅Ρ‚ского тСхнологичСского института (Massachusetts Institute of Technology, MIT) Π² 1991 Π³ΠΎΠ΄Ρƒ. ΠŸΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для создания «ΠΎΡ‚ΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠΎΠ²» ΠΈΠ»ΠΈ «Π΄Π°ΠΉΠ΄ΠΆΠ΅ΡΡ‚ΠΎΠ²» сообщСний ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹. ЯвляСтся ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½ΠΎΠΉ Π² ΠΏΠ»Π°Π½Π΅ бСзопасности вСрсиСй MD4. 1] Зная MD5-ΠΎΠ±Ρ€Π°Π· (Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ Ρ‚Π°ΠΊΠΆΠ΅ MD5-Ρ…Π΅Ρˆ ΠΈΠ»ΠΈ MD5-дайдТСст), Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π²Ρ…ΠΎΠ΄Π½ΠΎΠ΅ сообщСниС, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ MD5-ΠΎΠ±Ρ€Π°Π·Ρƒ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ сообщСния. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ подлинности ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½Ρ‹Ρ… сообщСний ΠΏΡƒΡ‚Ρ‘ΠΌ сравнСния дайдТСста сообщСния с ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½Ρ‹ΠΌ. Π­Ρ‚Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ «ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ…Π΅ΡˆΠ°» (hashcheck).

На Π²Ρ…ΠΎΠ΄ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° поступаСт Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ…Π΅Ρˆ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΉΡ‚ΠΈ. Π”Π»ΠΈΠ½Π° сообщСния ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ любой (Π² Ρ‚ΠΎΠΌ числС Π½ΡƒΠ»Π΅Π²ΠΎΠΉ). Π—Π°ΠΏΠΈΡˆΠ΅ΠΌ Π΄Π»ΠΈΠ½Ρƒ сообщСния Π² L. Π­Ρ‚ΠΎ число Ρ†Π΅Π»ΠΎΠ΅ ΠΈ Π½Π΅ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅. ΠšΡ€Π°Ρ‚Π½ΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ числам Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π°. ПослС поступлСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ΄Ρ‘Ρ‚ процСсс ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΊ Π²Ρ‹Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΡΠΌ.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ 5 шагов Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°:

Π¨Π°Π³ 1. Π’Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠ°.

Π¨Π°Π³ 2. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ‹ сообщСния.

Π¨Π°Π³ 3. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ Π±ΡƒΡ„Π΅Ρ€Π°.

Π¨Π°Π³ 4. ВычислСниС Π² Ρ†ΠΈΠΊΠ»Π΅.

Π¨Π°Π³ 5. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ вычислСний.

1.3 Π’Ρ‹Π±ΠΎΡ€ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ ΡΠ·Ρ‹ΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ прилоТСния

ΠŸΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π±Ρ‹Π» ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ Π°Π½Π°Π»ΠΈΠ· Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌΡƒ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΡŽ, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±Ρ‹Π»ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Ρ‹ Π² Ρ‚рСбования ΠΊ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ:

простота ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса;

Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ… с Π²Π΅Ρ€ΡΠΈΠ΅ΠΉ ΠžΠ‘ Windows Π₯Π  ΠΈ Π²Ρ‹ΡˆΠ΅;

Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмой Windows;

Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΌΠ°Ρ‚СматичСскими опСрациями.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π±Ρ‹Π»ΠΎ принято Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ .NET, Ρ‚.ΠΊ. ΠΎΠ½Π° являСтся «Ρ€ΠΎΠ΄Π½ΠΎΠΉ» для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм сСмСйства Windows ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмой. .NET Framework — программная тСхнология ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Microsoft, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° для создания ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚ывания ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Она прСдоставляСт Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π½Π° ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π°Ρ…, ΠΌΠ½ΠΎΠ³ΠΎΡΠ·Ρ‹ΠΊΠΎΠ²ΡƒΡŽ срСду, которая позволяСт ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ прилоТСния с ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ ΠΈ ΡΠ΅Ρ€Π²ΠΈΡΠ°ΠΌΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ поколСния, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ развСртывания ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. .NET Framework состоит ΠΈΠ· Ρ‚Ρ€Π΅Ρ… основных частСй — общСязыковой срСды выполнСния, иСрархичСского мноТСства ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ классов ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π½ΠΎΠΉ вСрсии ASP, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ ASP.NET. Π’.ΠΊ. ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ. NET сущСствуСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΠΌΠΈ языками программирования Π²Ρ‹Π±ΠΎΡ€ Π±Ρ‹Π» сдСлан Π² ΠΏΠΎΠ»ΡŒΠ·Ρƒ языка C#, ΠΊΠ°ΠΊ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнного ΠΈ Ρ€Π°Π·Π²ΠΈΡ‚ΠΎΠ³ΠΎ языка Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

НСобходимо ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ прСдоставляСт ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° .NET. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅ создания ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΡƒΠ΄Π΅Π»ΠΈΡ‚ΡŒ большС внимания Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ ΠΏΠΎΠ»Π½ΠΎΡ‚Π΅ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

1.4 Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ возмоТности Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния

ΠžΡΠ½ΠΎΠ²Ρ‹Π²Π°ΡΡΡŒ Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π΅, Ρ‡Ρ‚ΠΎ для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΌ являСтся Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π²Ρ‹Π΄Π΅Π»ΠΈΠΌ основныС дСйствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ разрабатываСмая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°:

ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ носитСлСй ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΊ ΠžΠ‘;

ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ носитСля ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ;

Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы кластСров;

ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы кластСров.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, каТдая ΠΈΠ· Π²Ρ‹ΡˆΠ΅ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° для выполнСния задания ΠΊ ΠΊΡƒΡ€ΡΠΎΠ²ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ описанныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ каркасом прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ трСбованиям: ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Π΅ трСбования, ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса ΠΈ ΡƒΠ΄ΠΎΠ±ΡΡ‚Π²ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌ, ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ситуациях.

2 Π ΠΠ—Π ΠΠ‘ΠžΠ’ΠšΠ БВРУКВУРЫ И ΠΠ›Π“ΠžΠ Π˜Π’ΠœΠžΠ’ ΠŸΠ ΠžΠ“Π ΠΠœΠœΠ«

2.1 ЛогичСская структура интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

Для построСния прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌΡ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» ΠΈ ΠΏΡ€ΠΈΡΠΏΠΎΡΠΎΠ±Π»Π΅Π½ΠΎ ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Π±Ρ‹Π»ΠΎ принято Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ логичСски-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ нСсколькими ΠΎΠΊΠ½Π°ΠΌΠΈ прилоТСния. Π­Ρ‚ΠΎ обусловлСно Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π½Π°Π³Ρ€ΠΎΠΌΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ всСх Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… настроСк, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ² Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΎΠΊΠ½Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ΅ интСрфСйса ΠΈ Π½Π΅ΡƒΠ΄ΠΎΠ±ΡΡ‚Π²Ρƒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ.

Для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ интСрфСйса Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ структура ΠΎΠΊΠΎΠ½ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

1. ОсновноС ΠΎΠΊΠ½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ — список для Π²Ρ‹Π²ΠΎΠ΄Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… устройств памяти, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹Π±ΠΎΡ€Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ, тСкстовоС ΠΏΠΎΠ»Π΅ выводящСС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΌ устройствС, ΠΊΠ½ΠΎΠΏΠΊΠ° Π°Π½Π°Π»ΠΈΠ·Π°, тСкстовоС ΠΏΠΎΠ»Π΅ хранящСС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π½Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ‚ Π²Ρ‹Π±ΠΎΡ€Π°, для сравнСния, ΠΊΠ½ΠΎΠΏΠΊΠ° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ².

2. Окно ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² — ΠΈΠΌΠ΅Π΅Ρ‚ 2 ΠΊΠ½ΠΎΠΏΠΊΠΈ для запуска Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, 2 тСкстовых поля для Π²Ρ‹Π²ΠΎΠ΄Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² подсчСта, ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΈ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ поля для Π²Π²ΠΎΠ΄Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

Навигация ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠΊΠ½Π°ΠΌΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ стандартными срСдствами Windows, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ².

2.2 ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Π°Ρ организация отобраТСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± ΡƒΡΡ‚ройствах памяти ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Ρ… сумм

Учитывая Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ файловая систСма ΠžΠ‘ Windows являСтся иСрархичСской Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ…, объСм ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ достаточно Π²Π΅Π»ΠΈΠΊ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ срСдства для хранСния ΠΈ ΠΎΡ‚обраТСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π½Π΅ΠΉ.

Для этой Ρ†Π΅Π»ΠΈ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ прилоТСния Π±Ρ‹Π» создан класс HardDrive. Π”Π°Π½Π½Ρ‹ΠΉ класс ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΊΠ°ΠΊ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊ ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π΅Π΅ Π½Π° ΡΠΊΡ€Π°Π½Π΅ Π² Π²ΠΈΠ΄Π΅, ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΌ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Условно класс HardDrive Ρ…Ρ€Π°Π½ΠΈΡ‚ структуру ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ число Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… ΡƒΠ·Π»ΠΎΠ². Π’Π°ΠΊΠΆΠ΅ стоит ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ для измСнСния Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² Ρ„Π°ΠΉΠ»Π° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ использовался класс File ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ .NET.

2.3 Бтруктурная дСкомпозиция Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния

Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… возмоТностСй прилоТСния, описанных Π² ΠΏΡƒΠ½ΠΊΡ‚Π΅ 1.3 Π±Ρ‹Π»ΠΈ описан Π½Π°Π±ΠΎΡ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ· ΡΡ‚ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π±Ρ‹Π»ΠΈ описаны Π² ΠΊΠ»Π°ΡΡΠ΅ основного ΠΎΠΊΠ½Π° прилоТСния. Π”Π°Π»Π΅Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ этих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ с ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ дСйствий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚:

— private void Form1_Load (object sender, EventArgs e) — функция Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π°ΡΡΡ ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠΊΠ½ΠΎ ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅, Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ…ΠΎΡ‡Π΅Ρ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ информация ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ взятия ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π΅Π΅ Π² ΡΠΏΠΈΡΠΎΠΊ.

— private void GetHardDiskInfo () — функция считывания ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‰Π΅ΠΌ устройствС.

— private void AddHDDItemToListview () — функция Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‰Π°Ρ Π² ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ устройства.

— private void AddItemToListview (ListViewGroup GroupName, int IndexNumber, string ItemName, int ImageIndex, string ItemTAG) — функция Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‰Π°Ρ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρƒ HardDrive.

— private void WriteHDDText () — функция Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‰Π°Ρ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‰Π΅ΠΌ устройствС Π² Ρ‚СкстовоС ΠΏΠΎΠ»Π΅.

— private void listView1_SelectedIndexChanged (object sender, EventArgs e) — функция ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π°Ρ ΠΊΠ°ΠΊΠΎΠ΅ устройство ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Ρ‹Π±Ρ€Π°Π» Π² ΡΠΏΠΈΡΠΊΠ΅.

— private void button1_Click (object sender, EventArgs e) — функция ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π°Ρ дСйствиС ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ «ΠΠ½Π°Π»ΠΈΠ·».

— private void button2_Click (object sender, EventArgs e) — функция ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π°Ρ дСйствиС ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ «ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ».

— private void button1_Click (object sender, EventArgs e) — функция ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π°Ρ дСйствиС ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ «CRC32».

— public static uint CalculateCRC (System.IO.Stream stream) — функция Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‰Π°Ρ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы CRC32.

— private void button2_Click (object sender, EventArgs e) — функция ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π°Ρ дСйствиС ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ «MD5».

Π’Π°ΠΊΠΆΠ΅ созданы Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы MD5, пСрСчислСнныС Π½ΠΈΠΆΠ΅:

— private static void FF (ref UInt32 a, UInt32 b, UInt32 c, UInt32 d, UInt32 mj, int s, UInt32 ti)

— private static void GG (ref UInt32 a, UInt32 b, UInt32 c, UInt32 d, UInt32 mj, int s, UInt32 ti)

— private static void HH (ref UInt32 a, UInt32 b, UInt32 c, UInt32 d, UInt32 mj, int s, UInt32 ti)

— private static void II (ref UInt32 a, UInt32 b, UInt32 c, UInt32 d, UInt32 mj, int s, UInt32 ti)

— private static void MD5_Init ()

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

3. Π Π•ΠΠ›Π˜Π—ΠΠ¦Π˜Π― ΠŸΠ ΠžΠ“Π ΠΠœΠœΠ«

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ являСтся Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ курсового проСктирования Π±Ρ‹Π»ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ Π‘# ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ .NET. ΠŸΡ€ΠΈ написании ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±Ρ‹Π» использован ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄: Π±Ρ‹Π»ΠΈ созданы ΠΈ ΠΎΠΏΠΈΡΠ°Π½Ρ‹ Π΄Π²Π° класса, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² ΡΠ΅Π±Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΎΠΊΠΎΠ½ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ — Form1, Form2, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ MessageBox ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‰Π΅Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π½Π° Π΄ΠΎΡΡ‚ΡƒΠΏ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ.

MessageBox Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠΊΠ½Π° с ΠΏΠΎΠ΄Ρ‚Π²Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ, Π½Π° Π·Π΄ΠΎΡΡ‚ΡƒΠΏ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΊ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Π’ΠΈΠ΄ ΠΎΠΊΠ½Π° прСдставлСн Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 3.1.

Рисунок 3.1 — Π’ΠΈΠ΄ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° подтвСрТдСния

MessageBox ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ, которая Π½Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… объяснСний, поэтому Π΅Π³ΠΎ ΠΊΠΎΠ΄ Π½Π΅ ΠΎΠΏΠΈΡΡ‹Π²Π°Π΅Ρ‚ся Π² ΠΏΠΎΡΡΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ запискС.

2.4 ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Π°Ρ рСализация класса Form1

Класс Form1 описываСт ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ основного ΠΎΠΊΠ½Π° прилоТСния, внСшний Π²ΠΈΠ΄ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ прСдставлСн Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 3.2.

Как Π²ΠΈΠ΄Π½ΠΎ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 3.2, основноС ΠΎΠΊΠ½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ прилоТСния ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ сумма Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² ΡΠ΅Π±Ρ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ элСмСнты:

— ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… устройств хранСния Π΄Π°Π½Π½Ρ‹Ρ…, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ HDDGroup. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ списка производится Π²Ρ‹Π±ΠΎΡ€ устройства;

— Ρ‚СкстовоС ΠΏΠΎΠ»Π΅ отобраТСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ richTextBox1;

— Ρ‚СкстовоС ΠΏΠΎΠ»Π΅ отобраТСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΈ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡ, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ richTextBox2;

— ΠΊΠ½ΠΎΠΏΠΊΡƒ для Π°Π½Π°Π»ΠΈΠ·Π° (Анализ);

— ΠΊΠ½ΠΎΠΏΠΊΡƒ запуска ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² (ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ);

— ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ элСмСнты управлСния ΠΎΠΊΠ½ΠΎΠΌ Π² ΠžΠ‘ сСмСйств Windows.

Рисунок 3.2 — Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Π²ΠΈΠ΄ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° прилоТСния ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ событий ΠΈ Ρ‡Π»Π΅Π½Ρ‹ класса Form1

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²-Ρ‡Π»Π΅Π½ΠΎΠ² класса Form1 осущСствляСтся Π² ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Π΅ класса. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΊΠΎΠ΄ конструктора с ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ариями:

public Form1() {

//инициализация ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° — Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° для создания ΠΎΠΊΠ½Π°

InitializeComponent ();

}

Π’Π°ΠΊΠΆΠ΅ нСсколько ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² класса Form1, ΠΊΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ событий: Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ, Ρ€Π°Π±ΠΎΡ‚Π° с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Π°Ρ рСализация Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ private void AddHDDItemToListview ()

Данная функция добавляСт Π² ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ устройства. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΊΠΎΠ΄ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

private void AddHDDItemToListview ()

{

//Makes the Search group:…

ListViewGroup HDDGroup = new ListViewGroup ();

HDDGroup.Header = «HardDrive (s) :» ;

HDDGroup.HeaderAlignment = HorizontalAlignment. Left;

HDDGroup.Name = «HardDrive (s)» ;

//Adds the search group…

listView1.Groups.Add (HDDGroup);

int i = 0;

foreach (HardDrive x in hdCollection)

{ AddItemToListview (HDDGroup, i, x.Model.ToString (), 0, «1»);

i++; }

HDDGroup = null; }

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Π°Ρ рСализация Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ private void AddItemToListview (ListViewGroup GroupName, int IndexNumber, string ItemName, int ImageIndex, string ItemTAG)

Данная функция добавляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρƒ HardDrive. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΊΠΎΠ΄ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

private void AddItemToListview (ListViewGroup GroupName, int IndexNumber, string ItemName, int ImageIndex, string ItemTAG)

{ ListViewItem NewItem = new ListViewItem ();

ListViewItem.ListViewSubItem NewSubItem = new ListViewItem. ListViewSubItem ();

NewSubItem.Text = IndexNumber. ToString ();

NewSubItem.Name = «Subitem1» ;

NewItem.SubItems.Add (NewSubItem);

NewItem.SubItems.Add (NewSubItem);

NewItem.Name = ItemName;

NewItem.Text = ItemName;

NewItem.Group = GroupName;

NewItem.ImageIndex = ImageIndex;

NewItem.Tag = ItemTAG;

listView1.Items.Add (NewItem);

NewItem = null;

NewSubItem = null;

// Group = null; }

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Π°Ρ рСализация Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ private void private void listView1_SelectedIndexChanged (object sender, EventArgs e)

Данная функция опрСдСляСт ΠΊΠ°ΠΊΠΎΠ΅ устройство ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Ρ‹Π±Ρ€Π°Π» Π² ΡΠΏΠΈΡΠΊΠ΅. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΊΠΎΠ΄ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

private void listView1_SelectedIndexChanged (object sender, EventArgs e)

{ int selected_index;

try {

//MessageBox.Show (listView1.SelectedItems[0]. Tag. ToString ());

selected_index = listView1. SelectedItems[0]. Index;

switch (listView1.SelectedItems[0]. Tag. ToString ())

{ case «1» :

WriteHDDText ();

break; } }

catch (Exception)

{ //Do nothing } }

2.5 ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Π°Ρ рСализация класса Form2

ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ сумма кластСр Класс Form2 описываСт ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° прилоТСния, внСшний Π²ΠΈΠ΄ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ прСдставлСн Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 3.3.

Рисунок 3.3 — Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Π²ΠΈΠ΄ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° прилоТСния Как Π²ΠΈΠ΄Π½ΠΎ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 3.3, Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ прилоТСния ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ сумма Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² ΡΠ΅Π±Ρ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ элСмСнты:

— Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ тСкстовых поля для Π²Π²ΠΎΠ΄Π° ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² формирования ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы кластСров, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ textBox1, textBox2, textBox3, textBox4 ;

— ΠΊΠ½ΠΎΠΏΠΊΡƒ для запуска ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° CRC32(ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ CRC32);

— ΠΊΠ½ΠΎΠΏΠΊΡƒ для запуска ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° MD5 (ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ MD5);

— ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ элСмСнты управлСния ΠΎΠΊΠ½ΠΎΠΌ Π² ΠžΠ‘ сСмСйств Windows.

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ событий ΠΈ Ρ‡Π»Π΅Π½Ρ‹ класса Form2

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²-Ρ‡Π»Π΅Π½ΠΎΠ² класса Form2 осущСствляСтся Π² ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Π΅ класса. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΊΠΎΠ΄ конструктора с ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ариями:

public Form2() {

//инициализация ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° — Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° для создания ΠΎΠΊΠ½Π°

InitializeComponent ();

}

Π’Π°ΠΊΠΆΠ΅ нСсколько ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² класса Form2, ΠΊΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ событий: Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ, Ρ€Π°Π±ΠΎΡ‚Π° с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Π°Ρ рСализация ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° сообщСний private void button1_Click (object sender, EventArgs e)

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ дСйствиС ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ «CRC32». Код ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π½ΠΈΠΆΠ΅.

private void button1_Click (object sender, EventArgs e)

{ // Π§ΠΈΡ‚Π°Π΅ΠΌ

System.IO.FileStream stream1 = System.IO.File.OpenRead (textBox1.Text.ToString ());

textBox3.Text=(string.Format («{0:X}», CalculateCRC (stream1))).ToString ();}

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Π°Ρ рСализация Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ public static uint CalculateCRC (System.IO.Stream stream)

Данная функция Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ формирования ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы CRC32. Код Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π½ΠΈΠΆΠ΅ с ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ариями.

public static uint CalculateCRC (System.IO.Stream stream)

{ const int buffer_size = 1024;

const uint POLYNOMIAL = 0xEDB88320;

uint result = 0xFFFFFFFF;

uint Crc32;

byte[] buffer = new byte[buffer_size];

uint[] table_CRC32 = new uint[256];

unchecked

{ // Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ°Π·Π°Ρ†ΠΈΡ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹

for (int i = 0; i < 256; i++)

{ Crc32 = (uint)i;

for (int j = 8; j > 0; j—)

{ if ((Crc32 & 1)==1)

Crc32 = (Crc32 >> 1) ^ POLYNOMIAL;

else

Crc32 >>= 1; }

table_CRC32[i] = Crc32; }

// Π§Ρ‚Π΅Π½ΠΈΠ΅ ΠΈΠ· Π±ΡƒΡ„Π΅Ρ€Π°

int count = stream. Read (buffer, 0, buffer_size);

// ВычислСниС CRC

while (count > 0)

{ for (int i = 0; i < count; i++)

{ result = ((result) >> 8)

^ table_CRC32[(buffer[i])

^ ((result) & 0×00FF)]; }

count = stream. Read (buffer, 0, buffer_size); } }

return ~result; }

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Π°Ρ рСализация ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° сообщСний private void button2_Click (object sender, EventArgs e)

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ дСйствиС ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ «ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° MD5». Π’Π°ΠΊΠΆΠ΅ мостит Π² ΡΠ΅Π±Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ формирования ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы MD5 ΠΈ Π²ΡΠ΅ ΠΏΡ€ΠΈΠ»Π°Π³Π°ΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Код ΠΈΠ·-Π·Π° большого объСма Π½Π΅ ΠΎΠΏΠΈΡΡ‹Π²Π°Π΅Ρ‚ся, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² ΠΎΠ±Ρ‰Π΅ΠΌ ΠΊΠΎΠ΄Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π‘.

3. Π’Π•Π‘Π’Π˜Π ΠžΠ’ΠΠΠ˜Π• ΠŸΠ ΠžΠ“Π ΠΠœΠœΠ« И Π Π£ΠšΠžΠ’ΠžΠ”Π‘Π’Π’Πž ΠŸΠžΠ›Π¬Π—ΠžΠ’ΠΠ’Π•Π›Π―

3.1 ВСстированиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Π’ Ρ…ΠΎΠ΄Π΅ выполнСния задания курсового проСктирования Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΎ тСстированиС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ тСстирования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±Ρ‹Π»ΠΈ установлСны ΠΊΠ°ΠΊ нСдостатки Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ², Ρ‚Π°ΠΊ ΠΈ Π½Π΅ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎ ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠ°ΠΊ-Ρ‚ΠΎ:

— Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ ΠΏΡ€Π°Π² администратора;

— Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ измСнСния кластСра с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ прямого доступа, Π° ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅;

— ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΏΡ€ΡΠΌΡ‹ΠΌ доступом, связанныС с Π½ΠΎΠ²Ρ‹ΠΌΠΈ Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΌΠΈ ограничСниями Π² ΠžΠ‘ Windows 7.

ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Π΅ нСдостатки Π±Ρ‹Π»ΠΈ исправлСны ΠΊΠ°ΠΊ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° (Ссли Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ), Ρ‚Π°ΠΊ ΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

Π’Π°ΠΊΠΆΠ΅ Π²ΠΎ Π²Ρ€Π΅ΠΌΡ тСстирования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±Ρ‹Π»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ трСбования ΠΊ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΡŽ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌΡƒ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΡŽ для использования Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°:

ОБ Windows XP, процСссор Pentium IV 1 Π“Π“Ρ†, ΠžΠ—Π£ 128 Мб, 100 KB ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ³ΠΎ мСста Π½Π° ΠΆΠ΅ΡΡ‚ΠΊΠΎΠΌ дискС, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° .NET Framework 4.0 ΠΈ Π²Ρ‹ΡˆΠ΅.

3.2 Руководство ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

ПослС запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΡΠΊΡ€Π°Π½Π΅ отобраТаСтся ΠΎΠΊΠ½ΠΎ со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ элСмСнтами:

— ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… устройств хранСния Π΄Π°Π½Π½Ρ‹Ρ…. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ списка производится Π²Ρ‹Π±ΠΎΡ€ устройства, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ;

— Ρ‚СкстовоС ΠΏΠΎΠ»Π΅ отобраТСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± ΡƒΡΡ‚ройствС ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ сумма кластСров;

— Ρ‚СкстовоС ΠΏΠΎΠ»Π΅ отобраТСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΈ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡ;

— ΠΊΠ½ΠΎΠΏΠΊΠ° для Π°Π½Π°Π»ΠΈΠ·Π° (Анализ), Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΡƒΠ΅Ρ‚ Π²Ρ‚ΠΎΡ€ΠΎΠ΅ тСкстовоС ΠΏΠΎΠ»Π΅;

— ΠΊΠ½ΠΎΠΏΠΊΠ° запуска ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² (ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ);

— Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ тСкстовых поля для Π²Π²ΠΎΠ΄Π° ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² формирования ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы кластСров;

— ΠΊΠ½ΠΎΠΏΠΊΠ° для запуска ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° CRC32(ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ CRC32);

— ΠΊΠ½ΠΎΠΏΠΊΠ° для запуска ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° MD5 (ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ MD5);

Π’Π«Π’ΠžΠ”Π«

Π’ΠΎ Π²Ρ€Π΅ΠΌΡ выполнСния задания Π±Ρ‹Π»ΠΈ Π·Π°ΠΊΡ€Π΅ΠΏΠ»Π΅Π½Ρ‹ Π½Π°Π²Ρ‹ΠΊΠΈ использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ .NET Framework, ΡƒΠ³Π»ΡƒΠ±Π»Π΅Π½Ρ‹ знания Π² ΡΠ·Ρ‹ΠΊΠ΅ C# ΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΠΎΠ΄ ΠžΠ‘ сСмСйства Windows.

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

Π’ Ρ‡Π°ΡΡ‚ности, Π±Ρ‹Π»ΠΈ Ρ€Π΅ΡˆΠ΅Π½Ρ‹ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ вывСдСния Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π½Π° ΡΠΊΡ€Π°Π½. Π’Π°ΠΊΠΆΠ΅ Π±Ρ‹Π»ΠΈ Ρ€Π΅ΡˆΠ΅Π½Ρ‹ Π·Π°Π΄Π°Ρ‡ΠΈ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ Π½ΡƒΠΆΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС ΠΈ Π΅Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… Π² ΠžΠ‘ Windows, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΊ Ρ„ΠΎΡ€ΠΌΠ΅, ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния курсового ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π±Ρ‹Π»ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ .NET Framework — ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ѐормирования ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы ΠΊΠ»Π°Ρ‚Π΅Ρ€ΠΎΠ².

МоТно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ поставлСнноС ΠΏΡ€ΠΈ курсовом ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π·Π°Π΄Π°Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ.

НСдостатками Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ срСдства ΡΠ²Π»ΡΡŽΡ‚ΡΡ:

— Π½Π΅Π΄ΠΎΡΡ‚аточная Π³Π°Ρ€ΠΌΠΎΠ½ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ графичСской ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°;

— Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΠ΅ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ прилоТСния Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ… с ΠΌΠ°Π»Ρ‹ΠΌ объСмом ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти;

— Ρ‚рСбования ΠΊ ΠΏΡ€Π΅Π΄ΡƒΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠΌ ΠŸΠž (Π² Ρ‡Π°ΡΡ‚ности .NET Framework 4.0)

Π”Π°Π½Π½Ρ‹Π΅ нСдостатки ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π±Ρ‹Ρ‚ΡŒ исправлСны ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΈΡ… Π·Π½Π°Π½ΠΈΠΉ ΠΈ Π½Π°Π²Ρ‹ΠΊΠΎΠ² Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π°.

БПИБОК Π˜Π‘ΠŸΠžΠ›Π¬Π—ΠžΠ’ΠΠΠΠ«Π₯ Π˜Π‘Π’ΠžΠ§ΠΠ˜ΠšΠžΠ’

1. CLR via C#. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Microsoft .NET Framework 2.0 Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ C#. ΠœΠ°ΡΡ‚Π΅Ρ€-класс./ ΠŸΠ΅Ρ€. Ρ Π°Π½Π³Π». — Πœ.: Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ «Π ΡƒΡΡΠΊΠ°Ρ рСдакция»; БПб.: ΠŸΠΈΡ‚Π΅Ρ€, 2007. — 656 с.

2. Π‘# Π² ΠΏΠΎΠ΄Π»ΠΈΠ½Π½ΠΈΠΊΠ΅: ΠŸΠ΅Ρ€. Ρ Π°Π½Π³Π»./ Π”Π΅ΠΉΡ‚Π΅Π» Π₯., Π”Π΅ΠΉΡ‚Π΅Π» П., Листфиолд Π”ΠΆ., НиСто Π’., Π™Π΅Π³Π΅Ρ€ Π¨., Π—Π»Π°Ρ‚ΠΊΠΈΠ½Π° М. — Π‘Пб. Π– Π‘Π₯Π’-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³, 2006. — 1056 с.

3. http://msdn.microsoft.com/

4. http://intuit.ru/

5. http://windxp.ru/

6. Π”Π‘Π’Π£ 3008−95 «Π—Π’Π†Π’И Π£ Π‘Π€Π•Π Π† НАУКИ Π† Π’Π•Π₯ΠΠ†ΠšΠ˜. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Ρ‚Π° ΠΏΡ€Π°Π²ΠΈΠ»Π° оформлСння» .

ΠŸΠ Π˜Π›ΠžΠ–Π•ΠΠ˜Π• А

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ «Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы кластСров»

Рисунок 1 — Π’Π½ΠΈΡˆΠ½ΠΈΠΉ Π²ΠΈΠ΄ Π΄ΠΈΠΎΠ»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ΠΏΠ΅Ρ€Π΅Π΄ запуском сомой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Рисунок 2 — Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Π²ΠΈΠ΄ Π³Π»Π°Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Рисунок 3 — ΠŸΡ€ΠΈΠΌΠ΅Ρ€ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Рисунок 4 — ΠŸΡ€ΠΈΠΌΠ΅Ρ€ выполнСния ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ

ΠŸΠ Π˜Π›ΠžΠ–Π•ΠΠ˜Π• Π‘

Код прилоТСния «Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы кластСров»

//Form1.cs

using System;

using System.Collections.Generic;

using System. ComponentModel;

using System. Data;

using System. Drawing;

using System. Linq;

using System. Text;

using System.Windows.Forms;

using System. Collections;

using System. Management;

using Microsoft. Win32;

namespace kurs_pogulyat

{

public partial class Form1: Form

{

public Form1()

{

InitializeComponent ();

}

ArrayList hdCollection = new ArrayList ();

int Num_Hdd = 0;

double TotalSize = 0;

double TotalSpaceLeft = 0;

bool analiz = false;

bool OSXP = false;

private void Form1_Load (object sender, EventArgs e)

{

if (MessageBox.Show («Start getting info? nThis may take a while, so please stand by.», «Notice», MessageBoxButtons. YesNo, MessageBoxIcon. Information) == DialogResult. No)

{

this.Close ();

}

else

{

//AddGeneralinfoTolistview ();

GetHardDiskInfo ();

AddHDDItemToListview ();

}

}

private void GetHardDiskInfo ()

{

#region HDD_Collction of Infomation

hdCollection.Clear ();

Num_Hdd = 0;

TotalSize = 0;

TotalSpaceLeft = 0;

ManagementObjectSearcher searcher = new

ManagementObjectSearcher («SELECT * FROM Win32_DiskDrive»);

foreach (ManagementObject wmi_HD in searcher. Get ())

{

HardDrive hd = new HardDrive ();

#region hd. Model

try

{

hd.Model = wmi_HD[" Model" ]. ToString ();

}

catch (Exception)

{

hd.Model = «Unknown» ;

}

#endregion

#region hd. Type

try

{

hd.Type = wmi_HD[" InterfaceType" ]. ToString ();

}

catch (Exception)

{

hd.Type = «Unknown» ;

}

#endregion

#region hd. BytesPerSector

try

{

hd.BytesPerSector = wmi_HD[" BytesPerSector" ]. ToString ();

}

catch (Exception)

{

hd.BytesPerSector = «Unknown» ;

}

#endregion

#region hd. MediaType

try

{

hd.MediaType = wmi_HD[" MediaType" ]. ToString ();

}

catch (Exception)

{

hd.MediaType = «Unknown» ;

}

#endregion

#region hd. Partitions

try

{

hd.Partitions = wmi_HD[" Partitions" ]. ToString ();

}

catch (Exception)

{

hd.Partitions = «Unknown» ;

}

#endregion

#region hd. SectorsPerTrack

try

{

hd.SectorsPerTrack = wmi_HD[" SectorsPerTrack" ]. ToString ();

}

catch (Exception)

{

hd.SectorsPerTrack = «Unknown» ;

}

#endregion

#region hd. Signature

try

{

hd.Signature = wmi_HD[" Signature" ]. ToString ();

}

catch (Exception)

{

hd.Signature = «Unknown» ;

}

#endregion

#region hd. size

try

{

hd.Size = wmi_HD[" Size" ]. ToString ();

}

catch (Exception)

{

hd.Size = «0» ;

}

#endregion

#region hd. Status

try

{

hd.Status = wmi_HD[" Status" ]. ToString ();

}

catch (Exception)

{

hd.Status = «Unknown» ;

}

#endregion

#region hd. TotalCylonders

try

{

hd.TotalCylinders = wmi_HD[" TotalCylinders" ]. ToString ();

}

catch (Exception)

{

hd.TotalCylinders = «Unknown» ;

}

#endregion

#region hd. TotalHeads

try

{

hd.TotalHeads = wmi_HD[" TotalHeads" ]. ToString ();

}

catch (Exception)

{

hd.TotalHeads = «Unknown» ;

}

#endregion

#region hd. TotalSectors

try

{

hd.TotalSectors = wmi_HD[" TotalSectors" ]. ToString ();

}

catch (Exception)

{

hd.TotalSectors = «Unknown»; }

#endregion

#region hd. TotalTracks

try

{

hd.TotalTracks = wmi_HD[" TotalTracks" ]. ToString (); }

catch (Exception)

{

hd.TotalTracks = «Unknown»; }

#endregion

#region hd. TracksPerCylinder

try

{

hd.TracksPerCylinder = wmi_HD[" TracksPerCylinder" ]. ToString (); }

catch (Exception)

{

hd.TracksPerCylinder = «Unknown»; }

#endregion

#region hd. SeralNo

if (OSXP ≠ true)

{

try

{

hd.SerialNo = wmi_HD[" SerialNumber" ]. ToString (); }

catch (Exception)

{

hd.SerialNo = «Unknown» ;

} }

else

{ }

#endregion

#region hd. FirmwareRevision

try

{

hd.FirmwareRevision = wmi_HD[" FirmwareRevision" ]. ToString (); }

catch (Exception)

{

hd.FirmwareRevision = ««; }

#endregion

hdCollection.Add (hd);

hd = null;

Num_Hdd = Num_Hdd + 1;

TotalSize = TotalSize + double. Parse (wmi_HD[" Size" ]. ToString ());

}

#region //Getting HDD’s serial under XP

if (OSXP == true)

{

searcher = new

ManagementObjectSearcher («SELECT * FROM Win32_PhysicalMedia»);

int i = 0;

foreach (ManagementObject wmi_HD in searcher. Get ())

{

// get the hard drive from collection

// using index

HardDrive hd = (HardDrive)hdCollection[i];

// get the hardware serial no.

if (wmi_HD[" SerialNumber" ] == null)

hd.SerialNo = «None» ;

else

hd.SerialNo = wmi_HD[" SerialNumber" ]. ToString ();

++i;

}

}

#endregion

searcher = new

ManagementObjectSearcher («SELECT * FROM Win32_LogicalDisk»);

foreach (ManagementObject wmi_HD in searcher. Get ())

{

// get how much Freespace the HDD have left…

if (wmi_HD[" FreeSpace" ] == null)

{

//do nothing

}

else

{

if (wmi_HD[" DriveType" ]. ToString () == «3»)

{

TotalSpaceLeft += double. Parse (wmi_HD[" FreeSpace" ]. ToString ());

}

}

}

// HDD_info_Done = true;

searcher = null;

#endregion

}

private void AddHDDItemToListview ()

{

//Makes the Search group:…

ListViewGroup HDDGroup = new ListViewGroup ();

HDDGroup.Header = «HardDrive (s) :» ;

HDDGroup.HeaderAlignment = HorizontalAlignment. Left;

HDDGroup.Name = «HardDrive (s)» ;

//Adds the search group…

listView1.Groups.Add (HDDGroup);

int i = 0;

foreach (HardDrive x in hdCollection)

{

AddItemToListview (HDDGroup, i, x.Model.ToString (), 0, «1»);

i++; }

HDDGroup = null; }

private void AddItemToListview (ListViewGroup GroupName, int IndexNumber, string ItemName, int ImageIndex, string ItemTAG)

{

ListViewItem NewItem = new ListViewItem ();

ListViewItem.ListViewSubItem NewSubItem = new ListViewItem. ListViewSubItem ();

NewSubItem.Text = IndexNumber. ToString ();

NewSubItem.Name = «Subitem1» ;

NewItem.SubItems.Add (NewSubItem);

NewItem.SubItems.Add (NewSubItem);

NewItem.Name = ItemName;

NewItem.Text = ItemName;

NewItem.Group = GroupName;

NewItem.ImageIndex = ImageIndex;

NewItem.Tag = ItemTAG;

listView1.Items.Add (NewItem);

NewItem = null;

NewSubItem = null;

// Group = null; }

private void WriteHDDText ()

{

HardDrive Hd = null;

bool fail = false;

try

{

Hd = (HardDrive)hdCollection[int.Parse (listView1.SelectedItems[0]. SubItems[1].Text)]; }

catch (Exception)

{

Hd = null;

fail = true; }

if (fail ≠ true)

{

Hd = (HardDrive)hdCollection[int.Parse (listView1.SelectedItems[0]. SubItems[1].Text)];

double size_temp = double. Parse (Hd.Size);

if (analiz == false)

{

richTextBox1.Clear ();

richTextBox1.Text = («n» +

" Model: n" +

" ————————————————————————————n" +

" Model: «+ Hd.Model.ToString () + «n» +

" Type: «+ Hd.Type.ToString () + «n» +

" Serial No.: «+ Hd.SerialNo.ToString () + «n» +

" Firmware Revision: «+ Hd.FirmwareRevision.ToString () + «n» +

" n" +

" Characteristics: n" +

" ————————————————————————————n" +

" Media Type: «+ Hd.MediaType.ToString () + «n» +

" Partitions: «+ Hd.Partitions.ToString () + «n» +

" Signature: «+ Hd.Signature.ToString () + «n» +

" Size: «+ Hd.Size.ToString () + «Byte («+ Math. Round ((((size_temp / 1024) / 1024) / 1024), 2) + «GB)» + «n» +

" n" +

" Status: «+ Hd.Status.ToString () + «n» +

" n" +

" Tracks: n" +

" ————————————————————————————n" +

" Total Cylinders: «+ Hd.TotalCylinders.ToString () + «n» +

" Total Heads: «+ Hd.TotalHeads.ToString () + «n» +

" Total Sectors: «+ Hd.TotalSectors.ToString () + «n» +

" Total Tracks: «+ Hd.TotalTracks.ToString () + «n» +

" Bytes Pr. Sector: «+ Hd.BytesPerSector.ToString () + «n» +

" Sector Pr. Tracks: «+ Hd.SectorsPerTrack.ToString () + «n» +

" Tracks Pr. Cylinder: «+ Hd.TracksPerCylinder.ToString () + «n»

); }

else

{

richTextBox2.Clear ();

richTextBox2.Text = («n» +

" Model: n" +

" ————————————————————————————n" +

" Model: «+ Hd.Model.ToString () + «n» +

" Type: «+ Hd.Type.ToString () + «n» +

" Serial No.: «+ Hd.SerialNo.ToString () + «n» +

" Firmware Revision: «+ Hd.FirmwareRevision.ToString () + «n» +

" n" +

" Characteristics: n" +

" ————————————————————————————n" +

" Media Type: «+ Hd.MediaType.ToString () + «n» +

" Partitions: «+ Hd.Partitions.ToString () + «n» +

" Signature: «+ Hd.Signature.ToString () + «n» +

" Size: «+ Hd.Size.ToString () + «Byte («+ Math. Round ((((size_temp / 1024) / 1024) / 1024), 2) + «GB)» + «n» +

" n" +

" Status: «+ Hd.Status.ToString () + «n» +

" n" +

" Tracks: n" +

" ————————————————————————————n" +

" Total Cylinders: «+ Hd.TotalCylinders.ToString () + «n» +

" Total Heads: «+ Hd.TotalHeads.ToString () + «n» +

" Total Sectors: «+ Hd.TotalSectors.ToString () + «n» +

" Total Tracks: «+ Hd.TotalTracks.ToString () + «n» +

" Bytes Pr. Sector: «+ Hd.BytesPerSector.ToString () + «n» +

" Sector Pr. Tracks: «+ Hd.SectorsPerTrack.ToString () + «n» +

" Tracks Pr. Cylinder: «+ Hd.TracksPerCylinder.ToString () + «n»

); }

size_temp = 0;

}

Hd = null;

}

private void listView1_SelectedIndexChanged (object sender, EventArgs e)

{

int selected_index;

try

{

//MessageBox.Show (listView1.SelectedItems[0]. Tag. ToString ());

selected_index = listView1. SelectedItems[0]. Index;

switch (listView1.SelectedItems[0]. Tag. ToString ())

{

case «1» :

WriteHDDText ();

break;

} }

catch (Exception)

{

//Do nothing

} }

private void button1_Click (object sender, EventArgs e)

{

if (analiz == false)

analiz = true;

else

analiz = false;

GetHardDiskInfo ();

WriteHDDText ();

}

private void button2_Click (object sender, EventArgs e)

{

Form2 f2 = new Form2();

f2.Show ();

}

}

}

//Form2.cs

using System;

using System.Collections.Generic;

using System. ComponentModel;

using System. Data;

using System. Drawing;

using System. Linq;

using System. Text;

using System.Windows.Forms;

using System. IO;

using System. Collections;

namespace kurs_pogulyat

{

public partial class Form2: Form

{

public Form2()

{

InitializeComponent ();

}

//CRC 32

private void button1_Click (object sender, EventArgs e)

{

// Π§ΠΈΡ‚Π°Π΅ΠΌ Ρ„Π°ΠΉΠ» test. txt

System.IO.FileStream stream1 = System.IO.File.OpenRead (textBox1.Text.ToString ());

textBox3.Text=(string.Format («{0:X}», CalculateCRC (stream1))).ToString ();

}

/// ВычислСниС CRC32

public static uint CalculateCRC (System.IO.Stream stream)

{

const int buffer_size = 1024;

const uint POLYNOMIAL = 0xEDB88320;

uint result = 0xFFFFFFFF;

uint Crc32;

byte[] buffer = new byte[buffer_size];

uint[] table_CRC32 = new uint[256];

unchecked

{

// Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ°Π·Π°Ρ†ΠΈΡ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹

for (int i = 0; i < 256; i++)

{

Crc32 = (uint)i;

for (int j = 8; j > 0; j—)

{

if ((Crc32 & 1)==1)

Crc32 = (Crc32 >> 1) ^ POLYNOMIAL;

else

Crc32 >>= 1;

}

table_CRC32[i] = Crc32;

}

// Π§Ρ‚Π΅Π½ΠΈΠ΅ ΠΈΠ· Π±ΡƒΡ„Π΅Ρ€Π°

int count = stream. Read (buffer, 0, buffer_size);

// ВычислСниС CRC

while (count > 0)

{

for (int i = 0; i < count; i++)

{

result = ((result) >> 8)

^ table_CRC32[(buffer[i])

^ ((result) & 0×00FF)];

}

count = stream. Read (buffer, 0, buffer_size);

}

}

return ~result;

}

//MD5

private void button2_Click (object sender, EventArgs e)

{

textBox4.Text = MD5File (textBox2.Text.ToString ()).ToString ();

}

//статичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅

private static UInt32 A;

private static UInt32 B;

private static UInt32 C;

private static UInt32 D;

//Π½ΠΎΠΌΠ΅Ρ€ Π±ΠΈΡ‚Π° сдвиг

private const int S11 = 7;

private const int S12 = 12;

private const int S13 = 17;

private const int S14 = 22;

private const int S21 = 5;

private const int S22 = 9;

private const int S23 = 14;

private const int S24 = 20;

private const int S31 = 4;

private const int S32 = 11;

private const int S33 = 16;

private const int S34 = 23;

private const int S41 = 6;

private const int S42 = 10;

private const int S43 = 15;

private const int S44 = 21;

/* сдвиги

r[ 0.15] := {7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22}

r[16.31] := {5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20}

r[32.47] := {4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23}

r[48.63] := {6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21}*/

/* F, G, H ΠΈ I ΠΎΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° вычислСния MD5

F (X, Y, Z) =(X&Y)|((~X)&Z)

G (X, Y, Z) =(X&Z)|(Y&(~Z))

H (X, Y, Z) =X^Y^Z

I (X, Y, Z)=Y^(X|(~Z))

*/

private static UInt32 F (UInt32 x, UInt32 y, UInt32 z)

return (x & y)

private static UInt32 G (UInt32 x, UInt32 y, UInt32 z)

return (x & z)

private static UInt32 H (UInt32 x, UInt32 y, UInt32 z)

{

return x ^ y ^ z;

}

private static UInt32 I (UInt32 x, UInt32 y, UInt32 z)

(~z));

// FF, GG, HH, ΠΈ II прСобразоания для Ρ€Π°ΡƒΠ½Π΄ΠΎΠ² 1, 2, 3, ΠΈ 4.

private static void FF (ref UInt32 a, UInt32 b, UInt32 c, UInt32 d, UInt32 mj, int s, UInt32 ti)

a = a + F (b, c, d) + mj + ti;

a = a << s

private static void GG (ref UInt32 a, UInt32 b, UInt32 c, UInt32 d, UInt32 mj, int s, UInt32 ti)

a >> (32 — s);

a += b;

private static void HH (ref UInt32 a, UInt32 b, UInt32 c, UInt32 d, UInt32 mj, int s, UInt32 ti)

a >> (32 — s);

a += b;

private static void II (ref UInt32 a, UInt32 b, UInt32 c, UInt32 d, UInt32 mj, int s, UInt32 ti)

a >> (32 — s);

a += b;

private static void MD5_Init ()

{

A = 0×67 452 301; //Π² памяти 0×1 234 567

B = 0xefcdab89; //Π² памяти, 0×89abcdef

C = 0×98badcfe; //Π² памяти, 0xfedcba98

D = 0×10 325 476; //Π² памяти, 0×76 543 210

}

private static UInt32[] MD5_Append (byte[] input)

{

int zeros = 0;

int ones = 1;

int size = 0;

int n = input. Length;

int m = n % 64; //остаток ΠΎΡ‚ Π΄Π΅Π»Π΅Π½ΠΈΡ

if (m < 56)

{

zeros = 55 — m;

size = n — m + 64;

}

else

{

zeros = 63 — m + 56;

size = n + 64 — m + 64;

}

ArrayList bs = new ArrayList (input);

if (ones == 1)

{

bs.Add ((byte)0×80); // 0×80 = $ 10 000 000

}

for (int i = 0; i < zeros; i++)

{

bs.Add ((byte)0);

}

UInt64 N = (UInt64)n * 8;

byte h1 = (byte)(N & 0xFF);

byte h2 = (byte)((N >> 8) & 0xFF);

byte h3 = (byte)((N >> 16) & 0xFF);

byte h4 = (byte)((N >> 24) & 0xFF);

byte h5 = (byte)((N >> 32) & 0xFF);

byte h6 = (byte)((N >> 40) & 0xFF);

byte h7 = (byte)((N >> 48) & 0xFF);

byte h8 = (byte)(N >> 56);

bs.Add (h1);

bs.Add (h2);

bs.Add (h3);

bs.Add (h4);

bs.Add (h5);

bs.Add (h6);

bs.Add (h7);

bs.Add (h8);

byte[] ts = (byte[])bs.ToArray (typeof (byte));

// Π”Π΅ΠΊΠΎΠ΄ΠΈΠ½Π³ input (byte[]) Π² output (UInt32[])

UInt32[] output = new UInt32[size / 4];

for (Int64 i = 0, j = 0; i < size; j++, i += 4)

output[j] = (UInt32)(ts[i]

return output;

}

private static UInt32[] MD5_Trasform (UInt32[] x)

{

UInt32 a, b, c, d;

for (int k = 0; k < x. Length; k += 16)

{

a = A;

b = B;

c = C;

d = D;

/* Π Π°ΡƒΠ½Π΄1 */

FF (ref a, b, c, d, x[k + 0], S11, 0xd76aa478); /* 1 */

FF (ref d, a, b, c, x[k + 1], S12, 0xe8c7b756); /* 2 */

FF (ref c, d, a, b, x[k + 2], S13, 0×24 2070db); /* 3 */

FF (ref b, c, d, a, x[k + 3], S14, 0xc1bdceee); /* 4 */

FF (ref a, b, c, d, x[k + 4], S11, 0xf57c0faf); /* 5 */

FF (ref d, a, b, c, x[k + 5], S12, 0×4787c62a); /* 6 */

FF (ref c, d, a, b, x[k + 6], S13, 0xa8304613); /* 7 */

FF (ref b, c, d, a, x[k + 7], S14, 0xfd469501); /* 8 */

FF (ref a, b, c, d, x[k + 8], S11, 0×69 8098d8); /* 9 */

FF (ref d, a, b, c, x[k + 9], S12, 0x8b44f7af); /* 10 */

FF (ref c, d, a, b, x[k + 10], S13, 0xffff5bb1); /* 11 */

FF (ref b, c, d, a, x[k + 11], S14, 0×895cd7be); /* 12 */

FF (ref a, b, c, d, x[k + 12], S11, 0x6b901122); /* 13 */

FF (ref d, a, b, c, x[k + 13], S12, 0xfd987193); /* 14 */

FF (ref c, d, a, b, x[k + 14], S13, 0xa679438e); /* 15 */

FF (ref b, c, d, a, x[k + 15], S14, 0×49b40821); /* 16 */

/* Π Π°ΡƒΠ½Π΄2 */

GG (ref a, b, c, d, x[k + 1], S21, 0xf61e2562); /* 17 */

GG (ref d, a, b, c, x[k + 6], S22, 0xc040b340); /* 18 */

GG (ref c, d, a, b, x[k + 11], S23, 0×265e5a51); /* 19 */

GG (ref b, c, d, a, x[k + 0], S24, 0xe9b6c7aa); /* 20 */

GG (ref a, b, c, d, x[k + 5], S21, 0xd62f105d); /* 21 */

GG (ref d, a, b, c, x[k + 10], S22, 0×2 441 453); /* 22 */

GG (ref c, d, a, b, x[k + 15], S23, 0xd8a1e681); /* 23 */

GG (ref b, c, d, a, x[k + 4], S24, 0xe7d3fbc8); /* 24 */

GG (ref a, b, c, d, x[k + 9], S21, 0×21e1cde6); /* 25 */

GG (ref d, a, b, c, x[k + 14], S22, 0xc33707d6); /* 26 */

GG (ref c, d, a, b, x[k + 3], S23, 0xf4d50d87); /* 27 */

GG (ref b, c, d, a, x[k + 8], S24, 0×455a14ed); /* 28 */

GG (ref a, b, c, d, x[k + 13], S21, 0xa9e3e905); /* 29 */

GG (ref d, a, b, c, x[k + 2], S22, 0xfcefa3f8); /* 30 */

GG (ref c, d, a, b, x[k + 7], S23, 0×676f02d9); /* 31 */

GG (ref b, c, d, a, x[k + 12], S24, 0x8d2a4c8a); /* 32 */

/* Π Π°ΡƒΠ½Π΄3 */

HH (ref a, b, c, d, x[k + 5], S31, 0xfffa3942); /* 33 */

HH (ref d, a, b, c, x[k + 8], S32, 0×8771f681); /* 34 */

HH (ref c, d, a, b, x[k + 11], S33, 0x6d9d6122); /* 35 */

HH (ref b, c, d, a, x[k + 14], S34, 0xfde5380c); /* 36 */

HH (ref a, b, c, d, x[k + 1], S31, 0xa4beea44); /* 37 */

HH (ref d, a, b, c, x[k + 4], S32, 0x4bdecfa9); /* 38 */

HH (ref c, d, a, b, x[k + 7], S33, 0xf6bb4b60); /* 39 */

HH (ref b, c, d, a, x[k + 10], S34, 0xbebfbc70); /* 40 */

HH (ref a, b, c, d, x[k + 13], S31, 0×289b7ec6); /* 41 */

HH (ref d, a, b, c, x[k + 0], S32, 0xeaa127fa); /* 42 */

HH (ref c, d, a, b, x[k + 3], S33, 0xd4ef3085); /* 43 */

HH (ref b, c, d, a, x[k + 6], S34, 0×4881d05); /* 44 */

HH (ref a, b, c, d, x[k + 9], S31, 0xd9d4d039); /* 45 */

HH (ref d, a, b, c, x[k + 12], S32, 0xe6db99e5); /* 46 */

HH (ref c, d, a, b, x[k + 15], S33, 0x1fa27cf8); /* 47 */

HH (ref b, c, d, a, x[k + 2], S34, 0xc4ac5665); /* 48 */

/* Π Π°ΡƒΠ½Π΄4 */

II (ref a, b, c, d, x[k + 0], S41, 0xf4292244); /* 49 */

II (ref d, a, b, c, x[k + 7], S42, 0×432aff97); /* 50 */

II (ref c, d, a, b, x[k + 14], S43, 0xab9423a7); /* 51 */

II (ref b, c, d, a, x[k + 5], S44, 0xfc93a039); /* 52 */

II (ref a, b, c, d, x[k + 12], S41, 0×655b59c3); /* 53 */

II (ref d, a, b, c, x[k + 3], S42, 0x8f0ccc92); /* 54 */

II (ref c, d, a, b, x[k + 10], S43, 0xffeff47d); /* 55 */

II (ref b, c, d, a, x[k + 1], S44, 0×85845dd1); /* 56 */

II (ref a, b, c, d, x[k + 8], S41, 0x6fa87e4f); /* 57 */

II (ref d, a, b, c, x[k + 15], S42, 0xfe2ce6e0); /* 58 */

II (ref c, d, a, b, x[k + 6], S43, 0xa3014314); /* 59 */

II (ref b, c, d, a, x[k + 13], S44, 0x4e0811a1); /* 60 */

II (ref a, b, c, d, x[k + 4], S41, 0xf7537e82); /* 61 */

II (ref d, a, b, c, x[k + 11], S42, 0xbd3af235); /* 62 */

II (ref c, d, a, b, x[k + 2], S43, 0x2ad7d2bb); /* 63 */

II (ref b, c, d, a, x[k + 9], S44, 0xeb86d391); /* 64 */

A += a;

B += b;

C += c;

D += d;

}

return new UInt32[] { A, B, C, D };

}

private static byte[] MD5Array (byte[] input)

{

MD5_Init ();

UInt32[] block = MD5_Append (input);

UInt32[] bits = MD5_Trasform (block);

// ΠšΠΎΠ΄ΠΈΡ€ΡƒΠ΅Ρ‚ bits (UInt32[]) Π² output (byte[]).

byte[] output = new byte[bits.Length * 4];

for (int i = 0, j = 0; i < bits. Length; i++, j += 4)

{

output[j] = (byte)(bits[i] & 0xff);

output[j + 1] = (byte)((bits[i] >> 8) & 0xff);

output[j + 2] = (byte)((bits[i] >> 16) & 0xff);

output[j + 3] = (byte)((bits[i] >> 24) & 0xff);

}

return output;

}

private static string ArrayToHexString (byte[] array, bool uppercase)

{

string hexString = «» ;

string format = «x2» ;

if (uppercase)

{

format = «X2» ;

}

foreach (byte b in array)

{

hexString += b. ToString (format);

}

return hexString;

}

private static string MD5File (string fileName)

{

FileStream fs = File. Open (fileName, FileMode. Open, FileAccess. Read);

byte[] array = new byte[fs.Length];

fs.Read (array, 0, (int)fs.Length);

byte[] digest = MD5Array (array);

fs.Close ();

return ArrayToHexString (digest, false);

}

}

}

//HardDrive.cs

using System;

using System.Collections.Generic;

using System. Linq;

using System. Text;

namespace kurs_pogulyat

{

class HardDrive

{

private string model = «» ;

private string type = «» ;

private string serialNo = «» ;

private string bytesPerSector = «» ;

private string mediaType = «» ;

private string partitions = «» ;

private string sectorsPerTrack = «» ;

private string signature = «» ;

private string size = «» ;

private string freespace = «» ;

private string status = «» ;

private string totalCylinders = «» ;

private string totalHeads = «» ;

private string totalSectors = «» ;

private string totalTracks = «» ;

private string tracksPerCylinder = «» ;

private string firmwareRevision = «» ;

public string Model

{

get { return model; }

set { model = value; }

}

public string Type

{

get { return type; }

set { type = value; }

}

public string SerialNo

{

get { return serialNo; }

set { serialNo = value; }

}

public string BytesPerSector

{

get { return bytesPerSector; }

set { bytesPerSector = value; }

}

public string MediaType

{

get { return mediaType; }

set { mediaType = value; }

}

public string Partitions

{

get { return partitions; }

set { partitions = value; }

}

public string SectorsPerTrack

{

get { return sectorsPerTrack; }

set { sectorsPerTrack = value; }

}

public string Signature

{

get { return signature; }

set { signature = value; }

}

public string Size

{

get { return size; }

set { size = value; }

}

public string FreeSpace

{

get { return freespace; }

set { freespace = value; }

}

public string Status

{

get { return status; }

set { status = value; }

}

public string TotalCylinders

{

get { return totalCylinders; }

set { totalCylinders = value; }

}

public string TotalHeads

{

get { return totalHeads; }

set { totalHeads = value; }

}

public string TotalSectors

{

get { return totalSectors; }

set { totalSectors = value; }

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ