Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΈΡΡΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°
ΠΡΠ°ΠΉΠ²Π΅Ρ β ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ
ΠΠ½ΠΎΠ³ΠΈΠ΅ ΡΡΠΈΡΠ°ΡΡ ΡΡΠΎ ΡΠ°ΠΌΠΎΠΌΡ ΡΠΎΠ·Π΄Π°ΡΡ Π΄ΡΠ°ΠΉΠ²Π΅Ρ Π΄Π»Ρ Windows ΡΡΠΎ ΡΡΠΎ-ΡΠΎ Π½Π° Π³ΡΠ°Π½ΠΈ ΡΠ°Π½ΡΠ°ΡΡΠΈΠΊΠΈ. ΠΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊ. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° Π΄Π»Ρ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-ΡΠΎ Π½Π°Π²ΠΎΡΠΎΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π΄Π΅Π²Π°ΠΉΡΠ° Π±ΡΠ²Π°Π΅Ρ Π½Π΅ ΠΏΡΠΎΡΡΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ. ΠΠΎ Π²Π΅Π΄Ρ ΡΠΎΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΏΡΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΈΠ»ΠΈ ΠΈΠ³Ρ. Π ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° Π½Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΠ³ΠΎ ΠΈ Ρ ΠΏΠΎΠΏΡΡΠ°ΡΡΡ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ ΡΡΠΎ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ.
Π‘ΠΏΠ΅ΡΠ²Π° Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡΡ Π² ΡΠ΅ΠΌ ΠΌΡ ΠΆΠ΅ Π±ΡΠ΄Π΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π½Π°Ρ ΠΏΠ΅ΡΠ²ΡΠΉ Π΄ΡΠ°ΠΉΠ²Π΅Ρ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π» ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ Π½Π° Π½ΠΎΠ²ΠΈΡΠΊΠΎΠ², ΡΠΎ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±ΡΠ» Π²ΡΠ±ΡΠ°Π½ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡΠΎΡΡΡΡ , ΠΈ ΡΡΠΎ Π½Π΅ Π‘ΠΈ ΠΈΠ»ΠΈ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅Ρ, Π° Π±Π΅ΠΉΡΠΈΠΊ. ΠΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π΄ΠΈΠ°Π»Π΅ΠΊΡΠΎΠ² Π±Π΅ΠΉΡΠΈΠΊΠ° β PureBasic. ΠΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈ ΠΎΠ½ Π½Π΅ ΠΎΠ±ΡΡΠ΅Π½ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΡ, Π½ΠΎ Ρ Π½Π΅Π³ΠΎ ΡΠ΄Π°ΡΠ½ΡΠΉ Π½Π°Π±ΠΎΡ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΈ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ΅ ΡΠ°ΠΌΠ°Π½ΡΡΠ²ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ. ΠΡΠΎΡΠ΅ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΡΠ°ΠΏΠΎΠ². ΠΡΠ»ΠΈ ΠΊΡΠ°ΡΠΊΠΎ, ΡΠΎ ΠΎΠ½ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ: Π‘Π½Π°ΡΠ°Π»Π° ΡΡΠ°Π½ΡΠ»ΡΡΠΎΡ Β«ΠΏΠ΅ΡΠ΅Π³ΠΎΠ½ΡΠ΅ΡΒ» basic-ΠΊΠΎΠ΄ Π² Π°ΡΡΠ΅ΠΌΠ±Π»Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΠ΄Π°Π΅ΡΡΡ FASM’Ρ (ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ°), ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΠΉ ΡΠ°ΠΉΠ». ΠΠ°Π»Π΅Π΅ Π² Π΄Π΅Π»ΠΎ Π²ΡΡΡΠΏΠ°Π΅Ρ Π»ΠΈΠ½ΠΊΠ΅Ρ polink, ΡΠΎΠ·Π΄Π°ΡΡΠΈΠΉ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ». ΠΠ°ΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ°, ΡΠ°ΠΊ ΠΈ Π»ΠΈΠ½ΠΊΠ΅Ρ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΡ ΠΈ Π΅ΡΠ»ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΎΠΏΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΠΌ Π½Π΅ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ», ΡΠΈΠΏΠ° EXE ΠΈΠ»ΠΈ DLL, Π° Π΄ΡΠ°ΠΉΠ²Π΅Ρ ΡΠ΅ΠΆΠΈΠΌΠ° ΡΠ΄ΡΠ° (SYS).
Π‘ΠΊΠ°ΡΠ°ΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΡ Π΄Π΅ΠΌΠΎ Π²Π΅ΡΡΠΈΡ PureBasic 4.61 x86 ΠΌΠΎΠΆΠ½ΠΎ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠΏΠΎΠΌΠΎΠΉΠΊΠ΅, Π·Π΅ΡΠΊΠ°Π»ΠΎ.
ΠΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π΄ΡΠ°ΠΉΠ²Π΅Ρ Π΄Π»Ρ x64 ΡΠΈΡΡΠ΅ΠΌΡ, ΠΊΠ°ΡΠ°ΠΉΡΠ΅ ΡΡΡ Π²Π΅ΡΡΠΈΡ, Π·Π΅ΡΠΊΠ°Π»ΠΎ.
ΠΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Ρ ΠΈΠΌΠ΅ΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΡ, ΠΎΠΊΠΎΠ»ΠΎ 3 ΠΠ ΠΊΠ°ΠΆΠ΄ΡΠΉ. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°.
Π‘ΠΊΠ°ΡΠΈΠ²Π°Π΅ΠΌ, ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°Π΅ΠΌ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ, ΠΊΠ»ΠΈΠΊΠ½ΡΠ² ΠΏΠΎ ΡΠ°ΠΉΠ»Ρ Β«PureBasic PortableΒ». ΠΡΠΈ ΡΡΠΎΠΌ Π·Π°ΠΏΡΡΡΠΈΡΡΡ IDE ΠΈ Π²ΡΠ»Π΅Π·Π΅Ρ ΠΎΠΊΠΎΡΠΊΠΎ Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΡΠΎ ΡΡΠΎ Π΄Π΅ΠΌΠΎ-Π²Π΅ΡΡΠΈΡ ΠΈ ΡΠΏΠΈΡΠΊΠΎΠΌ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ. ΠΠ· Π½Π΅Π³ΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠΈΡΠ»Π° ΡΡΡΠΎΠΊ ΠΊΠΎΠ΄Π°, ΡΠ°Π²Π½ΠΎΠ΅ 800, Π° Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΎΡΡΡΡ
Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ² ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ΅Ρ Ρ
Π²Π°ΡΠΈΡΡ. ΠΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅, Π½Π΅ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½Ρ.
ΠΠΊΠ½ΠΎ IDE Ρ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΡΠΊΡΠΈΠ½Π΅.
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ΅Π· ΠΌΠ΅Π½Ρ Β«ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΒ» (ΡΡΠΎ Π΅ΡΠ»ΠΈ ΠΊΡΠΎ Π½Π΅ ΠΏΠΎΠ½ΡΠ»).
Π’Π΅ΠΏΠ΅ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌΡΡ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π΄Π΅Π»Π°ΡΡ Π½Π°Ρ ΠΏΠ΅ΡΠ²ΡΠΉ Π΄ΡΠ°ΠΉΠ²Π΅Ρ. ΠΠ±ΡΡΠ½ΠΎ ΠΏΡΠΈ ΠΈΠ·ΡΡΠ΅Π½ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π°ΡΠΈΠ½Π°ΡΡ Ρ ΠΏΡΠΎΡΡΡΡ Π²Π΅ΡΠ΅ΠΉ, ΡΠΊΠ°ΠΆΠ΅ΠΌ, Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΈ Π²ΡΠ²ΠΎΠ΄Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°. ΠΠΎΡ ΠΏΡΡΡΡ Π½Π°Ρ Π΄ΡΠ°ΠΉΠ²Π΅Ρ Π΄Π΅Π»Π°Π΅Ρ ΡΠΎΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, Π²Π΅Π΄Ρ Π±Π°Π½Π°Π»ΡΠ½Π°Ρ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΠ°Ρ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ΄ΡΠ° ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΊΡΡΡΠΎ!
ΠΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΡΡΠΎ ΡΡΠΎ ΠΊΡΡΠ° Π±Π΅ΡΡΠΌΡΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π½ΠΎ ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊ.
Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΡΠΎΡΠΊΠ° Π²Ρ
ΠΎΠ΄Π°, ΠΎΠ±ΡΡΠ½ΠΎ Ρ Π½Π΅Π΅ ΠΈΠΌΡ DriverEntry() ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π° ΠΎΠ½Π° Π² Π²ΠΈΠ΄Π΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, Π² ΡΡΠΎΠΌ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ΅ Π΅ΡΡΡ ΡΠ°ΠΊΠ°Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°. ΠΡΠ»ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° Π½Π°ΡΠ°Π»ΠΎ ΠΊΠΎΠ΄Π°, ΡΠΎ Π² ΠΏΠ΅ΡΠ²ΡΡ
ΡΡΡΠΎΠΊΠ°Ρ
ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ ΠΊΠ°ΠΊ Π΅ΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅. Π ΡΡΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ΅ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°. Π’Π°ΠΌ ΠΆΠ΅ Π½Π°Π·Π½Π°ΡΠ°Π΅ΡΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΈΠΌΠ΅Π΅Ρ ΠΈΠΌΡ UnloadDriver(). ΠΡΠΎΡΠ΅Π΄ΡΡΡ CreateDispatch() ΠΈ CloseDispatch() Π½Π°Π·Π½Π°ΡΠ°ΡΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΈ ΠΎΡΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΠΈ ΠΈΠ· ΡΠ·Π΅ΡΠΌΠΎΠ΄Π°.
ΠΡΠΎΡΠ΅Π΄ΡΡΠ° DeviceIoControl() Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π·Π°ΠΏΡΠΎΡΡ WinAPI ΡΡΠ½ΠΊΡΠΈΠΈ DeviceIoControl(), ΡΠ²Π»ΡΡΡΠ΅ΠΉΡΡ Π² Π΄Π°Π½Π½ΠΎΠΌ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ΅ ΡΠ²ΡΠ·ΡΡ Ρ ΡΠ·Π΅ΡΠΌΠΎΠ΄ΠΎΠΌ. Π ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠ΄Π° ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π° ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠ°Ρ ΠΠ°ΡΠ°Π‘Π΅ΠΊΡΠΈΡ (DataSection), Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π°Ρ
ΠΎΠ΄ΡΡΡΡ ΠΈΠΌΠ΅Π½Π° Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°, ΡΠΎΡ
ΡΠ°Π½Π΅Π½Π½ΡΠ΅ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ ΡΠ½ΠΈΠΊΠΎΠ΄Π° (Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π° ΠΎΠ΄Π½Π° ΠΈΠ· ΡΠΈΡΠ΅ΠΊ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ° FASM).
Π’Π΅ΠΏΠ΅ΡΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΊΠ°ΠΊ Π΄ΡΠ°ΠΉΠ²Π΅Ρ Π±ΡΠ΄Π΅Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ Π²Π½Π΅ΡΠ½ΠΈΠΌ ΠΌΠΈΡΠΎΠΌ. ΠΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ΅ DeviceIoControl(). Π Π½Π΅ΠΉ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅ΡΡΡ ΠΎΠ΄Π½ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ β #IOCTL_MyPlus, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ·Π΅ΡΠΌΠΎΠ΄Π½Π°Ρ ΠΏΡΠΎΠ³Π°, ΠΊΠΎΠ³Π΄Π° Π΅ΠΉ Π½ΡΠΆΠ½ΠΎ ΡΠ»ΠΎΠΆΠΈΡΡ Π΄Π²Π° ΡΠΈΡΠ»Π° Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ΄ΡΠ° (ΠΊΡΡΡΠΎ Π·Π²ΡΡΠΈΡ, ΠΏΡΠ°Π²Π΄Π°?). ΠΠΎΠ³Π΄Π° ΡΠ°ΠΊΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΎ, ΡΠΎ ΡΡΠΈΡΡΠ²Π°Π΅ΠΌ ΠΈΠ· ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡΡΠ΅ΡΠ°, Π°Π΄ΡΠ΅Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΡΡΡΠΊΡΡΡΡ ΡΠΎ ΡΠ»Π°Π³Π°Π΅ΠΌΡΠΌΠΈ, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ Π² ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ Π±ΡΡΠ΅Ρ. Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ ΡΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ Π·Π°Π΄Π°ΡΠ° Π½Π°ΡΠ΅Π³ΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°.
ΠΠΈΠ΄ΠΈΡΠ΅ ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΠ»ΠΎΡΡ ΠΊΠΎΠ΄Π° Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅ΠΉ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ β ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π²ΡΡ ΡΠΈΡΠ΅Π»?
Π ΡΠ΅ΠΏΠ΅ΡΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠ°Π±ΠΎΡΠ°ΡΡΡΡ Ρ ΡΡΠΈΠΌ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠΌ. ΠΠ½Π° Π½Π°ΠΏΠΈΡΠ°Π½Π° Π½Π° ΡΠΎΠΌ ΠΆΠ΅ PureBasic.
ΠΡΠΈ ΡΡΠ°ΡΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ OpenDriver(), ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ Π΄ΡΠ°ΠΉΠ²Π΅Ρ. ΠΠ»Ρ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΡ, ΠΈΠΌΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°, ΠΈΠΌΡ ΡΠ»ΡΠΆΠ±Ρ ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ»ΡΠΆΠ±Ρ Π·Π°Π΄Π°Π½Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ β Β«pbDrPlusΒ». ΠΡΠ»ΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ° Π½Π΅ΡΠ΄Π°ΡΠ½Π°Ρ, ΡΠΎ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ.
ΠΡΠΎΡΠ΅Π΄ΡΡΠ° Plus() ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅Ρ ΡΠ²ΡΠ·Ρ Ρ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠΌ. ΠΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Ρ ΡΠ½Π΄Π», Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π΄ΡΠ°ΠΉΠ²Π΅ΡΡ ΠΈ ΡΠ»Π°Π³Π°Π΅ΠΌΡΠ΅ ΡΠΈΡΠ»Π°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡΡΡ Π² ΡΡΡΡΠΊΡΡΡΡ ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ, ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΡ. Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠΈΡΠ΅Π» Π±ΡΠ΄Π΅Ρ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Β«ResultΒ».
ΠΠ°Π»Π΅Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΊΠΎΠ΄ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅Π³ΠΎ GUI ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡΠ°, ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ· Π²ΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ.
ΠΠΎΠ³Π΄Π° Π·Π°ΠΊΡΠΎΡΡ ΠΎΠΊΠ½ΠΎ, ΡΠΎ ΠΏΠ΅ΡΠ΅Π΄ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π·Π°ΠΊΡΡΠ²Π°Π΅ΡΡΡ ΡΠ²ΡΠ·Ρ Ρ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠΌ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π΅Π³ΠΎ Π΄Π΅ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΈΡ ΠΈΠ· ΡΠΈΡΡΠ΅ΠΌΡ.
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠΈΡΠ΅Π» 8 ΠΈ 2 Π½Π° ΡΠΊΡΠΈΠ½ΡΠΎΡΠ΅.
ΠΡΡ ΠΎΠ΄Π½ΡΠ΅ ΠΊΠΎΠ΄Ρ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² ΠΏΠ°ΠΏΠΊΠ΅ Β«ExamplesΒ», PureBasic Π½Π° ΡΠ°ΠΉΠ»ΠΎΠΏΠΎΠΌΠΎΠΉΠΊΠ΅, ΡΡΡΠ»ΠΊΡ Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ Π΄Π°Π²Π°Π» Π² Π½Π°ΡΠ°Π»Π΅ ΡΡΠ°ΡΡΠΈ. Π’Π°ΠΌ ΡΠ°ΠΊ ΠΆΠ΅ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° ΠΏΡΡΠΌΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΏΠΎΡΠ°ΠΌ ΠΊΠΎΠΌΠΏΠ° ΠΈ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠ°ΠΌΡΡΡΡ ΡΠ΄ΡΠ°.
PS.
ΠΠΎΠΌΠ½ΠΈΡΠ΅, ΡΠ°Π±ΠΎΡΠ° Π² ΡΠ΄ΡΠ΅ ΡΡΠ΅Π²Π°ΡΠ° ΠΌΠ΅Π»ΠΊΠΈΠΌΠΈ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΡΡΡΠΌΠΈ Π°Π»Ρ, BSOD (ΡΠΈΠ½ΠΈΠΉ ΡΠΊΡΠ°Π½ ΡΠΌΠ΅ΡΡΠΈ), ΠΏΠΎΡΡΠΎΠΌΡ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΡΠΉΡΠ΅ ΠΎΡΡΠΎΡΠΎΠΆΠ½ΠΎ ΠΈ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΡ ΡΠΎΡ
ΡΠ°Π½ΡΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄ Π·Π°ΠΏΡΡΠΊΠΎΠΌ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°.
ΠΠ° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΠΏΠΎΡΠ΅ΡΡ Π΄Π°Π½Π½ΡΡ , Ρ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ Π½Π΅ Π½Π΅ΡΡ!
ΠΠ° ΠΊΠ°ΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅ ΠΏΠΈΡΡΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°?
ΠΠΎΠΌΠΎΡΡ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΡ , ΠΊΡΡΡΠΎΠ²ΡΡ ΠΈ Π΄ΠΈΠΏΠ»ΠΎΠΌΠ½ΡΡ ΡΠ°Π±ΠΎΡ Π·Π΄Π΅ΡΡ.
ΠΠ° ΠΊΠ°ΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅ Π½ΡΠΆΠ½ΠΎ ΠΏΠΈΡΠ°ΡΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°?
Π£ ΠΌΠ΅Π½Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°.Π‘ΡΠ°ΡΡΠΉ ΠΏΡΠΈΠ½ΡΠ΅Ρ ΠΈ ΡΠΊΠ°Π½Π΅Ρ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ 8 ΠΈ 10.Π₯ΠΎΡΡ ΡΠ°ΠΌ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π΄Π»Ρ Π½ΠΈΡ
.
ΠΠ° ΠΊΠ°ΠΊΠΎΠΌ ΠΈΠΌΠ΅Π½Π½ΠΎ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ΅ ΠΏΠΈΡΡΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΡ?
ΠΡΠ΅ΠΌ Π΄ΠΎΠ±ΡΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΡΡΠΎΠΊ! ΠΠ·ΡΡΠ°Π» Ρ Π³ΠΎΡΠ΅ΠΌ ΠΏΠΎΠΏΠΎΠ»Π°ΠΌ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅Ρ. Π Linux, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π±ΡΠ» nasm. Π£Π·Π½Π°Π».
ΠΠ° ΠΊΠ°ΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅ ΠΏΠΈΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠΎΠ΄ Π»ΠΈΠ½ΡΠΊΡ
ΠΠ° ΠΊΠ°ΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅ ΠΏΠΈΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠΎΠ΄ Π»ΠΈΠ½ΡΠΊΡ ΠΈ Π² ΠΊΠ°ΠΊΠΎΠΉ ΡΡΠ΅Π΄Π΅?
ΠΠ° ΠΊΠ°ΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅ ΠΏΠΈΡΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ½ΡΠ΅ ΠΎΠ½Π»Π°ΠΉΠ½ ΠΈΠ³ΡΡ?
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ°ΠΊΠΈΡ
ΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ? Π’ΠΎ, ΡΡΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΊΡΡ ΠΈΠ³ΡΡ, ΡΡΠΎ Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ.
Π’ΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΡΠ΅Π±Π΅ Π½Π΅ ΠΎΠΊΠΎΠ½Π½ΡΠ΅ ΠΏΡΠΎΠΆΠΊΠΈ ΠΊΠ»Π΅ΠΏΠ°ΡΡ!
ΠΠ°Π²Π°ΠΉ, Π½Π°ΠΏΠΈΡΠΈ. ΠΡΠ°ΠΉΠ²Π΅Ρ ΠΌΡΡΠΈ Π½Π΅ ΡΠ»ΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π΄Π»Ρ Π½Π°ΡΠ°Π»Π°?
ΠΠΎΠΏΡΡΡΠΈΠΌ, ΡΠ»ΡΡΠ°Π», ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, ΠΊΠ°ΠΊ ΡΠΎΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΡΠ»Ρ-76 ΠΈ Π΄ΡΠ°ΠΉΠ²Π΅Ρ?
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ ΡΠ΅ΡΠ΅Π· 1 ΠΌΠΈΠ½ΡΡΡ
ΠΠ΅ Ρ ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ ΡΡΠΎΠ³Π°ΡΡ ΡΠ»ΡΠ±ΡΡΡΡ ΠΈ ΡΠ»Ρ-76.
ΠΡ ΡΠΏΠ°ΡΠΈΠ±ΠΎ, ΠΊ Π°ΠΊΠ°Π΄Π΅ΠΌΠΈΠΊΠ°ΠΌ ΠΌΠ΅Π½Ρ Π΅ΡΠ΅ Π½Π΅ ΠΏΠΎΠ΄ΡΠΈΠ²Π°Π»ΠΈ, Π²ΡΠΎΠ΄Π΅ Π½Π΅ ΡΠ°ΠΊΠΎΠΉ Π΄ΡΠ΅ΠΌΡΡΠΈΠΉ.
Π’Π΅ΠΏΠ΅ΡΡ «ΠΏΡΠΎ Π΄ΡΠ°ΠΉΠ²Π΅Ρ ΠΌΡΡΠΈ Π½Π° ΡΠΎΡΡΡΠ°Π½Π΅». ΠΠΈΡΠ°ΡΡ Π΅Π³ΠΎ, Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, Π½ΠΈΠΊΡΠΎ Π½Π΅ ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΡΡ. ΠΡ ΡΡΠΎ Ρ
ΠΎΡΠ΅Π»ΠΈ ΠΎΡ ΠΌΠ΅Π½Ρ? Π’Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ ΡΡΠΎ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Ρ ΡΡΠ²Π΅ΡΠΆΠ΄Π°Π» ΡΡΠΎ ΡΡΠΎ «Π² ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ», ΠΈ Π½Π΅ Π±ΠΎΠ»Π΅Π΅.
ΠΡΡΠ΄-Π»ΠΈ ΠΊΡΠΎ-ΡΠΎ ΡΡΠ°Π½Π΅Ρ Π΄ΠΎΠ±ΡΠ²Π°ΡΡ ΠΎΠ³ΠΎΠ½Ρ ΡΡΠ΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΠ³Π΄Π° Π² ΠΊΠ°ΡΠΌΠ°Π½Π΅ Π·Π°ΠΆΠΈΠ³Π°Π»ΠΊΠ°.
ΠΠΠ’! ΠΠ°ΠΊΠΎΠ½Π΅Ρ-ΡΠΎ ΡΡΠ»ΡΡΠ°Π» ΡΡΠΎ-ΡΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ΅. ΠΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π²ΡΠ΅ ΡΠ²ΠΎΠΈ Π²ΠΎΠΏΡΠΎΡΡ ΡΠ½ΠΈΠΌΠ°Ρ. Π Π΅ΡΠ»ΠΈ ΡΠ΅ΡΡΠ½ΠΎ, ΡΠΎ Ρ ΠΏΠΎΠΏΡΠΎΡΡΡ ΠΏΠΎΠ΄ΡΠΌΠ°Π», ΡΡΠΎ Π½Π° ΡΠΎΡΡΠΌΠ΅ ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠΉ Π·Π°Π»ΡΡΠ½ΡΠΉ ΡΠΌΠ½ΠΈΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠ»ΡΡ
Π°Π» ΡΠΌΠ½ΡΡ
ΡΠ»ΠΎΠ² ΡΠΈΠΏΠ° «Π΄ΡΠ°ΠΉΠ²Π΅Ρ» ΠΈΠ»ΠΈ «ΡΠ»Ρ-76» ΠΈ Π½Π°ΡΠ°Π» Π³Π½ΡΡΡ ΠΏΠ°Π»ΡΡΡ. Π’Π°ΠΊ ΡΡΠΎ ΠΈΠ·Π²ΠΈΠ½ΡΠΉ, ΠΎΠ±ΠΎΠ·Π½Π°Π»ΡΡ
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ² ΡΡΡΡΠΎΠΉΡΡΠ² Π΄Π»Ρ ΡΠ°ΠΉΠ½ΠΈΠΊΠΎΠ²
#1
dE fENDER 
#2
dE fENDER 
Π ΡΡΠΎΠΉ ΡΠ΅ΠΌΠ΅ Ρ ΠΏΠ»Π°Π½ΠΈΡΡΡ Π΄Π°ΡΡ ΡΠ΅ΡΠΈΡ ΡΡΠΎΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ Π»ΡΠ±ΠΎΠΌΡ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π±Π°Π·ΠΎΠ²ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΡΡΡΠΎΠ΅Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ ΠΠ ΠΈ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ² ΠΠ‘ Windows, Π½Π°ΡΡΠΈΡΡΡΡ ΡΠΈΡΠ°ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΠΊΠΎΠ΄Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ² ΡΡΡΡΠΎΠΉΡΡΠ² ΠΈΠ»ΠΈ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ Π΄ΡΠ°ΠΉΠ²Π΅Ρ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠΉ Ρ Π΅Π³ΠΎ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΌ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΠΌ.
Π’Π°ΠΊΠΆΠ΅ ΡΡΠΈ ΡΡΠΎΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠΌΠΎΡΡ Π°ΡΠ΄ΠΈΡΠΎΡΠΈΠΈ Π²Π»Π°Π΄Π΅Π»ΡΡΠ΅Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°ΡΡ Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ, ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π½ΡΠΌΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ 3dfx, ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π² Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΠΊΠΎΠ΄Π°Ρ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ² ΡΡΠΈΡ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°ΡΡ. Π£ΠΏΠΎΠΌΡΠ½ΡΡΡΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Ρ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΏΠ΅ΡΠ΅Π΄Π΅Π»ΠΎΠΊ ΠΎΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Ρ ΠΏΠΎΠ΄ Windows XP/Windows 2003 Server, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈ Π±ΡΠ΄ΡΡ ΡΠ²Π»ΡΡΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ. Π Π±ΠΎΠ»Π΅Π΅ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Windows Vista/7 Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»Π°ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ², Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠΈΠ»ΡΠ½ΠΎ ΡΡΠΎ Π·Π°ΡΡΠΎΠ½ΡΠ»ΠΎ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π΄Π»Ρ ΠΈΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ Π²Π΅ΡΡΠΌΠ° Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ°ΡΡΡ ΠΊΠΎΠ΄Π°. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΏΠΎΠ΄ Ρ 64 Π²Π΅ΡΡΠΈΡΠΌΠΈ Vista/7 ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ°ΡΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎ ΡΠ°ΠΊ Π½Π΅Π»ΡΠ·Ρ Π·Π°Π³ΡΡΠ·ΠΈΡΡ Π΄ΡΠ°ΠΉΠ²Π΅Ρ, Π½Π΅ ΠΈΠΌΠ΅ΡΡΠ΅ΠΉ ΡΠΈΡΡΠΎΠ²ΠΎΠΉ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ. ΠΠΎΠ΄ΠΏΠΈΡΡ ΡΡΠΎΠΈΡ ΠΏΠΎΡΡΠ΄ΠΊΠ° 500 Π΄ΠΎΠ»Π»Π°ΡΠΎΠ² Π² Π³ΠΎΠ΄ (150, Π΅ΡΠ»ΠΈ Π½Π°ΠΉΡΠΈ ΠΊΡΠΏΠΎΠ½ Π½Π° ΡΠΊΠΈΠ΄ΠΊΡ), ΠΈΡ Π½Π΅ Π»ΡΠ±ΡΡ Π΄Π°Π²Π°ΡΡ ΡΠ°ΡΡΠ½ΡΠΌ Π»ΠΈΡΠ°ΠΌ ΠΈ Π΄Π°ΠΆΠ΅ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΠΌ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π΅ΡΠ»ΠΈ Π² ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½Π½ΠΎΠΌ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ΅ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΡΡ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡ ΠΈ Π΅ΠΉ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Ρ Π°ΠΊΠ΅ΡΡ β ΡΠΎ ΠΏΠΎΠ΄ΠΏΠΈΡΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ [ΠΏΠΎΡΡΠΈ Π²ΡΠ΅Π³Π΄Π° ΡΡΠΈΠ΄ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ] Π»ΠΈΡΠ° Π°Π½Π½ΡΠ»ΠΈΡΡΠ΅ΡΡΡ ΠΈ Ρ Π½Π΅Π³ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ Π½ΠΎΠ²ΠΎΠΉ. ΠΡΠ΅ Π΅ΡΡΡ ΡΠ°ΠΊΠ°Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°, ΠΊΠ°ΠΊ WHQL-ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ, Π½ΠΎ Π΅Π΅ Ρ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ ΡΠΎΠ±ΠΈΡΠ°ΡΡΡ ΠΏΠΎΠΊΠ° Π·Π΄Π΅ΡΡ ΠΎΠ±ΡΡΠΆΠ΄Π°ΡΡ.
ΠΠ΅ΡΡΠΌΠ° ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΡΠ΅ΡΡΡ, Π΅ΡΠ»ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π»ΡΠ΄ΠΈ Π±ΡΠ΄ΡΡ Π΄Π°Π²Π°ΡΡ Π·Π΄Π΅ΡΡ ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΡΠΎΠΊΠΈ, Π½Π΅ Π²ΡΡ ΠΎΠ΄ΡΡΠΈΠ΅ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Ρ ΡΠ΅ΠΌΡ. Π’Π°ΠΊΠΆΠ΅ Π·Π΄Π΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Π²Π°ΡΡ Π»ΡΠ±ΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ, ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ ΡΠ²ΠΎΠΈ ΠΈΠ΄Π΅ΠΈ Π΄Π»Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΡΠΎΠΊΠΎΠ² ΠΈ ΠΎΡΠΏΠΈΡΡΠ²Π°ΡΡΡΡ ΠΎΠ± ΡΠ²ΠΎΠΈΡ ΡΠ΄Π°ΡΠ½ΡΡ /Π½Π΅ΡΠ΄Π°ΡΠ½ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°Ρ .
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΡΠ°Π±ΠΎΡΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΈΠΌΠ΅ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡΡΠ²ΠΎ Ρ Π»ΡΠ±ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠΌΠ°Ρ, Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠΊΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ / Π²ΡΠ·ΠΎΠ²ΡΠΊΠΎΠ³ΠΎ ΠΊΡΡΡΠ° Π΄Π»Ρ Π½Π΅ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ². ΠΡΠ»ΠΈ ΠΆΠ΅ Π² ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π·Π½Π°ΠΊΠΎΠΌΡΡΠ²ΠΎ Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π½Π΅ Π±ΡΠ»ΠΎ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½ΠΎ/Π·Π° Π΄Π°Π²Π½ΠΎΡΡΡΡ Π»Π΅Ρ ΠΊΡΡΡ Π·Π°Π±ΡΡ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ ΡΡΠΎ-ΡΠΎ Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΠΎ β ΠΎΡΠΏΠΈΡΡΠ²Π°ΠΉΡΠ΅ΡΡ Π² ΡΠ΅ΠΌΠ΅, Ρ Π½Π°ΠΏΠΈΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΡΡΠΎΠΊΠΈ, ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅ΠΉ ΡΠ°ΡΠΊΡΡΠ²Π°ΡΡΠΈΠ΅ Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΡΡ ΡΠ΅ΠΌΡ.
#3
White 
#4
dE fENDER 
Π£ΡΠΎΠΊ 0. Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ
Π‘ΠΏΠΈΡΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ:
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Visual Studio
Π― Π±ΡΠ΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Visual Studio 2010 Ultimate. Π ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅, ΡΡΠ°Π²ΠΈΡΡ Π΅Π΅ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Π΅ΡΡΡ ΠΈ Π² WDK. ΠΠΎ Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΡΡ
ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, Π² ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ Π΄Π»Ρ Π½ΠΎΠ²ΠΈΡΠΊΠ°, ΠΎΠ½Π° Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΄ΠΎΠ±Π½Π΅ΠΉ Π²ΡΠ·ΠΎΠ²Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΈΠ· ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ. ΠΡΠ»ΠΈ Π΅Π΅ Π²ΡΠ΅ ΠΆΠ΅ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ, ΡΠΎ Π»ΡΡΡΠ΅ Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΠΏΠ΅ΡΠ΅Π΄ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΎΠΉ WDK.
ΠΠ΅ΡΠ΅ΠΌ Π΄ΠΈΡΠΊ ΡΠΎ ΡΡΡΠ΄ΠΈΠ΅ΠΉ Π² iso-ΡΠΎΡΠΌΠ°ΡΠ΅, ΠΌΠΎΠ½ΡΠΈΡΡΠ΅ΠΌ Π΅Π³ΠΎ Π² Daemon Tools, Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠ΄ Π² VMWare. ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ Ρ Π΄ΠΈΡΠΊΠ° setup.exe, Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ Β«Install Microsoft Visual Studio 2010Β». ΠΠ° ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΠ°Π³Π΅ ΠΏΠΎΠ΄ Windows 2003 ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΠ²ΠΈΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, ΡΡΠΎ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Windows Imaging Component. Π©Π΅Π»ΠΊΠ°Π΅ΠΌ ΠΏΠΎ ΡΡΠΎΠΉ ΡΡΡΠΎΠΊΠ΅, Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π±ΡΠ°ΡΠ·Π΅Ρ β ΡΠΊΠ°ΡΠΈΠ²Π°Π΅ΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠΉ ΠΏΠΎ ΡΠ·ΡΠΊΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ (Ρ ΠΌΠ΅Π½Ρ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈΠΉ, Π·Π½Π°ΡΠΈΡ wic_x86_enu.exe), ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ. ΠΠ°Π½ΠΎΠ²ΠΎ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ setup.exe Ρ Π΄ΠΈΡΠΊΠ°. ΠΠ°ΠΆΠΈΠΌΠ°Π΅ΠΌ Next, ΡΠΎΠ³Π»Π°ΡΠ°Π΅ΠΌΡΡ Ρ Π»ΠΈΡΠ΅Π½Π·ΠΈΠΎΠ½Π½ΡΠΌ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ, Π·Π°ΡΠ΅ΠΌ ΠΈΠ΄Π΅Ρ Π²ΡΠ±ΠΎΡ ΡΠΈΠΏΠ° ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ. ΠΡΠ±ΠΈΡΠ°Π΅ΠΌ Custom, ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΏΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ β Π΄Π»Ρ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ Visual Studio ΠΈ Π²ΡΠ΅ Π»ΡΠ±ΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΡΠ°Π²ΠΈΡΡ ΠΏΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΊΠΎΡΠΎΡΠΊΠΎΠΌΡ ΠΏΡΡΠΈ Π±Π΅Π· ΡΡΡΡΠΊΠΈΡ Π±ΡΠΊΠ² ΠΈ ΠΏΡΠΎΠ±Π΅Π»ΠΎΠ². ΠΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ β C:\Programs\VS10. Π‘Π»Π΅Π΄ΡΡΡΠ°Ρ ΡΡΡΠ°Π½ΠΈΡΠ° β Π²ΡΠ±ΠΎΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ². Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΠΈΡΡΠ½ΠΊΠΎΠΌ:

