Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Β«Π€ΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠΉ ΡΡΠΌΠΌΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΠ²Β»
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π±ΡΠ»ΠΎ ΠΏΡΠΈΠ½ΡΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ .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; }