win api, работа с винапи и файловой системой |
1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!
win api, работа с винапи и файловой системой |
name_name |
13.12.2009 1:08
Сообщение
#1
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Репутация: 0 |
Привет!
Помогите пожалуйста понять как работать с функциями win api (особенно интересует. как получит возвращаемое значение). Например, есть код WCHAR FSType[512]; если его транслировать на масм32, то получится что-то вроде invoke GetVolumeInformationW, (???), NULL, 0, NULL, NULL, NULL, ???, 512 но что именно? Заранее спасибо. |
andriano |
13.12.2009 10:39
Сообщение
#2
|
Гуру Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
Адреса строки и массива.
|
volvo |
13.12.2009 10:46
Сообщение
#3
|
Гость |
Если надо работать непосредственно со строкой (первый параметр), то
invoke GetVolumeInformationW, uni$("D:\"), ...(макрос uni$ описан в \masm32\macros\ucmacros.asm, если что) |
name_name |
13.12.2009 12:52
Сообщение
#4
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Репутация: 0 |
Спасибо, ответы помогли.. Но что-то я так и не понял до конца(
Допустим, надо определить файловую систему логического раздела. Вот что у меня выходит
но оно всегда выводит OtherFS (или я плохо тестил). Как исправлять? |
volvo |
13.12.2009 13:09
Сообщение
#5
|
Гость |
Цитата Как исправлять? Правильно пользоваться возможностями GetVolumeInformationW. Ты зачем последний параметр установил в 2? У тебя вообще-то в mas должно уже записаться название файловой системы...mas db 512 dup(0) |
name_name |
13.12.2009 13:14
Сообщение
#6
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Репутация: 0 |
Правильно пользоваться возможностями GetVolumeInformationW. Ты зачем последний параметр установил в 2? У тебя вообще-то в mas должно уже записаться название файловой системы... mas db 512 dup(0) Огромное спасибо! Эти все побитовые операции брал с __msdn.microsoft.com/en-us/library/aa363990%28VS.85%29.aspx . Но все оказалось гораздо проще) Добавлено через 19 мин. У меня есть еще вопрос. Как бы теперь это выполнить для всех логических дисков (аналог(C#) DriveInfo[] allDrives = DriveInfo.GetDrives(); ) ? |
volvo |
13.12.2009 14:31
Сообщение
#7
|
Гость |
sDrive db "Drive", 0Смысл программы, которую пишешь, в чем состоит? |
name_name |
13.12.2009 14:49
Сообщение
#8
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Репутация: 0 |
sDrive db "Drive", 0Смысл программы, которую пишешь, в чем состоит? Спасибо! то что надо! задание звучит так: Цитата Написать программу для определения количества логических дисков в системе, типа файловой системы для каждого из дисков, их размера и метки. Отчет о проделанной работе сохранить в текстовый файл. Но я бы хотел еще сам немного помучатся) |
name_name |
13.12.2009 17:10
Сообщение
#9
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Репутация: 0 |
Но я бы хотел еще сам немного помучатся) помучался(Для того что-бы узнать размер тома надо вызывать GetDiskFreeSpaceEx и "оперировать" с предпоследним параметром, верно? Но что-то не выходит( Ведь возвращает он не строку, верно? upd сдается мне что там 64битное число.. и как с ним работать? udp2 StrFormatByteSize64 решает все проблемы Сообщение отредактировано: name_name - 13.12.2009 19:46 |
Текстовая версия | 23.09.2024 19:01 |