Π ΠΈΡ 0.1 β ΠΡΠ±ΠΎΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π² ΡΡΡΠ°Π½ΠΎΠ²ΡΠΈΠΊΠ΅ Visual Studio
ΠΡΠΎΠΌΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΡΡ , ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ Π²ΡΠ±ΡΠ°ΡΡ Β«Visual C#Β». C# Π±ΡΠ²Π°Π΅Ρ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π΄Π»Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΡΠ°ΠΌΠΎΠΉ Visual Studio ΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ ΡΡΠΈΠ»ΠΈΡ. ΠΠ°ΠΆΠΈΠΌΠ°Π΅ΠΌ Install. ΠΡΠΎΠΌΠ΅ ΡΠ°ΠΌΠΎΠΉ ΡΡΡΠ΄ΠΈΠΈ ΡΡΠ°Π²ΠΈΡΡΡ ΠΊΡΡΠ° Π±Π΅ΡΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ, Π½Π΅Π½ΡΠΆΠ½ΠΎΠΉ ΠΈ Π²ΡΠ΅Π΄Π½ΠΎΠΉ Π΄ΡΡΠ½ΠΈ. ΠΡΠ»ΠΈ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ Π±ΡΠ»Π° ΡΡΠ°ΡΠ°Ρ Π²Π΅ΡΡΠΈΡ Windows Installer’Π° β ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠ°. ΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ β Finish, Exit.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° WDK
ΠΠΎΠ½ΡΠΈΡΡΠ΅ΠΌ ΡΠΊΠ°ΡΠ°Π½Π½ΡΠΉ iso-ΠΎΠ±ΡΠ°Π· Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΡΠΎΠΌΡ, ΠΊΠ°ΠΊ ΡΡΠΎ Π±ΡΠ»ΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ Ρ Visual Studio. ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ KitSetup.exe, Π½Π° ΡΡΠ°ΠΏΠ΅ Π²ΡΠ±ΠΎΡΠ° ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π³Π°Π»ΠΎΡΠΊΠΈ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΠΈΡΡΠ½ΠΊΠΎΠΌ:

