IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

> win api, работа с винапи и файловой системой
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 5
Пол: Мужской

Репутация: -  0  +


Привет!
Помогите пожалуйста понять как работать с функциями win api (особенно интересует. как получит возвращаемое значение).
Например, есть код
WCHAR FSType[512];    

if (GetVolumeInformationW(L"D:\\", NULL, 0, NULL, NULL, NULL, FSType, ARRAYSIZE(FSType))) {
wprintf(L"FS type = %s\n", FSType);
}

если его транслировать на масм32, то получится что-то вроде
invoke GetVolumeInformationW, (???), NULL, 0, NULL, NULL, NULL, ???, 512

но что именно?
Заранее спасибо.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Если надо работать непосредственно со строкой (первый параметр), то
invoke GetVolumeInformationW, uni$("D:\"), ...
(макрос uni$ описан в \masm32\macros\ucmacros.asm, если что)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 5
Пол: Мужской

Репутация: -  0  +


Спасибо, ответы помогли.. Но что-то я так и не понял до конца(
Допустим, надо определить файловую систему логического раздела. Вот что у меня выходит

.486
.model flat, stdcall
option casemap :none

include c:\\masm32\include\windows.inc
include c:\\masm32\macros\macros.asm
include c:\\masm32\macros\ucmacros.asm

include c:\\masm32\include\masm32.inc
include c:\\masm32\include\gdi32.inc
include c:\\masm32\include\user32.inc
include c:\\masm32\include\kernel32.inc

includelib c:\\masm32\lib\masm32.lib
includelib c:\\masm32\lib\gdi32.lib
includelib c:\\masm32\lib\user32.lib
includelib c:\\masm32\lib\kernel32.lib

.data
adr db "D:\", 0
mas db 512 dup(0)

.code
start:
mov eax, 0
invoke GetVolumeInformationW, uni$("D:\"), NULL , 0, NULL, NULL, NULL, offset mas, 2
mov al, mas
mov ebx, 0
test al, 0BH
jz next1
print chr$("FAT32")
jmp end_partition

next1:
test al, 80H
jz next2
print chr$("NTFS")
jmp end_partition

next2:
print chr$("OtherFS")
end_partition:
print chr$(10, 13)


invoke ExitProcess, 0
exit
end start


но оно всегда выводит OtherFS (или я плохо тестил). Как исправлять?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 5.05.2024 11:07
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name