Функция GetLogicalDrives возвращает число-битовую маску в которой хранятся все доступные диски. Функция не имеет параметров. Возвращаемое значение: Если функция вызвана правильно, то она возвращает число-битовую маску в которой хранятся все доступные диски (если 0 бит равен 1, то диск "A:" присутствует, и т.д.) Пример: Код (ASM): invoke GetLogicalDrives mov ecx,26; имена дисков от a до z mov edi,offset buf0 mov edx,"\:a" @0: shr eax,1 jnc @f mov [rdi],edx add edi,4 inc count @@: jz @1 inc edx loop @0 @1: Функция GetDriveType возвращает тип диска (removable, fixed, CD-ROM, RAM disk или network drive) Параметры: lpRootPathName Указатель на не нулевую стоку в которой хранится имя главной директории на диске. Должен присутствовать обратный слэш ! Если lpRootPathName равно NULL, то функция использует текущую директорию. Возвращаемое значение: тип диска ЗначениеОписаниеDRIVE_UNKNOWN0Не известный типDRIVE_NO_ROOT_DIR1Не правильный путьDRIVE_REMOVABLE2Съёмный дискDRIVE_FIXED3Фиксированный дискDRIVE_REMOTE4Удалённый или network дискDRIVE_CDROM5CD-ROM дискDRIVE_RAMDISK6RAM дискПример: Код (ASM): .code mov lv.imask,LVIF_TEXT mov lv.iSubItem,1 lea ecx,buf0[rdi*4] invoke GetDriveType mov rax,[handle+rax*8] mov lv.pszText,rax lea r9d,lv invoke SendMessage,hList,LVM_SETITEM,0 .data aDRIVE_UNKNOWN db "Не известный тип",0 aDRIVE_NO_ROOT_DIR db "Не правильный путь",0 aDRIVE_REMOVABLE db "Removable Disk",0 aDRIVE_FIXED db "Local Disk",0 aDRIVE_REMOTE db "Удаленный или сетевой диск",0 aDRIVE_CDROM db "Optical Drive",0 aDRIVE_RAMDISK db "RAM диск",0 handle dq aDRIVE_UNKNOWN, aDRIVE_NO_ROOT_DIR, aDRIVE_REMOVABLE, aDRIVE_FIXED, aDRIVE_REMOTE, aDRIVE_CDROM,aDRIVE_RAMDISK Функция GetVolumeInformation возвращает информацию о файловой системе и дисках. Параметры: LPCTSTR lpRootPathName, имя диска LPTSTR lpVolumeNameBuffer, название диска DWORD nVolumeNameSize, длина буфера названия диска LPDWORD lpVolumeSerialNumber, номер диска LPDWORD lpMaximumComponentLength, максимальная длина файла LPDWORD lpFileSystemFlags, опции файловой системы LPTSTR lpFileSystemNameBuffer, имя файловой системы DWORD nFileSystemNameSize длина буфера имени файловой системы Пример: Код (ASM): sub esp,40h movr [rsp+30h],FileSystemNameBuffer mov qword ptr[rsp+38h],100 and qword ptr[rsp+20h],0 and qword ptr[rsp+28h],0 lea ecx,buf0[rdi*4] mov edx,offset VolumeNameBuffer and byte ptr[rdx],0 mov r9d,offset VolumeSerialNumber and byte ptr[r9],0 invoke GetVolumeInformation,,,100 add esp,40h movr lv.pszText,FileSystemNameBuffer lea r9d,lv invoke SendMessage,hList,LVM_SETITEM,0 Функция GetDiskFreeSpaceEx выдаёт информацию о доступном месте на диске. Параметры: LPCTSTR lpDirectoryName, имя диска PULARGE_INTEGER lpFreeBytesAvailable, доступно для использования (байт) PULARGE_INTEGER lpTotalNumberOfBytes, максимальный объём (в байтах) PULARGE_INTEGER lpTotalNumberOfFreeBytes свободно на диске (в байтах)
Не регистрирует класс из-за вот этого: Со всеми вытекающими - не создает основное окно, не создает дочерний листвью. Контроля нет. Буржуи на буржуйских локализациях будут наблюдать ракозябры. Надо применять либо аглицкий, либо юникод.
Mikl___, а можно ваш инклуд? А то у меня не компилируется вообще, пишет кучу ошибок. Или это фасм, судя по инклуду? Но в нем тоже не собирает. Пробовал стандартный include masm64rt.inc от Хатча