Π ΠΈΡ 0.2 β ΠΡΠ±ΠΎΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π² ΡΡΡΠ°Π½ΠΎΠ²ΡΠΈΠΊΠ΅ WDK
Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ Visual Studio ΠΈ WDK Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π½Π° ΡΠΎΠΉ ΠΆΠ΅ ΠΌΠ°ΡΠΈΠ½Π΅, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. ΠΠ»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Ρ ΠΏΠΎΡΡΠ°Π²ΠΈΠ» ΠΈΡ
Π½Π° ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅ Ρ Windows 7 Ρ
64 ΠΈ ΠΎΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π» Π΄ΡΠ°ΠΉΠ²Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΡΠ°Π±ΠΎΡΠ°Π» ΠΏΠΎΠ΄ Windows 2003 Server Ρ
86.
Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π½Π° Π΄ΠΈΡΠΊΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², ΡΡΠΈΡΡΠ²Π°Ρ Π²ΡΡΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ (Π±Π΅Π· ΠΏΡΠΎΠ±Π΅Π»ΠΎΠ² ΠΈ ΡΡΡΡΠΊΠΈΡ
Π±ΡΠΊΠ²), Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ C:\Projects. ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ Visual Studio, ΠΎΡΠΊΡΡΠ²Π°Π΅ΠΌ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ (ΠΌΠ΅Π½Ρ Tools/Option), Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ Π² Π΄Π΅ΡΠ΅Π²Π΅ Β«Projects and Solutions/GeneralΒ», Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅ Projects location Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ/ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³.
Π’Π°ΠΊΠΆΠ΅ Π½Π°ΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Far Manager 2 ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ΅ΡΠ΅Π· Π½Π΅Π³ΠΎ. ΠΠ³ΠΎ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ Π½Π°Π΄ Windows/Total Commander’Π°ΠΌΠΈ ΠΈ Explorer’Π°ΠΌΠΈ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΠ΅ΡΠ΅Π· Π½Π΅Π³ΠΎ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ Π²ΠΈΠ΄Π½ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ (ΠΊΠΎΠΌΠ°Π½Π΄Π° ctrl + O), ΠΊΡΠ΄Π° Π²ΡΠ΄Π°Π΅ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. ΠΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ PATH.
Π Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΈ Π΄ΡΠ°ΠΉΠ²Π΅ΡΡ Π΄Π»Ρ Windows 9x. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄ΡΡΠ³ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅, Π½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ² Π΄Π»Ρ Windows 9x ΠΏΡΠΎΡΠ΅.
ΠΠ° ΠΊΠ°ΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΈΡΡΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°
ΠΠ΅Π΄Π°Π²Π½ΠΎ ΠΌΠ½Π΅ ΠΏΡΠΈΡΠ»ΠΎΡΡ ΠΎΠΏΡΡΡ Π²Π΅ΡΠ½ΡΡΡΡΡ ΠΊ ΠΡΠ°ΠΉΠ²Π΅ΡΡ. Π Π²ΠΎΡ Π²ΡΠ΅ΡΠ° Ρ, Π½Π°ΠΊΠΎΠ½Π΅Ρ-ΡΠΎ, ΡΠ΄Π°Π» ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠΉ Π΄ΡΠ°ΠΉΠ²Π΅Ρ ΠΈ ΡΠ΅ΡΠΈΠ» Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΡΡ ΡΡΠ°ΡΡΡ, Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΊΠ°ΠΊ-ΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎ, ΡΡΠΎ Ρ ΡΠ·Π½Π°Π», ΠΈ, ΡΡΠΎΠ±Ρ ΠΊΠΎΠ³Π΄Π° ΠΌΠ½Π΅ ΡΠ½ΠΎΠ²Π° ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π²Π·ΡΡΡΡΡ Π·Π° Π΄ΡΠ°ΠΉΠ²Π΅Ρ, Π±ΡΠ»ΠΎ ΠΎΡ ΡΠ΅Π³ΠΎ ΠΎΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ.
ΠΡΠ΄ΠΈ, Π·Π½Π°ΡΡΠΈΠ΅ ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ IOCTL, DEVICE_EXTENSION, MajorFunction ΠΈ DriverEntry Π½Π΅ Π½Π°ΠΉΠ΄ΡΡ Π·Π΄Π΅ΡΡ Π½ΠΈΡΠ΅Π³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ. ΠΡΠ° ΡΡΠ°ΡΡΡ Π΄Π»Ρ ΡΠ΅Ρ , ΠΊΡΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡΠ»ΡΡΠ°Π» ΡΠ»ΠΎΠ²ΠΎ ΠΠΠ, ΠΈ ΠΊΡΠΎ Π΄ΠΎ ΡΠ΅Π³ΠΎ Π΄Π½Ρ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π·Π°Π³Π»ΡΠ΄ΡΠ²Π°Π» Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ². Π Π΅ΡΠ΅, Ρ Π±ΡΠ΄Ρ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ-ΡΠ°ΠΊΠΈ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΈΠ΅, Π΄Π°ΠΆΠ΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠ΅ Π²Π΅ΡΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π°ΠΏΠΎΠΌΠ½Ρ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π΄Π°Π½Π½Π°Ρ ΡΡΠ°ΡΡΡ ΡΠ°ΡΡΡΠΈΡΠ°Π½Π° Π½Π° Π»ΡΠ΄Π΅ΠΉ Ρ ΠΎΡΠ΅Π½Ρ ΠΌΠ°Π»ΡΠΌ ΠΎΠΏΡΡΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠ°ΠΊΠΎΠΉ Π±ΡΠ» Ρ ΠΌΠ΅Π½Ρ, ΠΊΠΎΠ³Π΄Π° Ρ Π·Π°Π½ΡΠ»ΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ².
ΠΠ΅ΡΠ²ΠΎΠ΅, Ρ ΡΠ΅ΠΌ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π΅ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ, ΡΠ΅ΡΠΈΠ²ΡΠΈΠΉ Π·Π°Π½ΡΡΡΡΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°ΠΌΠΈ, ΡΡΠΎ ΠΏΠΎΡΡΠΈ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΡΡΡΡΠΊΠΎΡΠ·ΡΡΠ½ΠΎΠΉ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΡ ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΉ ΡΠ΅ΠΌΠ΅. ΠΠ° Π³ΠΎΠ΄ ΠΏΠΎΠΈΡΠΊΠΎΠ² ΠΌΠ½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ Π½Π°ΠΉΡΠΈ Π²ΡΠ΅Π³ΠΎ ΡΡΠΈ ΠΊΠ½ΠΈΠ³ΠΈ Π½Π° ΡΡΡΡΠΊΠΎΠΌ, Π² ΠΊΠΎΡΠΎΡΡΡ Ρ ΠΎΡΡ Π±Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π³ΠΎΠ²ΠΎΡΠΈΡΡΡ ΠΎ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°Ρ :
————————
1. Π‘Π²Π΅Π½ Π¨ΡΠ°ΠΉΠ±Π΅Ρ «ΠΠ΅Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Windows 2000». ΠΠ·Π΄Π°ΡΠ΅Π»ΡΡΡΠ²ΠΎ «ΠΠΈΡΠ΅Ρ» 2002 Π³ΠΎΠ΄.
ΠΠ΄Π΅ΡΡ ΠΎΡΠ΅Π½Ρ Ρ
ΠΎΡΠΎΡΠΎ ΠΎΠΏΠΈΡΠ°Π½ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°.
——————
2. Π. Π. Π ΡΠ΄Π°ΠΊΠΎΠ², Π. Π. Π€ΠΈΠ½ΠΎΠ³Π΅Π½ΠΎΠ² «Π―Π·ΡΠΊ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ°: ΡΡΠΎΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ» ΠΠΈΠ°Π»ΠΎΠ³ ΠΠΠ€Π 2001 Π³ΠΎΠ΄.
ΠΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½Π°Ρ ΠΊΠ½ΠΈΠ³Π° Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π±Ρ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ ΠΏΠΈΡΠ°ΡΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° Π±Π΅Π· Π²ΡΡΠΊΠΈΠΉ Wizard-ΠΎΠ².
——————————
3. Π‘Π²Π΅ΡΠ»Π°Π½Π° Π‘ΠΎΡΠΎΠΊΠΈΠ½Π°, ΠΠ½Π΄ΡΠ΅ΠΉ Π’ΠΈΡ
ΠΎΠ½ΠΎΠ², ΠΠ½Π΄ΡΠ΅ΠΉ Π©Π΅ΡΠ±Π°ΠΊΠΎΠ² «ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ² ΠΈ ΡΠΈΡΡΠ΅ΠΌ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ». ΠΠ·Π΄Π°ΡΠ΅Π»ΡΡΡΠ²ΠΎ «ΠΠ₯Π-ΠΠ΅ΡΠ΅ΡΠ±ΡΡΠ³» 2002 Π³ΠΎΠ΄.
ΠΠ΄Π΅ΡΡ Ρ
ΠΎΡΠΎΡΠΎ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎΡΡΠΎΠ²Π½Π΅Π²Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ².
Π― Π½ΠΈ Π² ΠΊΠΎΠ΅ΠΉ ΠΌΠ΅ΡΠ΅ Π½Π΅ ΠΏΡΠ΅ΡΠ΅Π½Π΄ΡΡ ΠΊΠ°ΠΊ Π½Π° ΠΏΠΎΠ»Π½ΠΎΡΡ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΌΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ², ΡΠ°ΠΊ ΠΈ Π½Π° 100% ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΡ ΠΈ Π΄ΠΎΡΡΠΎΠ²Π΅ΡΠ½ΠΎΡΡΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π·Π΄Π΅ΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ (Π½ΠΎ Π²ΡΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠ΅ Π·Π΄Π΅ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Ρ ΠΈ ΡΠ²Π»ΡΡΡΡΡ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΡΠΌΠΈ). ΠΡΠ΄Ρ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ Π²ΡΠ΅ΠΌ, ΠΏΡΠΈΡΠ»Π°Π²ΡΠΈΠΌ ΠΌΠ½Π΅ (01_artem@mail.ru) ΠΈΠ»ΠΈ Π²ΡΡΠΊΠ°Π·Π°Π²ΡΠΈΠΌ Π² ΡΠΎΡΡΠΌΠ΅ ΡΠ²ΠΎΠΈ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΡ.
ΠΡΠ°ΠΊ, Ρ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡ ΠΊ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΡ, ΡΠ΅ΡΠΈΠ²ΡΠ΅ΠΌΡ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΡΠ°ΠΉΠ²Π΅Ρ ΡΡΠΎΠ²Π½Ρ ΡΠ΄ΡΠ° ΠΏΠΎΠ΄ Win2000/NT. ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠΈ Π·Π°ΠΌΠ΅ΡΠΊΠΈ ΠΏΠΎΠΌΠΎΠ³ΡΡ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ ΠΊΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈ ΡΠΈΠ».
ΠΡΠ°ΠΊ, Π½Π°ΡΠ½Π΅ΠΌ. ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Π½Π°Π΄ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ Visul C++ 6.0, MSDN ΠΈ NTDDK ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π² ΡΡΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅. ΠΠΈΡΠ½ΠΎ Ρ ΠΏΠΎΠ»ΡΠ·ΡΡΡΡ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠΎΠΌ UltraEdit Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ΅ΠΊΡΡΠ°ΠΌΠΈ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ², Π½ΠΎ, Π² ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅, ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π±ΠΈΡΠ°ΡΡ Π² Π»ΡΠ±ΠΎΠΌ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΌ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅, Ρ ΠΎΡΡ Π² NotePad.
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΏΠ°ΠΏΠΊΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠΌ (ΠΏΡΡΡΡ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ C:myDriver). Π ΡΡΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ 5 ΡΠ°ΠΉΠ»ΠΎΠ²:
1. myDrv.c
2. myDrv.h
3. myDrv.rc
4. MAKEFILE
5. SOURCES
ΠΠ°ΡΠ½Π΅ΠΌ Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΡΠ°ΠΉΠ»Π°. Π SOURCES ΡΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
#define FIRST_IOCTL_INDEX 0x800
#define FILE_DEVICE_myDRV 0x00008000
#define TEST_SMTH CTL_CODE(FILE_DEVICE_myDRV, \
FIRST_IOCTL_INDEX + 101, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#include «ntddk.h»
#include «myDrv.h»
#include «parallel.h»
#define NT_DEVICE_NAME L»\\Device\\myDrv»
#define DOS_DEVICE_NAME L»\\DosDevices\\myDrv»
//ΡΡΡΡΠΊΡΡΡΠ° ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π°
typedef struct _DEVICE_EXTENSION
<
PDRIVER_OBJECT DriverObject;
PDEVICE_OBJECT DeviceObject;
PFILE_OBJECT FileObject;
HANDLE Handle;
//ΠΏΡΠΎΡΠΎΡΠΈΠΏΡ ΡΡΠ½ΠΊΡΠΈΠΉ
NTSTATUS
DriverDeviceControl(IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp);
VOID
DriverUnload(IN PDRIVER_OBJECT DriverObject);
NTSTATUS
DriverOpen(IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp);
NTSTATUS
DriverClose(IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp);
NTSTATUS
DriverEntry(IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath)
<
PDEVICE_OBJECT deviceObject;
UNICODE_STRING deviceNameUnicodeString;
UNICODE_STRING deviceLinkUnicodeString;
PDEVICE_EXTENSION extension;
NTSTATUS ntStatus;
if (!NT_SUCCESS(ntStatus)) return ntStatus;
DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = DriverDeviceControl;
DriverObject->DriverUnload = DriverUnload;
DriverObject->MajorFunction[IRP_MJ_CREATE] = DriverOpen;
DriverObject->MajorFunction[IRP_MJ_CLOSE] = DriverClose;
extension = (PDEVICE_EXTENSION) deviceObject->DeviceExtension;
extension->DeviceObject = deviceObject;
extension->DriverObject = DriverObject;
// Create counted string version of our Win32 device name.
RtlInitUnicodeString(&deviceLinkUnicodeString, DOS_DEVICE_NAME);
// Create a link from our device name to a name in the Win32 namespace.
ntStatus = IoCreateSymbolicLink(&deviceLinkUnicodeString, &deviceNameUnicodeString);
if (!NT_SUCCESS(ntStatus))
<
IoDeleteDevice(deviceObject);
return ntStatus;
>
return STATUS_SUCCESS;
>
//———————————————————————————————-
VOID
DriverUnload(IN PDRIVER_OBJECT DriverObject)
<
UNICODE_STRING deviceLinkUnicodeString;
PDEVICE_EXTENSION extension;
PIRP pNewIrp = NULL;
ULONG m_size;
NTSTATUS ntStatus;
extension = DriverObject->DeviceObject->DeviceExtension;
// Create counted string version of our Win32 device name.
RtlInitUnicodeString(&deviceLinkUnicodeString, DOS_DEVICE_NAME);
// Delete the link from our device name to a name in the Win32 namespace.
IoDeleteSymbolicLink(&deviceLinkUnicodeString);
// Finally delete our device object
IoDeleteDevice(DriverObject->DeviceObject);
>
//————————————————————————————————
NTSTATUS
DriverOpen(IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp)
<
Irp->IoStatus.Status = STATUS_SUCCESS;
Irp->IoStatus.Information = 0;
IoCompleteRequest(Irp, IO_NO_INCREMENT);
return STATUS_SUCCESS;
>
//————————————————————————————————
NTSTATUS
DriverClose(IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp)
<
Irp->IoStatus.Status = STATUS_SUCCESS;
Irp->IoStatus.Information = 0;
IoCompleteRequest(Irp, IO_NO_INCREMENT);
return STATUS_SUCCESS;
>
//————————————————————————————————
NTSTATUS
DriverDeviceControl(IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp)
<
NTSTATUS ntStatus;
PIO_STACK_LOCATION irpStack;
PDEVICE_EXTENSION extension;
PULONG ioBuffer;
ULONG ioControlCode;
ULONG port = 0;
Irp->IoStatus.Status = STATUS_SUCCESS;
Irp->IoStatus.Information = 0;
irpStack = IoGetCurrentIrpStackLocation(Irp);
extension = DeviceObject->DeviceExtension;
ioBuffer = Irp->AssociatedIrp.SystemBuffer;
ioControlCode = irpStack->Parameters.DeviceIoControl.IoControlCode;
switch (ioControlCode)
<
case TEST_SMTH:
ioBuffer[0] =(ULONG)DriverEntry;//Π Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π° Π°Π΄ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ DriverEntry
Irp->IoStatus.Information = 4;
break;
default:
Irp->IoStatus.Status = STATUS_INVALID_PARAMETER;
break;
>
ntStatus = Irp->IoStatus.Status;
IoCompleteRequest(Irp, IO_NO_INCREMENT);
return ntStatus;
>
ΠΠ°Π»Π΅Π΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ ΠΏΡΠΎΡΠΎΡΠΈΠΏΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΡΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΡΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠ΅ ΠΈΠΌΠ΅Π½Π°, ΠΠ ΠΈΡ ΡΠΈΠ³Π½Π°ΡΡΡΠ° (ΡΠΎΡΡΠ°Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Ρ ΡΠΈΠΏΠΎΠΌ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ) ΠΆΠ΅ΡΡΠΊΠΎ Π·Π°Π΄Π°Π½Ρ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ. [2]:ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½Π°Ρ ΡΠ°ΡΡΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ DriverEntry(), ΠΊΠΎΡΠΎΡΠ°Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ Π½Π° ΡΡΠ°ΠΏΠ΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°. ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π²ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠΎ Π΅Π³ΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π½Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° ΡΠΈΠΏΠ° PDRIVER_OBJECT.
ΠΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° (driver object), ΠΎΠ»ΠΈΡΠ΅ΡΠ²ΠΎΡΡΡΡΠΈΠΉ ΠΎΠ±ΡΠ°Π· Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° Π² ΠΏΠ°ΠΌΡΡΠΈ. Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΠΎΠ±ΡΠ΅ΠΊΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° Π΄Π°Π½Π½ΡΠ΅ ΠΈ Π°Π΄ΡΠ΅ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΉ. Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° (Π² DriverEntry()) ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΡΡΡΠΎΠΉΡΡΠ² (device object), ΠΎΠ»ΠΈΡΠ΅ΡΠ²ΠΎΡΡΡΡΠΈΠ΅ ΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π°, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΄ΡΠ°ΠΉΠ²Π΅Ρ. ΠΡΠΎΡ ΡΠ°ΠΌΡΠΉ device object Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ Π΄Π»Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° ΠΈ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ (ΠΊΠ°ΠΊ ΠΈ Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅) Π΄Π°ΠΆΠ΅ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π΄ΡΠ°ΠΉΠ²Π΅Ρ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡ-Π»ΠΈΠ±ΠΎ ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌΡ ΡΡΡΡΠΎΠΉΡΡΠ²Ρ.
ΠΠ°Π»Π΅Π΅, Π² ΠΏΠ΅ΡΠ²ΡΡ ΡΡΡΠΎΠΊΠ°Ρ DriverEntry ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π² Π½Π΅ΠΉ Π΄Π°Π½Π½ΡΠ΅, Π² Ρ.Ρ. ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° device object, ΠΈ Π΄Π²Π΅ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ UNICODE_STRING Ρ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΡΡΡΡΠΎΠΉΡΡΠ². Π‘ΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΡΡ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ ΡΡΡΡΠΎΠΉΡΡΠ²Π°, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΌ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠΌ, ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π½Π΅Π³ΠΎ. ΠΠ΄Π½Π°ΠΊΠΎ Π΄Π»Ρ ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ Π½Π΅ΠΌΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ (Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ CreateFile()).
ΠΠ°Π»Π΅Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π½Π΅ΡΡΠΈ Π² ΠΎΠ±ΡΠ΅ΠΊΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° Π°Π΄ΡΠ΅ΡΠ° ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, Π²ΠΊΠ»ΡΡΠ΅Π½Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠΌ Π² ΡΠ΅ΠΊΡΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°. ΠΠ°ΡΡΠΈΠ² MajorFunction ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΡΡΡΠΊΡΡΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π ΡΡΠΎΡ ΠΌΠ°ΡΡΠΈΠ² ΠΌΡ ΠΈ Π·Π°Π½ΠΎΡΠΈΠΌ Π°Π΄ΡΠ΅ΡΠ° ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ (Ρ.Π΅. ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π² ΠΎΡΠ²Π΅Ρ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°). ΠΠ°Π²Π΅ΡΡΠ°Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ return Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ΄Π° ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ.
Π€ΡΠ½ΠΊΡΠΈΡ DriverUnload() Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΈ Π²ΡΠ³ΡΡΠ·ΠΊΠ΅ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°. ΠΠ΄Π΅ΡΡ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠΎ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΡΡΡΠΎΠΉΡΡΠ²Π°, ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π² DriverEntry().
Π€ΡΠ½ΠΊΡΠΈΠΈ DriverOpen ΠΈ DriverClose Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°ΡΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΏΡΠΎΡΡΠΎ STATUSS_SUCCESS. ΠΡΡΠ°ΡΠΈ, Π²ΡΠ΅ ΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΎΠΆΠ΅ ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠ΅ ΠΈΠΌΠ΅Π½Π°, Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ ΠΈΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΡΡΠΎΠ³ΠΎ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Ρ.
ΠΡΠ°ΠΊ, Π΄ΡΠ°ΠΉΠ²Π΅Ρ ΠΌΡ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ. Π’Π΅ΠΏΠ΅ΡΡ Π½Π°Π΄ΠΎ Π΅Π³ΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ. Π’.ΠΊ. ΠΏΡΠΎΡΠ΅ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΈΠ΄Π΅Ρ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΡΠΎ Π΄Π»Ρ ΡΡΠΎΠΉ ΡΠ΅Π»ΠΈ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΡΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ bat-ΡΠ°ΠΉΠ»ΠΎΠΌ. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ bat-ΡΠ°ΠΉΠ» Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ, Π΄ΠΎΠΏΡΡΡΠΈΠΌ, Crt.bat ΠΈ ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ΠΌ:
NTDDK Ρ ΠΌΠ΅Π½Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π² ΠΊΠΎΡΠ΅Π½Ρ Π‘:, Π΅ΡΠ»ΠΈ Ρ ΠΠ°Ρ ΠΏΠΎ-Π΄ΡΡΠ³ΠΎΠΌΡ, ΡΠΎ Π²ΠΌΠ΅ΡΡΠΎ C:NTDDKbin ΠΈ C:NTDDK ΠΏΡΠΎΠΏΠΈΡΠΈΡΠ΅ ΠΏΠΎΠ»Π½ΡΠ΅ ΠΏΡΡΠΈ ΠΊ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΠΏΠ°ΠΏΠΊΠ°ΠΌ.
ΠΡΠ°ΠΊ, ΡΠ΅ΠΏΠ΅ΡΡ Π·Π°ΠΏΡΡΡΠΈΠΌ Π½Π°Ρ Crt.bat. ΠΠΎΡΠ»Π΅ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π² ΠΏΠ°ΠΏΠΊΠ΅ C:myDriverobjfrei386 Π½Π°Ρ ΠΎΠ΄ΠΈΠΌ Π³ΠΎΡΠΎΠ²ΡΠΉ Π΄ΡΠ°ΠΉΠ²Π΅Ρ myDrv.sys. ΠΠ°Ρ Π΄ΡΠ°ΠΉΠ²Π΅Ρ ΠΏΠΎΠΊΠ° ΡΠΌΠ΅Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π»ΠΈΡΡ Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ/Π²ΡΠ³ΡΡΠΆΠ°ΡΡΡΡ ΠΈ ΠΏΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠΌΡ Π·Π°ΠΏΡΠΎΡΡ ΠΏΠΎΡΡΠ»Π°Π΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π°Π΄ΡΠ΅Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠ²ΠΎΠΈΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡ.
Π’Π΅ΠΏΠ΅ΡΡ Π·Π°ΠΉΠΌΠ΅ΠΌΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅Π³ΠΎ Ρ Π½Π°ΡΠΈΠΌ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠΌ. ΠΡΠ΅ ΡΠ°Π· Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Ρ, ΡΡΠΎ ΠΌΡ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ ΠΏΠΎΠ΄ Win2000. ΠΡΠ° ΠΠ‘ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΡΡ Π·Π°Π³ΡΡΠ·ΠΊΡ/Π²ΡΠ³ΡΡΠ·ΠΊΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°.
Π’ΠΎΡΠ½Π΅Π΅, Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΡΡ Π·Π°Π³ΡΡΠ·ΠΊΡ/Π²ΡΠ³ΡΡΠ·ΠΊΡ ΡΠ»ΡΠΆΠ± (service), Π½ΠΎ Ρ.ΠΊ. Π² Win2000 Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ»ΡΠΆΠ±Ρ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΈ Π΄ΡΠ°ΠΉΠ²Π΅Ρ, Ρ Π±ΡΠ΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±Π° ΡΡΠΈ ΡΠ΅ΡΠΌΠΈΠ½Π°, ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Ρ, Π² Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠ΅, Π½Π°Ρ Π΄ΡΠ°ΠΉΠ²Π΅Ρ.
ΠΠ»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈ Π²ΡΠ³ΡΡΠ·ΠΊΠΈ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ»ΡΠΆΠ±Π°ΠΌΠΈ SC Manager (Service Control Manager). ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ SC, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠ° ΡΠ»ΡΠΆΠ±. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ ΡΡΠ½ΠΊΡΠΈΠΈ OpenSCManager(). ΠΠ΅ΡΠΊΡΠΈΠΏΡΠΎΡ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠ° ΡΠ»ΡΠΆΠ± Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ ΠΊ ΡΡΠ½ΠΊΡΠΈΡΠΌ CreateServise() ΠΈ OpenService(). ΠΠ΅ΡΠΊΡΠΈΠΏΡΠΎΡΡ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠ΅ ΡΡΠΈΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ ΠΊ Π²ΡΠ·ΠΎΠ²Π°ΠΌ, ΠΈΠΌΠ΅ΡΡΠΈΠΌ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΠΊ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΠ»ΡΠΆΠ±Π΅. Π ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌ Π²ΡΠ·ΠΎΠ²Π°ΠΌ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ControlService(), DeleteService() ΠΈ StartService(). ΠΠ»Ρ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΎΠ² ΠΎΠ±ΠΎΠΈΡ ΡΠΈΠΏΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π²ΡΠ·ΠΎΠ² CloseServiceHandle().
ΠΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠ΅ΠΊΡΡ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ Π½Π° Visual C++ 6.0:
#include
#include «LoadDRV.h»
#include
#include
void main()
<
LPTSTR m_name = new char[20];
strcpy(m_name, «myDrv.sys»);
if (drvLoad(m_name)) TestSmth();
drvUnLoad(m_name);
delete m_name;
>
DeviceIoControl(hDevice, IOCTL_TEST_SMTH, NULL, 0,
&test, 4, &ReturetLength, NULL);
printf(«TestSmth= %in»,test);
return test;
>
///**************Π€ΡΠ½ΠΊΡΠΈΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ************************
bool drvLoad(char* name)
<
printf (name);
hSCManager=NULL;
hService=NULL;
bool status;
if(OpenManager())
<
if(drvCreateService(name))
<
if(drvStartService(name))
<
status=TRUE;
printf(«n Driver is now load. n»);
>
>
>
hDevice = CreateFile («//./myDrv», GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, NULL);
bool OpenManager()
<
bool status;
status=FALSE;
if(hSCManager!=NULL)
<
CloseServiceHandle (hSCManager);
hSCManager=NULL;
>
hSCManager=OpenSCManager (NULL,NULL,SC_MANAGER_ALL_ACCESS);
if (hSCManager == NULL)
<
error(_OpenSCManager);
> else status=TRUE;
//———————————————————————
bool drvCreateService(PCHAR pDrvName)
<
LPTSTR lpBuffer;
lpBuffer = new char[256];
bool status = FALSE;
LPTSTR awPath; // ΠΏΡΡΡ ΠΊ Π΄ΡΠ°ΠΉΠ²Π΅ΡΡ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ pDrvName
// ΡΠΎΡΠΌΠΈΡΡΠ΅ΠΌ ΠΏΡΡΡ ΠΊ pDrvName, Π΄ΡΠ°ΠΉΠ²Π΅Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π»Π΅ΠΆΠ°ΡΡ ΡΡΠ΄ΠΎΠΌ Ρ exe-ΡΠ½ΠΈΠΊΠΎΠΌ
GetCurrentDirectory(256, lpBuffer);
strcat(lpBuffer,»\»);
strcat(lpBuffer,pDrvName);
awPath = lpBuffer;
hService = CreateService(hSCManager,pDrvName,pDrvName,SERVICE_ALL_ACCESS, SERVICE_KERNEL_DRIVER,SERVICE_DEMAND_START,SERVICE_ERROR_NORMAL,awPath,NULL,NULL,NULL,NULL,NULL);
if(!hService)
<
error(_CreateService);
status = drvOpenService(pDrvName);//ΠΡΡΠ°Π΅ΠΌΡΡ ΠΎΡΠΊΡΡΡΡ ΡΠ»ΡΠΆΠ±Ρ
>
else status=TRUE;
delete lpBuffer;
return status;
>
bool status;
status=FALSE;
if(hService!=NULL) CloseService();
hService=OpenService(hSCManager,name,SERVICE_ALL_ACCESS);
if (!hService) error(_OpenService);
else status=TRUE;
return status;
>
//———————————————————————
bool drvStartService(PCHAR name)
<
bool status;
status=FALSE;
if(!StartService(hService,0,NULL))
<
error(_StartService);
printf(«Deleting service. «);
drvDeleteService(name)
>
else status=TRUE;
return status;
>
//———————————————————————
bool drvDeleteService(PCHAR name)
<
bool status;
status=FALSE;
CloseService();
if(!DeleteService(hService)) error(_DeleteService);
else status=TRUE;
return status;
>
if (hDevice!=INVALID_HANDLE_VALUE)
<
if(!CloseHandle(hDevice)) error(_CloseHandle);
hDevice=INVALID_HANDLE_VALUE;
>
if (hService)
<
status = ControlService(hService,SERVICE_CONTROL_STOP,&ServiceStatus);
if(!status) error(_SERVICE_CONTROL_STOP);
status = DeleteService(hService);
if(!status) error(_DeleteService);
status = CloseServiceHandle(hService);
if(!status) error(_CloseServiceHandle);
>
if(!CloseServiceHandle(hSCManager)) error(_CloseServiceHandle);
if (status) printf(«Driver Unload. SUCCESSn»);
return status;
>
//———————————————————————
void error(error_index erIndex)
< DWORD err;
err=GetLastError();
switch(erIndex)
<
case _OpenSCManager:
printf(«OpenSCManager failed with Error=%in»,err);
break;
case _GetFullPathName:
printf(«GetFullPathName failed with Error=%in»,err);
break;
case _CreateService:
switch (err)
<
case 1073:
printf(«The specified service already exists.n»);
printf(«opening this service. «);
break;
default:
printf(«CreateService failed with Error=%in»,err);
>
break;
case _OpenService:
printf(«OpenService failed with Error=%in»,err);
break;
case _StartService:
printf(«StartService failed with Error=%in»,err);
break;
case _DeleteService:
printf(«DeleteService failed with Error=%in»,err);
break;
case _SERVICE_CONTROL_STOP:
printf(«SERVICE_CONTROL_STOP failed with Error=%in»,err);
break;
case _CreateFile:
printf(«CreateFile failed with Error=%in»,err);
break;
case _CloseHandle:
printf(«CloseHandle failed with Error=%in»,err);
break;
case _CloseServiceHandle:
printf(«CloseServiceHandle failed with Error=%in»,err);
break;
#define FIRST_IOCTL_INDEX 0x800
#define FILE_DEVICE_myDrv 0x00008000
#define TEST_SMTH CTL_CODE(FILE_DEVICE_myDrv, \
0x800 + 101, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
ΠΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ Π΄ΡΠ°ΠΉΠ²Π΅Ρ, ΡΠ°ΠΉΠ» ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π»Π΅ΠΆΠΈΡ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅, ΡΡΠΎ ΠΈ exe-ΡΠ°ΠΉΠ» Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠ΅ΠΊΡΡ:
Π main() ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° (myDrv.sys) ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ ΡΡΠΎ ΠΈΠΌΡ Π² ΡΡΠ½ΠΊΡΠΈΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° drvLoad(), ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠΎ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΎΠΌ ΡΠ»ΡΠΆΠ±, ΠΈ Π² ΠΊΠΎΠ½ΡΠ΅ Π²ΡΠ·ΡΠ²Π°Π΅Ρ CreateFile(), ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ, Π½ΡΠΆΠ½ΡΠΉ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠΌ ΠΊΠ°ΠΊ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ. ΠΡΠΎΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ DeviceIoControl.
ΠΡΠ»ΠΈ Π΄ΡΠ°ΠΉΠ²Π΅Ρ Π·Π°Π³ΡΡΠΆΠ΅Π½ ΡΡΠΏΠ΅ΡΠ½ΠΎ, ΡΠΎ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ TestSmth(), Π²Π½ΡΡΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΈ ΠΏΠΎΡΡΠ»Π°Π΅ΠΌ Π΄ΡΠ°ΠΉΠ²Π΅ΡΡ IRP-ΠΏΠ°ΠΊΠ΅Ρ (Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΡΠ·ΠΎΠ²Π° DeviceIoControl()). ΠΡΠΈΠ½ΡΠ² ΡΡΠΎΡ ΠΏΠ°ΠΊΠ΅Ρ, Π½Π°Ρ Π΄ΡΠ°ΠΉΠ²Π΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π°Π΄ΡΠ΅Ρ ΡΠ²ΠΎΠ΅ΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ DriverEntry. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π²ΡΠ³ΡΡΠΆΠ°Π΅ΠΌ Π΄ΡΠ°ΠΉΠ²Π΅Ρ. ΠΡΠ΅.
ΠΡΠ°ΠΊ, ΠΌΡ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠΈΠΉ (Π΄Π°Π»ΡΡΠ΅ Π½Π΅ΠΊΡΠ΄Π°) Π΄ΡΠ°ΠΉΠ²Π΅Ρ ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅Π΅ Ρ Π½ΠΈΠΌ. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Ρ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΡΠΈΡΠΈΡΠΎΠ²Π°Π» ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ ΠΈΠ· ΠΊΠ½ΠΈΠ³ΠΈ Π. Π. Π ΡΠ΄Π°ΠΊΠΎΠ², Π. Π. Π€ΠΈΠ½ΠΎΠ³Π΅Π½ΠΎΠ², ΠΏΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π΄Π΅Π»Π°Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π½Π΅Π΅ Π² Π²ΠΈΠ΄Π΅: [2].
Π§Π΅ΡΠ΅Π· Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π½Π°ΠΏΠΈΡΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ Π½Π° Π±Π°Π·Π΅ ΡΡΠΎΠ³ΠΎ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° Π½Π°ΠΏΠΈΡΠ°ΡΡ Π΄ΡΠ°ΠΉΠ²Π΅Ρ-ΡΠΈΠ»ΡΡΡ Π΄Π»Ρ LPT-ΠΏΠΎΡΡΠ°.

dE fENDER 