![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Win32 API - IOCTL_DISK_GET_DRIVE_LAYOUT_EX возможно ли на VB6 |
|
Win32 API - IOCTL_DISK_GET_DRIVE_LAYOUT_EX возможно ли на VB6
|
Пользователь Сообщения: 86 |
Тема изначально была созданна на 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 |
Новый участник Сообщения: 21
|
Профиль | Отправить PM | Цитировать Свой string написать можно в полчаса , это обертка для типа array char c перегруженными операциями =, + , -, >=, >, ==, <, <=,etc..
а так называем string , о котором Вы отозвались как о нормальном есть часть STL - Standard Templete Library. Для понимая которой необходимо знать что такое " языковая объектность". При решении данной задачи, о которой было указано в теме , достаточно "процедурной парадигмы" , чтобы не тратить время на освоения мира объектов со всеми вытекающими. Я останусь на своем мнении и предложу автору топика все же читать Кернигана и Ричи - ибо это авторы языка Си и лучшей книги по Си нет и быть не может. |
Отправлено: 23:18, 29-02-2012 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Разный Сообщения: 1294
|
Профиль | Отправить PM | Цитировать Цитата alex_03:
Цитата alex_03:
Цитата alex_03:
|
|||
Отправлено: 00:00, 01-03-2012 | #12 |
Новый участник Сообщения: 21
|
Профиль | Отправить PM | Цитировать мы говорим не по теме - оффтоп ,
не хочу развивать тему о языке С++. Для решения поставленной задачи человеку знающему vb необходимо подучить язык си , для этого я указал что читать и что ставить. Чтобы не учиться слишком долго и решить задачу в максимально короткий срок. Программируем не ради программирования , а для написания какого-то софта. И так как при программировании с Windows API с++ не нужен - он будет избыточным , достаточно Си. При желании потом можно расширить свои знания в любое направление. "Языковая объектность" - я так называю ООП. |
Отправлено: 00:08, 01-03-2012 | #13 |
Разный Сообщения: 1294
|
Профиль | Отправить PM | Цитировать Цитата alex_03:
|
|
Отправлено: 00:32, 01-03-2012 | #14 |
Пользователь Сообщения: 86
|
Профиль | Сайт | Отправить PM | Цитировать alex_03, будет ли программа откомпилированная в Visual Studio 2010 Express C++ работать в среде PE, без интеграции в PE среду компонентов .NET ?
Просто предполагается что программа должна будет работать без установки, запуском одного exe-файла. |
------- Последний раз редактировалось sosed213, 01-03-2012 в 06:37. Причина: добавление инф. Отправлено: 06:36, 01-03-2012 | #15 |
Новый участник Сообщения: 21
|
Профиль | Отправить PM | Цитировать Цитата sosed213:
при программировании создавайте обычный проект. Есть возможность скомпилировать в native код и manage код. Нативный(native) - он же "обычный", это когда компилируется в машинные коды Ваш С++ код. Работать должно везде - по сути. Управляемый(Manage) - это когда код С++ компилируется в промежуточный "байт-код" (CIL , IL , MCIL - по разному называется ) - работает только там этот код где стоит виртуальная машина .net причем той версии (1, 2 ,3 ,4 ) - какой версии код. Вам нужно только писать чистый "си - код" и вызывать чистый "си- код" Windows про net забудьте |
|
Отправлено: 09:57, 01-03-2012 | #16 |
Разный Сообщения: 1294
|
Профиль | Отправить PM | Цитировать выбираете проект win32, в мастере ставите галку пустой проект, в обозревателе решений правой кнопкой мыши на проекте -> добавить, добавляете файл с++
|
Отправлено: 20:59, 01-03-2012 | #17 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - 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 |
|