![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 2 Всего: 99 |
Всем привет!
У меня вот такая проблемка появилась: Я не знаю как прочитать серийный номер диска (например C:\). Дело в том, что все что я нашел работает либо через всякие API, либо через прерывание int 21, а мне надо чисто на аsм`e. Почему я пишу сюда, а не в раздел asm? Потому, что код должен работать в Visual С++, то есть как вставка (см. снизу). Я нашел вот такой пример (ну то есть примерно такой, я на нем хочу показать, что я хочу): unsigned char *BUFFER; BUFFER = new unsigned char[24]; _asm { mov ah, 0x69 mov al, 0 // This is where you 1 set serial, 0 to get serial number mov bl, 3 // drive number 0 = default, 1 = A, 2 = B , 3 = C mov edx, BUFFER int 21 } Не исключаю, что в нем есть ошибочки - проверить я не смог. Так вот он содержит прерывание, а мне надо без и без всяких функций. Посдкажите что-нибудь полезное, а то что-то я все облазил, а ничего дельного не нашел. Еще раз подчеркиваю без прерываний (так как они в Visual С++ не проходят) и без функций по типа GetVolumeInformation. Всем спасибо! -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| shedon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1209 Регистрация: 17.1.2003 Где: Нижнiй Новгородъ Репутация: 4 Всего: 11 |
этот код не сработает т.к. винда не даёт пользовательским программам прямой доступ к прерыванием, такое право имеют, только проги режима ядра(читай драйверы). можно использовать WinIO, а чем не нравятся прерывания или апи функции ?
Я конечно в асме не силён, но вот не понятно что это такое mov edx, BUFFER. Почему ты тут используешь 32разрядный регистр ? И как я понимаю, в регистр dx должна сливаться сер/ном. диска ? Тогда почему ты копируешь некое содержимое BUFFER(который, не чего не содержит) в edx ? -------------------- Programming is like sex: One mistake and you have to support it your lifetime |
|||
|
||||
| cardinal |
|
||||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 2 Всего: 99 |
Ой, не хочу
Да нравится мне все, только вот нужно примерчик мне написать чисто на asm. Хотя когда ты вот это написал мне стукнуло в голову взять туже API или что-нибудь такое, короче прочитать как угодно серийный номер диска, а потом сделать листинг и посмотреть, что там написано Если есть какие мысли пишите, может я и сам чего придумаю за это время. Как что напишу. -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
||||
|
|||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 2 Всего: 99 |
Блин, ты хоть это... пиши что редактируешь (пока я ответ пишу) Так вот в этом случае BUFFER - это указатель. Указатель 32разрядный и поэтому он идет в edx. Серийный номер диска и всякая инфа должна сливаться не в dx (edx), а по адресу, который прописан в edx. p.s. написал ответ, смотрю, а ты уже сообщение отредактировал -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| shedon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1209 Регистрация: 17.1.2003 Где: Нижнiй Новгородъ Репутация: 4 Всего: 11 |
А разве на асме нельзя вызывать апи функции ?
-------------------- Programming is like sex: One mistake and you have to support it your lifetime |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |