С Новым годом! Форум программистов, компьютерный форум, киберфорум
Assembler: Windows/protected mode
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
1 / 1 / 0
Регистрация: 22.02.2009
Сообщений: 18
1

Получение информации о логических дисках в строковом виде

21.09.2009, 18:25. Показов 2079. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
необходимо получить информацию о логических дисках в строковом виде
работаю с tasm32 и пытаюсь получить через функцию GetLogicalDriveStrings
накидал программку
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
.386
;==================================================
.model flat,STDCALL
extrn GetLogicalDriveStringsA:proc
extrn ExitProcess:proc
extrn MessageBoxA:proc
.data
tit db 'Работаем в win32 API',0
lpBuffer dd ?
osh db 'Ошибка', 0
nBufferLenght dw 100
;==================================================
.code
main:
    
    push offset lpBuffer
    push offset nBufferLenght
 
    call  GetLogicalDriveStringsA
    cmp EAX,0
    ;je metka
    push 40h
    push offset tit
    push offset osh
    push 0
    call MessageBoxA
    jmp next
 
    ;push 0
    metka:
    
    push 40h
    push offset tit
    push offset lpBuffer
    push 0
    call MessageBoxA
    
    next:
    push 0
    call ExitProcess
 
        end main
вызываю через bat файл
Windows Batch file
1
2
3
4
5
6
del %1.exe
tasm32 %1.asm /mx /m /zi
tlink32 %1.obj,,,import32.lib /Tpe /aa /v
del %1.obj
del %1.map
%1.exe
но видимо не оячень понимаю как работает функция, так как выводит все время разные разделы, а на ошибку вообще не попадает
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.09.2009, 18:25
Ответы с готовыми решениями:

Получение цвета шрифта TextBox в строковом виде
как извлечь из текстбокса цвет текста? (в формате стринг)

Получение информации о дисках, установленных на компьютерах
Определить логические диски компьютера, объемы томов, системные флаги диска. Помогите с...

Получение информации о дисках установленных на компьютере
Здравствуйте! Помогите мне пожалуйста написать консольное приложени на с++. В универе задали на...

Получение информации о дисках, установленных на компьютере
Помогите с лабораторной работой, в win api вообще не разбираюсь. Определить имя драйверов, типы...

6
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
21.09.2009, 19:37 2
Во-первых
Assembler
1
2
3
4
5
6
7
8
9
10
11
lpBuffer dd ?
osh db 'Ошибка', 0
nBufferLenght dw 100
;==================================================
.code
main:
        
        push offset lpBuffer
        push offset nBufferLenght
 
        call  GetLogicalDriveStringsA
Это должно быть так.
Assembler
1
2
3
4
5
6
7
8
9
10
11
lpBuffer db DUP(?)
osh db 'Ошибка', 0
nBufferLenght dd 100
;==================================================
.code
main:
        
        push offset lpBuffer
        push nBufferLenght
 
        call  GetLogicalDriveStringsA
А кроме того, т.к. функция возвращает имена разделов, разделяя нулями, т.е. чтобы вывести их все в MessageBox'e нужно эти нули заменить напр. пробелами, иначе покажется только 1 раздел.
PS: Учитесь пользоваться отладчиком.
0
1 / 1 / 0
Регистрация: 22.02.2009
Сообщений: 18
21.09.2009, 19:52  [ТС] 3
кстати пытался поменять на пробелы - ток чет он ругаться потом начинает... ну я это дело ка кто оставил
0
0 / 0 / 0
Регистрация: 21.05.2010
Сообщений: 3
10.10.2010, 12:13 4
как эти нули заменить пробелами?
0
0 / 0 / 0
Регистрация: 16.06.2015
Сообщений: 2
26.10.2016, 21:39 5
Может как то поможет
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
.386
;==================================================
.model flat,STDCALL
extrn GetLogicalDriveStringsA:proc
extrn ExitProcess:proc
extrn MessageBoxA:proc
.data
tit db 'Работаем в win32 API',0
lpBuffer dd 1 
lpBuffer2 dd 2
lpBuffer3 dd 3
lpBuffer4 dd 4
 
nBufferLenght dd 100
;==================================================
.code
main:
    
    push offset lpBuffer
    push offset nBufferLenght
 
    call  GetLogicalDriveStringsA
 
push 40h
    push offset tit
    push offset lpBuffer
    push 0
    call MessageBoxA
 
    
 push 40h
    push offset tit
    push offset lpBuffer2
    push 0
    call MessageBoxA
 
 push 40h
    push offset tit
    push offset lpBuffer3
    push 0
    call MessageBoxA
 push 40h
    push offset tit
    push offset lpBuffer4
    push 0
    call MessageBoxA
    push 0
    call ExitProcess
 
        end main
0
Прощай, Мир!
1673 / 831 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
26.10.2016, 23:01 6
zikzikzik, посмотри, когда ТС создал эту тему. и будешь приятно удивлен. думаю его и след простыл с этого форума!
0
0 / 0 / 0
Регистрация: 16.06.2015
Сообщений: 2
28.10.2016, 22:19 7
К сожалению, такие задачи дают в университетах и поэтому я думаю не первый кто ищет эту задачу и , что такие вопросы могут возникнуть и у других студентов
Так что вот правильный ответ, с заменой (null) на пробелы
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
.386
;==================================================
.model flat,STDCALL
extrn GetLogicalDriveStringsA:proc
extrn ExitProcess:proc
extrn MessageBoxA:proc
.data
tit db 'Работаем в win32 API',0
lpBuffer db ? 
 
 
nBufferLenght dd 100
;==================================================
.code
main:
    
    push offset lpBuffer
    push offset nBufferLenght
 
    call  GetLogicalDriveStringsA
mov EBX,3
mov lpBuffer[EBX],' '
mov cx,10
metka:
add EBX,4
mov lpBuffer[EBX],' '
loop metka
push 40h
    push offset tit
    push offset lpBuffer
    push 0
    call MessageBoxA
 
  
    push 0
    call ExitProcess
 
        end main
0
28.10.2016, 22:19
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.10.2016, 22:19
Помогаю со студенческими работами здесь

Информация о логических дисках
Всем привет.У меня проблемка возникла с функцией GetLogicalDriveStrings.Нужно вывести все...

win API:найти информацию о логических дисках.
Определить типы логических дисков, обьём диска, колличество секторов в клястере, тип драйвера.

Как избавиться от второй Windows на разных логических дисках?
Как лучше удалить второй виндовз? К приятелю приезжал мастер и вместо того, что бы отформатировать...

Сложение чисел в строковом виде
Была поставлена следующая задача. На стандартный поток ввода принимается два целых числа любой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Как проводить научные вычисления на Python
InfoMaster 15.01.2025
Python стал одним из наиболее востребованных языков программирования в области научных вычислений благодаря своей простоте, гибкости и обширной экосистеме специализированных библиотек. Научные. . .
Создание игры типа Minecraft на PyGame/Python: пошаговое руководство
InfoMaster 15.01.2025
В данном руководстве мы рассмотрим процесс создания игры в стиле Minecraft с использованием библиотеки PyGame на языке программирования Python. Этот проект идеально подходит как для начинающих. . .
Как создать свою первую игру в стиле Doom на Unreal Engine
InfoMaster 15.01.2025
Разработка шутера от первого лица в стиле классического Doom представляет собой увлекательное путешествие в мир игрового программирования, где сочетаются творческий подход и технические навыки. . . .
Параллельное программировани­е: основные технологии и принципы
InfoMaster 15.01.2025
Введение в параллельное программирование Параллельное программирование представляет собой фундаментальный подход к разработке программного обеспечения, который позволяет одновременно выполнять. . .
Как написать микросервис на C# с Kafka, MediatR, Redis и GitLab CI/CD
InfoMaster 15.01.2025
В современной разработке программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот подход позволяет разделить сложную систему. . .
Что такое CQRS и как это реализовать на C# с MediatR
InfoMaster 15.01.2025
Концепция CQRS и её роль в современной разработке В современном мире разработки программного обеспечения архитектурные паттерны играют ключевую роль в создании масштабируемых и поддерживаемых. . .
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
Как написать микросервис на Go/Golang с Kafka, REST и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
Как написать микросервис с нуля на C# с RabbitMQ, CQRS, Swagger и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru