Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Win32 API - IOCTL_DISK_GET_DRIVE_LAYOUT_EX возможно ли на VB6

Ответить
Настройки темы
Win32 API - IOCTL_DISK_GET_DRIVE_LAYOUT_EX возможно ли на VB6

Аватара для sosed213

Пользователь


Сообщения: 86
Благодарности: 19


Конфигурация

Профиль | Сайт | Отправить PM | Цитировать


Тема изначально была созданна на http://bbs.vbstreets.ru , чтобы увеличить шанс решения проблемы дублирую тему на OSZone

Я пишу прогу что то типо diskpart.exe только с большими возможностями.
Для начала хочу разобраться с большинством функция типа IOCTL_*

Уже научился и разобрался с этими функциями.
IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS
IOCTL_STORAGE_GET_DEVICE_NUMBER
IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER
IOCTL_DISK_GET_LENGTH_INFO
IOCTL_DISK_GET_DRIVE_GEOMETRY

Затык начался на этих функциях:
IOCTL_DISK_GET_DRIVE_LAYOUT_EX
IOCTL_DISK_GET_PARTITION_INFO_EX

Точнее проблема в структуре данных DRIVE_LAYOUT_INFORMATION_EX и PARTITION_INFORMATION_EX
Не получается, видимо, ее правильно описать.

Зато если я делаю так, то все успешно:

Код: Выделить весь код
Dim temp(4096) As Byte
If DeviceIoControl(hDrive, IOCTL_DISK_GET_PARTITION_INFO_EX, ByVal 0&, 0, temp(0), 4096, dwOutBytes, ByVal 0&) Then
   MsgBox "Good!"
Else
   MsgBox "Failed!"
End If

так я и понял что проблема в структуре.


Код: Выделить весь код
Private Enum PARTITION_STYLE
   PARTITION_STYLE_MBR = 0
   PARTITION_STYLE_GPT = 1
   PARTITION_STYLE_RAW = 2

Private Type DRIVE_LAYOUT_INFORMATION_MBR
   Signature As Long
End Type

Private Type DRIVE_LAYOUT_INFORMATION_GPT
   DiskId As Long
   StartingUsableOffset As Long
   UsableLength As Long
   MaxPartitionCount As Long
End Type

Private Type PARTITION_INFORMATION_EX
   PartitionStyle As PARTITION_STYLE
   StartingOffset As Long
   PartitionLength As Long
   PartitionNumber As Long
   RewritePartition As Boolean
   Mbr As PARTITION_INFORMATION_MBR
   Gpt As PARTITION_INFORMATION_GPT
End Type

Private Type DRIVE_LAYOUT_INFORMATION_EX
   PartitionStyle As PARTITION_STYLE
   PartitionCount As Long
   Mbr As PARTITION_INFORMATION_MBR
   Gpt As PARTITION_INFORMATION_GPT
   PartitionEntry(1) As PARTITION_INFORMATION_EX
End Type

Скажу сразу, что эта проблема в инете есть, но мало кто этим занимается.
Буду рад если кто поможет.

Если проблему решить не удастся то наверно придется вручную копать и разбирать MBR (читал тут )

-------
Перед тем как задавать вопросы, медленно посчитайте про себя до десяти!!!


Отправлено: 07:14, 21-02-2012

 

Аватара для sosed213

Пользователь


Сообщения: 86
Благодарности: 19

Профиль | Сайт | Отправить PM | Цитировать


Тема значительно продвинулась на http://bbs.vbstreets.ru

-------
Перед тем как задавать вопросы, медленно посчитайте про себя до десяти!!!


Отправлено: 16:16, 21-02-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 21
Благодарности: 8

Профиль | Отправить PM | Цитировать


diskpart.exe что это такое ? и почему на vb ?

Отправлено: 16:30, 21-02-2012 | #3


Аватара для sosed213

Пользователь


Сообщения: 86
Благодарности: 19

Профиль | Сайт | Отправить PM | Цитировать


alex_03,
Программа Diskpart позволяет выполнять расширенный набор действий, поддерживаемых оснасткой «Управление дисками». http://support.microsoft.com

VB , потому что мне так хочется (я просто всегда на нем пишу)

-------
Перед тем как задавать вопросы, медленно посчитайте про себя до десяти!!!


Отправлено: 21:20, 21-02-2012 | #4


Новый участник


Сообщения: 21
Благодарности: 8

Профиль | Отправить PM | Цитировать


Я так понимаю до программирования чего-то там важного и умного ,Вы делаете что-то вроде "обертки" для win api функций на языке visual basic. И кучу времени потратите только на то чтобы сделать враппер . И это еще до решения реальной задачи .

Почему нельзя сразу приступить к программированию логики задачи на языке Си++ ? По моему знать "плюса" намного выгоднее чем всякие там бейсики. По крайней мере ты избавляешься от вот такой вот толкотни воды в ступе.

Тем более Вы будете писать системную программу. Я думаю что бейсик хорошо подходит для решения прикладных задач но не системных. Для системных задач только Си.

Не стоит забывать что есть еще такая вещь как маршалинг данных через границы двух языков программирования. Мне вот приходилось подгружать библиотеку написанную кем-то и на чем-то , так вот при вызове некоторых функций которые принимают параметры текстовых строк - приходилось танцевать с бубном и все равно вылетал run-time error.

Отправлено: 18:09, 22-02-2012 | #5


Аватара для sosed213

Пользователь


Сообщения: 86
Благодарности: 19

Профиль | Сайт | Отправить PM | Цитировать


alex_03, спасибо.

Я осознаю что пора бы переходить на Си++, но все время писал только на VB6 (там обалденный способы работы со строками), надо наверно уже пробовать писать.

Может посоветуешь дистрибутив Си++ и какую нибудь полезную документацию и справочник по функциям, ну и примеры желательно. Хотя бы подскажи дистрибутив и учебник для начала.

-------
Перед тем как задавать вопросы, медленно посчитайте про себя до десяти!!!


Отправлено: 08:13, 29-02-2012 | #6


Новый участник


Сообщения: 21
Благодарности: 8

Профиль | Отправить PM | Цитировать


я бы скачал Visual Studio 2010 Express C++
вот ссылка
http://www.microsoft.com/visualstudi...ns/express-iso

Скачаете iso там есть уже все и С++ и C# и VB - все бесплатно - пользуйтесь на здоровье, потом только надо будет зарегистрировать свою версию - это легко - вам программа все сама подскажет


Теперь надо скачать SDK
вот ссылка
http://www.microsoft.com/download/en...ng=en&id=18950

Скачаете iso там есть все необходимое для программирования под Windows

В итоге у Вас будет бесплатный набор для программирования под Windows

и конечно же читайте
http://msdn.microsoft.com/library/default.aspx

Вот тут Ваша тема ( наверное Вы уже в курсе )
http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx

так книга .......

обязательно начните с этого : Керниган и Ричи - язык СИ
вот ссылка на онлайн чтение или для скачивания

http://lib.ru/CTOTOR/kernigan.txt_wi...-pictures.html
http://thelib.ru/books/brayen_kernig...ik_c-read.html
http://ik.3dscorpion.com.ua/files/st...Kernigan_C.pdf


по С++ я бы начал сначала почитал немного Шилдта и самого автора языка С++ Бьёрна Страуструпа
язык С++ это объектно-оринетированный язык , но все что заложено в Си есть и в С++.
С++ как бы расширенная версия языка Си , расширенная объектностью , так что смело можно читать именно Кернигана и Ричи. И кстати СИ будет достаточно для системного программирования. Но! будет не удобно программировать после VB , тем более строки
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:43, 29-02-2012 | #7


Аватара для ferget

Разный


Сообщения: 1294
Благодарности: 359

Профиль | Отправить PM | Цитировать


Цитата alex_03:
обязательно начните с этого : Керниган и Ричи - язык СИ »
Цитата alex_03:
С++ как бы расширенная версия языка Си , расширенная объектностью , так что смело можно читать именно Кернигана и Ричи »
Цитата alex_03:
Но! будет не удобно программировать после VB , тем более строки »
вообще-то в с++ давно есть нормальный string и еще много чего, и начинать с Кернигана и Ричи очень плохой совет

Отправлено: 18:42, 29-02-2012 | #8


Новый участник


Сообщения: 21
Благодарности: 8

Профиль | Отправить PM | Цитировать


Цитата ferget:
начинать с Кернигана и Ричи очень плохой совет »
аргументируйте

Отправлено: 22:35, 29-02-2012 | #9


Аватара для ferget

Разный


Сообщения: 1294
Благодарности: 359

Профиль | Отправить PM | Цитировать


вот аргумент
Цитата ferget:
в с++ давно есть нормальный string и еще много чего »

Отправлено: 22:43, 29-02-2012 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Win32 API - IOCTL_DISK_GET_DRIVE_LAYOUT_EX возможно ли на VB6

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - ListView в VB6 Synthetyic_Man Программирование и базы данных 1 11-05-2010 05:52
Странные глюки VB6 krapar Программирование и базы данных 3 19-04-2006 12:11
Прога в VB6 DevilHaker Программирование и базы данных 2 12-09-2004 03:33
Доступ к FTP из VB6 Iskatell Программирование и базы данных 2 29-05-2004 02:31
ComboBox в VB6 Vitki Программирование и базы данных 1 12-05-2004 10:08




 
Переход