ΠΡΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠΊΠ°ΠΆΠΈΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ .DLL-ΡΠ°ΠΉΠ». ΠΠΎΠ³Π΄Π° Π±ΡΠ΄Π΅ΡΠ΅ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ Π² Π½Π°Π»ΠΈΡΠΈΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΡΠΎΠΌΡ ΡΠ°ΠΉΠ»Ρ; ΡΠ°ΡΡΠΎ ΡΡΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΡΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ .DLL-ΡΠ°ΠΉΠ»Π° Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ Ρ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΌ ΡΠ°ΠΉΠ»ΠΎΠΌ. ΠΠ°ΠΊ ΡΠ°Π½Π΅Π΅ ΡΠΆΠ΅ ΠΎΡΠΌΠ΅ΡΠ°Π»ΠΎΡΡ, ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΡΠ΄ ΠΏΡΠ°Π²ΠΈΠ» ΠΏΠΎΠΈΡΠΊΠ° DLL, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ², Π² ΠΊΠΎΡΠΎΡΡΡ Windows Π±ΡΠ΄Π΅Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡ ΠΏΠΎΠΈΡΠΊ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ .DLL-ΡΠ°ΠΉΠ»Π°, Π° ΡΠ°ΠΊΠΆΠ΅ Π΄ΡΡΠ³ΠΈΡ DLL ΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ ΡΠ°ΠΉΠ»ΠΎΠ², Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡ ΡΠ°ΠΉΠ»Ρ, ΠΏΡΠ΅ΠΊΡΠ°ΡΠ°Ρ ΡΡΠΎΡ ΠΏΠΎΠΈΡΠΊ, ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π±ΡΠ΄Π΅Ρ Π½Π°ΠΉΠ΄Π΅Π½ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ. ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ² ΠΏΡΠΈ ΠΏΠΎΠΈΡΠΊΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠ°Ρ ΠΊΠ°ΠΊ Π² ΡΠ»ΡΡΠ°Π΅ ΡΠ²Π½ΠΎΠ³ΠΎ, ΡΠ°ΠΊ ΠΈ Π² ΡΠ»ΡΡΠ°Π΅ Π½Π΅ΡΠ²Π½ΠΎΠ³ΠΎ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ.
β’ ΠΠ°ΡΠ°Π»ΠΎΠ³, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
β’ Π’Π΅ΠΊΡΡΠΈΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³, Π΅ΡΠ»ΠΈ ΠΎΠ½ ΠΎΡΠ»ΠΈΡΠ΅Π½ ΠΎΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ.
β’ Π‘ΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Windows. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΡΠΎΡ ΠΏΡΡΡ, Π²ΡΠ·Π²Π°Π² ΡΡΠ½ΠΊΡΠΈΡ GetSystemDirectory; ΡΠ°ΠΊΠΎΠ²ΡΠΌ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Ρ:\WINDOWS\SYSTEM32.
β’ Π‘ΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ 16-ΡΠ°Π·ΡΡΠ΄Π½ΠΎΠΉ Windows, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ Π² ΡΠΈΡΡΠ΅ΠΌΠ°Ρ Windows 9x. Π€ΡΠ½ΠΊΡΠΈΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ°Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΡΡΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΡΠΎΠΌΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Ρ, ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ, ΠΈ Π΄Π»Ρ Π½Π°ΡΠΈΡ ΡΠ΅Π»Π΅ΠΉ ΠΎΠ½ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π½Π΅Π½ΡΠΆΠ½ΡΠΌ.
β’ ΠΠ°ΡΠ°Π»ΠΎΠ³ Windows (ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ GetWindowsDirectory).
β’ ΠΠ°ΡΠ°Π»ΠΎΠ³ΠΈ, ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ PATH, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ Π² ΡΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, Π² ΠΊΠ°ΠΊΠΎΠΉ ΠΎΠ½ΠΈ ΡΠΊΠ°Π·Π°Π½Ρ.
ΠΠ°ΠΌΠ΅ΡΡΡΠ΅, ΡΡΠΎ ΡΡΠΎΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ² ΠΏΡΠΈ ΠΏΠΎΠΈΡΠΊΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ, ΠΎ ΡΠ΅ΠΌ Π³ΠΎΠ²ΠΎΡΠΈΡΡΡ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ "Π―Π²Π½ΠΎΠ΅ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅". ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ ΠΏΠΎΠΈΡΠΊΠ° ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅ Web-ΡΠ°ΠΉΡ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/loadlibrary.asp, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡΡΠ΅ΡΡ Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ SetDllDirectory, Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π² Windows NT 5.1 (ΡΠΎ Π΅ΡΡΡ Windows XP). ΠΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ ΠΏΠΎΠΈΡΠΊΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°ΠΊΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΡ LoadLibraryEx, ΠΎΠΏΠΈΡΠ°Π½Π½Π°Ρ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅.
ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ ΠΏΠΎΠΈΡΠΊΠ° ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅ΡΡΡ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Utilities, Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΌ Π½Π° Web-ΡΠ°ΠΉΡΠ΅ ΠΊΠ½ΠΈΠ³ΠΈ, Π° ΡΠ°ΠΊΠΈΠ΅ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠ°ΠΊ ReportError, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΏΠΎΡΡΠΈ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ².
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΡΠΊΡΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΡΠ΅ΠΊ Π²Ρ ΠΎΠ΄Π° ΡΡΠ½ΠΊΡΠΈΠΉ, Ρ ΠΎΡΡ ΡΡΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ Π½Π΅ ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΡΡΡΡ.
Π―Π²Π½ΠΎΠ΅ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅
Π―Π²Π½ΠΎΠ΅ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅, ΠΈΠ»ΠΈ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ (run-time linking), ΡΡΠ΅Π±ΡΠ΅Ρ, ΡΡΠΎΠ±Ρ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π»ΠΈΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΠΈΠ»ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ DLL. ΠΠ°Π»Π΅Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π°Π΄ΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡΠ΅Π½Π½ΠΎΠΉ ΡΠΎΡΠΊΠΈ Π²Ρ ΠΎΠ΄Π° ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΠΎΡ Π°Π΄ΡΠ΅Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ. Π Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΡΡΠ½ΠΊΡΠΈΡ Π½Π΅ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΡΡΡ; Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ. ΠΠΎΡΡΠΎΠΌΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΌ. ΠΠ»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΡΡΠ΅Π±ΡΡΡΡΡ ΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ: LoadLibrary (ΠΈΠ»ΠΈ LoadLibraryEx), GetProcAddress ΠΈ FreeLibrary. ΠΠ° 16-Π±ΠΈΡΠΎΠ²ΠΎΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΈΠ΅ Π² Π½ΠΈΡ Π΄Π°Π»ΡΠ½ΠΈΡ (far) ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ ΠΈ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΎΠ² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ².
ΠΠ»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠ»ΡΠΆΠ°Ρ Π΄Π²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ: LoadLibrary ΠΈ LoadLibraryEx.
HINSTANCE LoadLibrary(LPCTSTR lpLibFileName)
HINSTANCE LoadLibraryEx(LPCTSTR lpLibFileName, HANDLE hFile, DWORD dwFlags)
Π ΠΎΠ±ΠΎΠΈΡ ΡΠ»ΡΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ° (ΡΠΈΠΏΠ° HINSTANCE, Π° Π½Π΅ HANDLE) Π² ΡΠ»ΡΡΠ°Π΅ ΠΎΡΠΈΠ±ΠΊΠΈ Π±ΡΠ΄Π΅Ρ NULL. Π‘ΡΡΡΠΈΠΊΡ .DLL Π² ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΠΉΠ»Π° ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ LoadLibrary ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΡΠ°ΠΊΠΆΠ΅ .ΠΠ₯Π-ΡΠ°ΠΉΠ»Ρ. ΠΡΠΈ ΡΠΊΠ°Π·Π°Π½ΠΈΠΈ ΠΏΡΡΠ΅ΠΉ Π΄ΠΎΡΡΡΠΏΠ° Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΠΊΠΎΡΠΎΠΉ ΡΠ΅ΡΡΡ (\); ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΏΡΡΠΌΠΎΠΉ ΠΊΠΎΡΠΎΠΉ ΡΠ΅ΡΡΡ (/) Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π΅ Π±ΡΠ΄ΡΡ.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ DLL ΡΠ²Π»ΡΡΡΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΌ ΡΠ΅ΡΡΡΡΠΎΠΌ, ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΡΡΠ΅ΡΡΠΈΠΊ ΡΡΡΠ»ΠΎΠΊ Π½Π° ΠΊΠ°ΠΆΠ΄ΡΡ DLL (ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΡ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π΅ Π»ΡΠ±ΠΎΠΉ ΠΈΠ· ΡΠΊΠ°Π·Π°Π½Π½ΡΡ Π²ΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ), ΡΠ°ΠΊ ΡΡΠΎ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ. Π€ΡΠ½ΠΊΡΠΈΡ LoadLibrary Π·Π°Π²Π΅ΡΡΠΈΡΡΡ Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ Π΄Π°ΠΆΠ΅ Π² ΡΠ»ΡΡΠ°Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ .DLL-ΡΠ°ΠΉΠ»Π°, Π΅ΡΠ»ΠΈ Π΄Π°Π½Π½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° DLL Π½Π΅ΡΠ²Π½ΠΎ ΡΠ²ΡΠ·Π°Π½Π° Ρ Π΄ΡΡΠ³ΠΎΠΉ DLL, Π½Π°ΠΉΡΠΈ ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ.
Π€ΡΠ½ΠΊΡΠΈΡ LoadLibraryEx Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½Π° ΡΡΠ½ΠΊΡΠΈΠΈ LoadLibrary, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΈΠΌΠ΅Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ»Π°Π³ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌΠΈ Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΡ ΠΏΡΡΠ΅ΠΉ ΠΏΠΎΠΈΡΠΊΠ° ΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π² Π²ΠΈΠ΄Π΅ ΡΠ°ΠΉΠ»Π° Π΄Π°Π½Π½ΡΡ . ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ hFile Π·Π°ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ dwFlags ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΡΡΠ΅ΠΌ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΡΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ:
1. LOAD_WITH_ALTERED_SEARCH_PATH: ΠΎΡΠΌΠ΅Π½ΡΠ΅Ρ ΡΠ°Π½Π΅Π΅ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΉ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ² ΠΏΡΠΈ ΠΏΠΎΠΈΡΠΊΠ΅, ΠΈΠ·ΠΌΠ΅Π½ΡΡ Π»ΠΈΡΡ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΈΠ· ΡΠ°Π³ΠΎΠ² ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ ΠΏΠΎΠΈΡΠΊΠ°. ΠΠΌΠ΅ΡΡΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°, ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π·Π°Π³ΡΡΠΆΠ°Π»ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΡΡ ΠΏΠΎΠΈΡΠΊΠ°, ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ Π² ΠΈΠΌΠ΅Π½ΠΈ lpLibFileName.
2. LOAD_LIBRARY_AS_DATAFILE: ΡΠ°ΠΉΠ» Π²ΠΎΡΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΡΠ°ΠΉΠ» Π΄Π°Π½Π½ΡΡ ΠΈ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΏΠΎ Π΅Π³ΠΎ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ΅ ΠΊ Π·Π°ΠΏΡΡΠΊΡ, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ DllMain (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» "Π’ΠΎΡΠΊΠΈ Π²Ρ ΠΎΠ΄Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ DLL" Π΄Π°Π»Π΅Π΅ Π² ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅).
3. DONT_RESOLVE_DLL_REFERENCE: ΡΡΠ½ΠΊΡΠΈΡ DllMain Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π½Π΅ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ; Π·Π°Π³ΡΡΠ·ΠΊΠ° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠΌΠ΅ΡΡΡΡ ΡΡΡΠ»ΠΊΠΈ Π² ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ DLL, ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ.
ΠΠ°ΠΊΠΎΠ½ΡΠΈΠ² ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠΌ DLL β Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ Π½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π·Π°Π³ΡΡΠ·ΠΈΡΡ Π΄ΡΡΠ³ΡΡ Π΅Π΅ Π²Π΅ΡΡΠΈΡ β Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Ρ ΡΠ΅ΡΡΡΡΡ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π΄Π»Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ΅ Π°Π΄ΡΠ΅ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ. ΠΠ΄Π½Π°ΠΊΠΎ DLL ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ ΠΎΡΡΠ°Π²Π°ΡΡΡΡ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΠΎΠΉ, Π΅ΡΠ»ΠΈ ΡΡΠ΅ΡΡΠΈΠΊ ΡΡΡΠ»ΠΎΠΊ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΎΠ½Π° Π²ΡΠ΅ Π΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ.
BOOL FreeLibrary(HINSTANCE hLibModule)
ΠΠΎΡΠ»Π΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, Π½ΠΎ Π΄ΠΎ Π΅Π΅ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π°Π΄ΡΠ΅Ρ Π»ΡΠ±ΠΎΠΉ ΡΠΎΡΠΊΠΈ Π²Ρ ΠΎΠ΄Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠ½ΠΊΡΠΈΡ GetProcAddress.
FARPROC GetProcAddress(HMODULE hModule, LPCSTR lpProcName)
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ hModule, Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° Π΄ΡΡΠ³ΠΎΠΉ ΡΠΈΠΏ ΠΈΠΌΠ΅Π½ΠΈ (HINSTANCE ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΊΠ°ΠΊ HMODULE), ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠΌ (instance) Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌΡΠΌ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ LoadLibrary ΠΈΠ»ΠΈ GetModuleHandle (ΡΠΌ. ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π°Π±Π·Π°Ρ). lpProcName β ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΡΡΠΎΠΊΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ ΠΈΠΌΡ ΡΠΎΡΠΊΠΈ Π²Ρ ΠΎΠ΄Π°; ΡΡΠΎ ΠΈΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π΄Π°Π²Π°ΡΡΡΡ Π² ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ΅ Unicode. Π ΡΠ»ΡΡΠ°Π΅ Π½Π΅ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ NULL. Π‘Π»ΠΎΠ²ΠΎ FARPROC, ΠΎΠ·Π½Π°ΡΠ°ΡΡΠ΅Π΅ "Π΄Π»ΠΈΠ½Π½ΡΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ", ΡΠ²Π»ΡΠ΅ΡΡΡ Π°Π½Π°Ρ ΡΠΎΠ½ΠΈΠ·ΠΌΠΎΠΌ.
ΠΠΌΡ ΡΠ°ΠΉΠ»Π°, ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠ³ΠΎ Ρ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΎΠΌ hHandle, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ GetModuleFileName. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ΅: Π΄Π»Ρ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΠΉΠ»Π° (.DLL ΠΈΠ»ΠΈ .EXE) ΡΡΠ½ΠΊΡΠΈΡ GetModuleHandle Π² ΡΠ»ΡΡΠ°Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠΈΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠΉ Ρ ΡΡΠΈΠΌ ΡΠ°ΠΉΠ»ΠΎΠΌ, Π΅ΡΠ»ΠΈ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Π·Π°Π³ΡΡΠ·ΠΈΠ» Π΅Π³ΠΎ.
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π°Π΄ΡΠ΅Ρ ΡΠΎΡΠΊΠΈ Π²Ρ ΠΎΠ΄Π° Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΡΠΈΠΌΠ΅Ρ: ΡΠ²Π½ΠΎΠ΅ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈ ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ²
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° 2.4, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½Π°Ρ Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΠ· ASCII Π² Unicode, Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ Asc2Un (ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° 2.5), Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΡΠ°ΠΉΠ»Π° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π°. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° 5.3 (Asc2UnMM) ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΎΠΉ ΠΆΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ². ΠΠ±ΡΡΠΎΡΡΠ΅Π»ΡΡΡΠ²Π°, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ Asc2UnMM ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π²ΡΠΈΠ³ΡΡΡ Π² ΡΠΊΠΎΡΠΎΡΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ, ΡΠ°Π½Π΅Π΅ ΡΠΆΠ΅ ΠΎΠ±ΡΡΠΆΠ΄Π°Π»ΠΈΡΡ; Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΎΠ½ΠΈ ΡΠ²ΠΎΠ΄ΡΡΡΡ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ NTFS, Π° ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π±ΠΎΠ»ΡΡΠΈΠΌ.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° 5.7 ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠΌ Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠΈΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΈΠ½ΡΡΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π·Π°Π³ΡΡΠΆΠ΅Π½, Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ DLL, ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π°Π΄ΡΠ΅Ρ ΡΠΎΡΠΊΠΈ Π²Ρ ΠΎΠ΄Π° Asc2Un ΠΈ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Π° ΡΠΎΡΠΊΠ° Π²Ρ ΠΎΠ΄Π°, Π½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π²Π°ΡΠΈΠ°Π½Ρ Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΠΎΡΠΊΠ°ΠΌΠΈ Π²Ρ ΠΎΠ΄Π° Π½Π΅ ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΡΠΎΠ±ΠΎΠ³ΠΎ ΡΡΡΠ΄Π°. ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ, ΠΏΠΎ ΡΡΡΠ΅ΡΡΠ²Ρ, ΡΠΎΠΉ ΠΆΠ΅, ΡΡΠΎ ΠΈ ΠΏΡΠ΅ΠΆΠ΄Π΅, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° DLL, ΠΊΠΎΡΠΎΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π² Π²ΠΈΠ΄Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ. Π ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠΈ 5.9 Π²Π°ΠΌ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π²Π°ΡΠΈΠ°Π½Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π½ΡΠΆΠ½Π°Ρ DLL ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ²ΠΎΠΉΡΡΠ² ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ ΡΠ°ΠΉΠ»Π°. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° Π°Π΄ΡΠ΅ΡΠ° FARPROC ΠΊ ΡΠΈΠΏΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π½ΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΠ³ΠΎ, ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° Π‘.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° 5.7. atouEL: ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ²Π½ΠΎΠ³ΠΎ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ/* ΠΠ»Π°Π²Π° 5. ΠΠ΅ΡΡΠΈΡ atou, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ°Ρ ΡΠ²Π½ΠΎΠ΅ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅. */
#include "EvryThng.h"
int _tmain(int argc, LPTSTR argv[]) {
/* ΠΠ±ΡΡΠ²ΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Asc2Un ΠΊΠ°ΠΊ ΡΡΠ½ΠΊΡΠΈΡ. */
BOOL (*Asc2Un)(LPCTSTR, LPCTSTR, BOOL);
DWORD LocFileIn, LocFileOut, LocDLL, DashI;
HINSTANCE hDLL;
FARPROC pA2U;
LocFileIn = Options(argc, argv, _T("i"), &DashI, NULL);
LocFileOut = LocFileIn + 1;
LocDLL = LocFileOut + 1;
/* ΠΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π°, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠΏΡΡΠ΅Π½ Π»ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ DashI. */