Π€ΡΠ½ΠΊΡΠΈΡ GetTempFileName ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ΅ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ .tmp, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΠΏΡΡΡ Π΄ΠΎΡΡΡΠΏΠ°, ΠΈ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠ°ΠΉΠ». ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΡΠΈΡΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΡΡΠ΄Π΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² (ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° 6.1, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° 7.1 ΠΈ Π΄ΡΡΠ³ΠΈΠ΅).
UINT GetTempFileName(LPCTSTR lpPathName, LPCTSTR lpPrefixString, UINT uUnique, LPTSTR lpTempFileName)
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅: ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ΅ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΠΉΠ»Π°. ΠΡΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ Π±ΡΠ΄Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° uUnique, Π΅ΡΠ»ΠΈ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ½ΠΎ Π±ΡΠ»ΠΎ Π·Π°Π΄Π°Π½ΠΎ Π½Π΅Π½ΡΠ»Π΅Π²ΡΠΌ. Π ΡΠ»ΡΡΠ°Π΅ Π½Π΅ΡΠ΄Π°ΡΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π²Π½ΠΎ Π½ΡΠ»Ρ.
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡlpPathName β ΠΊΠ°ΡΠ°Π»ΠΎΠ³, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΡΠ°ΠΉΠ». Π’ΠΈΠΏΠΈΡΠ½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΡΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΠΎΠΊΠ° ".", ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠ°Ρ Π½Π° ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³. Π Π΄ΡΡΠ³ΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ Windows GetTempPath, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠΌΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ², Π½ΠΎ Π½Π°ΠΌΠΈ Π·Π΄Π΅ΡΡ Π½Π΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ.
lpPrefixString β ΠΏΡΠ΅ΡΠΈΠΊΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π² ΠΈΠΌΠ΅Π½ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°. ΠΠΎΠΏΡΡΠΊΠ°ΡΡΡΡ Π»ΠΈΡΡ 8-Π±ΠΈΡΠΎΠ²ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ASCII. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° uUnique ΠΎΠ±ΡΡΠ½ΠΎ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΡΠ°Π²Π½ΡΠΌ Π½ΡΠ»Ρ, ΡΡΠΎΠ±Ρ ΡΡΠ½ΠΊΡΠΈΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π»Π° ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΡΠ΅ΡΡΡΠ΅Ρ ΡΠ°Π·ΡΡΠ΄Π½ΡΠΉ ΠΏΡΠ΅ΡΠΈΠΊΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π° Π΅Π³ΠΎ Π² ΠΈΠΌΠ΅Π½ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°. ΠΡΠΈ Π½Π΅Π½ΡΠ»Π΅Π²ΠΎΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠΈ ΡΡΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΡΠ°ΠΉΠ» Π½Π΅ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ, ΡΠ°ΠΊ ΡΡΠΎ ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ CreateFile, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ β Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ»Π°Π³Π° FILE_FLAG_DELETE_ON_CLOSE.
lpTempFileName β ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π±ΡΡΠ΅Ρ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠΉ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈΠΌΠ΅Π½ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°. Π Π°Π·ΠΌΠ΅Ρ Π±ΡΡΠ΅ΡΠ°, Π²ΡΡΠ°ΠΆΠ΅Π½Π½ΡΠΉ Π² Π±Π°ΠΉΡΠ°Ρ , Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΠΠΠ₯Π ΠΠ’Π. Π Π΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅Π΅ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ΠΌ ΡΡΡΠΎΠΊ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΠΏΡΡΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ°ΠΉΠ»Ρ, ΠΏΡΠ΅ΡΠΈΠΊΡΠ°, ΡΠ΅ΡΡΡΠ΅Ρ ΡΠ°Π·ΡΡΠ΄Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° ΠΈ ΡΡΡΡΠΈΠΊΡΠ° .tmp.
Π’ΠΎΡΠΊΠΈ ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
NT 5.0 ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅) ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Π² ΡΠΎΡΠΊΠ΅ ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π½Π°Ρ ΠΎΠ΄ΡΡΠ΅ΠΉΡΡ Π² Π΄ΡΡΠ³ΠΎΠΉ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅. ΠΠ±ΡΡΠ½ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΡΠΊΠ°ΠΌΠΈ ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠ΅ΡΠΎΠ³Π°ΡΠΈΠ²ΠΎΠΉ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° ΡΠΈΡΡΠ΅ΠΌΡ, Π½ΠΎ ΡΡΠΈ ΠΆΠ΅ Π·Π°Π΄Π°ΡΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅ΡΠ°ΡΡ ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΌ ΠΏΡΡΠ΅ΠΌ.
Π€ΡΠ½ΠΊΡΠΈΡ SetVolumeMountPoint ΠΌΠΎΠ½ΡΠΈΡΡΠ΅Ρ Π΄ΠΈΡΠΊ (Π²ΡΠΎΡΠΎΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ) Π² ΡΠΎΡΠΊΠ΅ ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΏΠ΅ΡΠ²ΡΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΠ·ΠΎΠ²
SetVolumeMountPoint("Π‘:\\mycd\\, "D:\\");
ΠΌΠΎΠ½ΡΠΈΡΡΠ΅Ρ Π΄ΠΈΡΠΊ D: (ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π² ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ΡΠ°ΡΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΏΡΠΈΠ²ΠΎΠ΄ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠ°) Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ mycd (ΡΠΎΡΠΊΠ° ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ), Π½Π°Ρ ΠΎΠ΄ΡΡΠ΅ΠΌΡΡΡ Π½Π° Π΄ΠΈΡΠΊΠ΅ Π‘:. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅Ρ ΠΏΡΡΠ΅ΠΉ Π΄ΠΎΡΡΡΠΏΠ° Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΠΊΠΎΡΠΎΠΉ ΡΠ΅ΡΡΡ. Π’ΠΎΠ³Π΄Π° ΠΏΠΎΡΠ»Π΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΡΠΈ Π΄ΠΎΡΡΡΠΏΠ° C:\mycd\memos\book.doc Π±ΡΠ΄Π΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΏΡΡΡ Π΄ΠΎΡΡΡΠΏΠ° D:\memos\book.doc.
ΠΠ΄Π½Ρ ΠΈ ΡΡ ΠΆΠ΅ ΡΠΎΡΠΊΡ ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌ. ΠΠ»Ρ ΡΠ°Π·ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌ ΡΠ»ΡΠΆΠΈΡ ΡΡΠ½ΠΊΡΠΈΡ DeleteMountPoint.
Π€ΡΠ½ΠΊΡΠΈΡ GetVolumePathName Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠΎΡΠ½Π΅Π²ΡΡ ΡΠΎΡΠΊΡ ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΡΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΠΈΠ»ΠΈ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΠΉΠ»Π°. Π ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΡΡΠ½ΠΊΡΠΈΡ GetVolumeNameForVolumeMountPoint ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠΌΡ ΡΠΎΠΌΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, C:\, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΡΠΎΡΠΊΠ΅ ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΡΠΈΠΌΠ΅Ρ: Π²ΡΠ²ΠΎΠ΄ ΡΠΏΠΈΡΠΊΠ° Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΡΠ°ΠΉΠ»Π°
ΠΠ°ΡΡΠ°Π»ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°ΠΌΠΈ Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΠΈ. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° 3.2 ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΡ Π²Π΅ΡΡΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ UNIX ls, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΠΎΠΉ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ², ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠ²Π΅ΡΡΠΈ Π΄Π°ΡΡ ΠΈ Π²ΡΠ΅ΠΌΡ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ°ΠΉΠ»Π° ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π°, Ρ ΠΎΡΡ Π΄Π°Π½Π½Π°Ρ Π²Π΅ΡΡΠΈΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ Π»ΠΈΡΡ ΠΌΠ»Π°Π΄ΡΡΡ ΡΠ°ΡΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠ°ΠΉΠ»Π°.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ², ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΡΠ°Π±Π»ΠΎΠ½Ρ ΠΏΠΎΠΈΡΠΊΠ°. ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° ΠΈ, Π΅ΡΠ»ΠΈ Π±ΡΠ» Π·Π°Π΄Π°Π½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ β1, ΡΠΎ ΠΈ Π΅Π³ΠΎ Π°ΡΡΠΈΠ±ΡΡΡ. ΠΠ°Π½Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΈΡ , Ρ ΠΎΡΡ ΠΈ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ Π²ΡΠ΅Ρ , ΡΡΠ½ΠΊΡΠΈΠΉ Windows, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°ΠΌΠΈ.
ΠΠ½Π°ΡΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΠ°ΡΡΡ ΠΊΠΎΠ΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ 3.2 ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΠΎΠ±Ρ ΠΎΠ΄ Π΄Π΅ΡΠ΅Π²Π° ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ². ΠΠ°ΠΌΠ΅ΡΡΡΠ΅, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡΡΡ Π΄Π²Π°ΠΆΠ΄Ρ: ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΏΡΠΎΡ ΠΎΠ΄Π΅ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ ΡΠ°ΠΉΠ»Ρ, Π° ΠΏΡΠΈ Π²ΡΠΎΡΠΎΠΌ β ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ, ΡΠ΅ΠΌ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΎΠ±Ρ ΠΎΠ΄Π° ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ² (-R).
Π ΡΠΎΠΌ Π²ΠΈΠ΄Π΅, ΠΊΠ°ΠΊ ΠΎΠ½Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° Π½ΠΈΠΆΠ΅, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° 3.2 Π±ΡΠ΄Π΅Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΏΡΠΈ Π΅Π΅ Π²ΡΠ·ΠΎΠ²Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠ»Π½ΡΠ΅ ΠΈΠΌΠ΅Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ², Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
lsW βR include\*.h
ΠΠΌΠ΅ΡΡΠ΅ Ρ ΡΠ΅ΠΌ, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠΊΠ°Π·Π°Π½ΠΈΡ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΠΉΠ»Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
lsW βR C:\Projects\ls\Debug\*.obj
ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½Π°Ρ ΡΠ°Π±ΠΎΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π±ΡΠ΄Π΅Ρ Π½Π°ΡΡΡΠ΅Π½Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π² Π½Π΅ΠΉ ΡΠ°ΠΌΡΠΌ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠ° ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ² ΠΊ ΡΠ΅ΠΊΡΡΠ΅ΠΌΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Ρ. ΠΠ°Π²Π΅ΡΡΠ΅Π½Π½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ (Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠ΅ Π½Π° Web-ΡΠ°ΠΉΡΠ΅) Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ Π°Π±ΡΠΎΠ»ΡΡΠ½ΡΠ΅ ΠΏΠΎΠ»Π½ΡΠ΅ ΠΏΡΡΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ°ΠΉΠ»Π°ΠΌ ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ Π΄Π»Ρ Π²ΡΠΎΡΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° 3.2. lsw: Π²ΡΠ²ΠΎΠ΄ ΡΠΏΠΈΡΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈ ΠΎΠ±Ρ ΠΎΠ΄ Π΄Π΅ΡΠ΅Π²Π° ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ²/* ΠΠ»Π°Π²Π° 3. lsW β ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²ΡΠ²ΠΎΠ΄Π° ΡΠΏΠΈΡΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ² */
/* lsW [ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ] [ΡΠ°ΠΉΠ»Ρ] */
#include "EvryThng.h"
BOOL TraverseDirectory(LPCTSTR, DWORD, LPBOOL);
DWORD FileType(LPWIN32_FIND_DATA);
BOOL ProcessItem(LPWIN32_FIND_DATA, DWORD, LPBOOL);
int _tmain(int argc, LPTSTR argv[]) {
BOOL Flags [MAX_OPTIONS], ok = TRUE;
TCHAR PathName [MAX_PATH +1], CurrPath [MAX_PATH + 1];
LPTSTR pSlash, pFileName;
int i, FileIndex;
FileIndex = Options(argc, argv, _T("R1"), &Flags[0], &Flags[1], NULL);
I* "Π Π°Π·ΠΎΠ±ΡΠ°ΡΡ" ΡΠ°Π±Π»ΠΎΠ½ ΠΏΠΎΠΈΡΠΊΠ° Π½Π° "ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΡΡ ΡΠ°ΡΡΡ" ΠΈ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°. */
GetCurrentDirectory(MAX_PATH, CurrPath); /* Π‘ΠΎΡ ΡΠ°Π½ΠΈΡΡ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΏΡΡΡ Π΄ΠΎΡΡΡΠΏΠ°. */
if (argc < FileIndex +1) /* ΠΡΡΡ Π΄ΠΎΡΡΡΠΏΠ° Π½Π΅ ΡΠΊΠ°Π·Π°Π½. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³. */
ok = TraverseDirectory(_T("*"), MAX_OPTIONS, Flags);
else for (i = FileIndex; i < argc; i++) {
/* ΠΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ Π²ΡΠ΅ ΠΏΡΡΠΈ, ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅. */
ok = TraverseDirectory(pFileName, MAX_OPTIONS, Flags) && ok;
SetCurrentDirectory(CurrPath);
/* ΠΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³. */
}
return ok ? 0 : 1;
}
static BOOL TraverseDirectory(LPCTSTR PathName, DWORD NumFlags, LPBOOL Flags)
/* ΠΠ±Ρ ΠΎΠ΄ Π΄Π΅ΡΠ΅Π²Π° ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ²; Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ ProcessItem Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»ΡΡΠ°Ρ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΡ. */
/* PathName: ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΈΠ»ΠΈ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎΠ΅ ΠΈΠΌΡ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°.*/
{
HANDLE SearchHandle;
WIN32_FIND_DATA FindData;
BOOL Recursive = Flags[0];
DWORD FType, iPass;
TCHAR CurrPath[MAX_PATH + 1];
GetCurrentDirectory(MAX_PATH, CurrPath);
for (iPass = 1; iPass <= 2; iPass++) {
/* ΠΡΠΎΡ ΠΎΠ΄ 1: Π²ΡΠ²ΠΎΠ΄ ΡΠΏΠΈΡΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ². */
/* ΠΡΠΎΡ ΠΎΠ΄ 2: ΠΎΠ±Ρ ΠΎΠ΄ Π΄Π΅ΡΠ΅Π²Π° ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ² (Π΅ΡΠ»ΠΈ Π·Π°Π΄Π°Π½Π° ΠΎΠΏΡΠΈΡ βR). */
SearchHandle = FindFirstFile(PathName, &FindData);
do {
FType = FileType(&FindData);
/* Π€Π°ΠΉΠ» ΠΈΠ»ΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³? */
if (iPass == 1) /* ΠΡΠ²Π΅ΡΡΠΈ ΠΈΠΌΡ ΠΈ Π°ΡΡΠΈΠ±ΡΡΡ ΡΠ°ΠΉΠ»Π°. */
ProcessItem(&FindData, MAX_OPTIONS, Flags);
if (FType == TYPE_DIR && iPass == 2 && Recursive) {
/* ΠΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³. */
_tprintf(_T ("\n%s\\%s:"), CurrPath, FindData.cFileName);
/* ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° ΠΊ ΠΎΠ±Ρ ΠΎΠ΄Ρ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°. */
SetCurrentDirectory(FindData.cFileName);
TraverseDirectory(_T("*"), NumFlags, Flags);
/* Π Π΅ΠΊΡΡΡΠΈΠ²Π½ΡΠΉ Π²ΡΠ·ΠΎΠ². */
SetCurrentDirectory(_T(".."));
}
} while (FindNextFile(SearchHandle, &FindData));
FindClose (SearchHandle);
}
return TRUE;
}
static BOOL ProcessItem(LPWIN32_FIND_DATA pFileData, DWORD NumFlags, LPBOOL Flags)
/* ΠΡΠ²ΠΎΠ΄ΠΈΡ ΡΠΏΠΈΡΠΎΠΊ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΡΠ°ΠΉΠ»Π° ΠΈΠ»ΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°. */
{
const TCHAR FileTypeChar[] = {' ', 'd'};
DWORD FType = FileType(pFileData);
BOOL Long = Flags[1];
SYSTEMTIME LastWrite;
if (FType != TYPE_FILE && FType != TYPE_DIR) return FALSE;
_tprintf(_T ("\n"));
if (Long) { /* Π£ΠΊΠ°Π·Π°Π½ Π»ΠΈ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ "-1"? */
_tprintf(_T("%c"), FileTypeChar[FType β 1]);
_tprintf(_T("%10d"), pFileData->nFileSizeLow);
FileTimeToSystemTime(&(pFileData->ftLastWriteTime), &LastWrite);
_tprintf(_T(" %02d/%02d/%04d %02d:%02d:%02d"), LastWrite.wMonth, LastWrite.wDay, LastWrite.wYear, LastWrite.wHour, LastWrite.wMinute, LastWrite.wSecond);
}
_tprintf(_T(" %s"), pFileData->cFileName);
return TRUE;
}
static DWORD FileType(LPWIN32_FIND_DATA pFileData)
/* ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠ΅ ΡΠΈΠΏΡ ΡΠ°ΠΉΠ»ΠΎΠ² β TYPE_FILE: ΡΠ°ΠΉΠ»; TYPE_DIR: ΠΊΠ°ΡΠ°Π»ΠΎΠ³; TYPE_DOT: ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ . ΠΈΠ»ΠΈ .. */
{
BOOL IsDir;
DWORD FType;
FType = TYPE_FILE;
IsDir = (pFileData->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0;
if (IsDir) if (lstrcmp(pFileData->cFileName, _T(".")) == 0 || lstrcmp(pFileData->cFileName, _T("..")) == 0) FType = TYPE_DOT;
else FType = TYPE_DIR;
return FType;
}
ΠΡΠΈΠΌΠ΅Ρ: ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΌΠ΅ΡΠΎΠΊ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠ°ΠΉΠ»Π°
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° 3.3 ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ UNIX-ΠΊΠΎΠΌΠ°Π½Π΄Ρ touch, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΡ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π·Π°ΡΠΈΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠΊ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π΄ΠΎ ΡΠ΅ΠΊΡΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. Π ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠΈ 3.11 ΠΎΡ Π²Π°Ρ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ°ΡΡΠΈΡΠΈΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ touch ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ Π½ΠΎΠ²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠΊ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ.