| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > Чтение секторов средствами WINAPI |
| Автор: antonkonikov 25.10.2011, 00:52 |
| Доброго времени суток) Возникла проблема( в которой нужно читать сектора, под дос получается а вот под windows нет. Возможно ли обратится к FAT жесткому диску и прочитать инфу сектора сохранив ее в буффер. Писать буду под окна а не под консоль. Очень прошу откликнитесь и помогите. Заранее благодарен) )) |
| Автор: 500mhz 25.10.2011, 09:47 |
| CreateFile(devName, GENERIC_READ,FILE_SHARE_WRITE, NULL,OPEN_EXISTING, 0, NULL); ReadFile(hDev, lpSectBuff,512 * wSectors, &dwCB, NULL); |
| Автор: antonkonikov 25.10.2011, 10:26 |
| можно ли потом сравнить элементы из буффера и вывести в окно? |
| Автор: 500mhz 25.10.2011, 10:44 |
| потом уже все можно |
| Автор: Estranged 25.10.2011, 20:13 |
| http://msdn.microsoft.com/en-us/library/ms898288.aspx + http://msdn.microsoft.com/en-us/library/windows/desktop/aa365169%28v=vs.85%29.aspx. Но может немного врать в количестве. Поэтому http://msdn.microsoft.com/en-US/library/aa365180.aspx, а для страховки еще http://msdn.microsoft.com/en-us/library/windows/desktop/aa365173%28v=vs.85%29.aspx Примеры вот тут: http://www.rsdn.ru/forum/winapi/1112101.flat.aspx |
| Автор: antonkonikov 25.10.2011, 21:20 | ||||
Помогите вывести в окно:
то что должно быть в буффере:
|
| Автор: xvr 26.10.2011, 13:28 |
Это сильно, это пять Может все же на консоль согласитесь? А то с окнами у вас явно что то не то |
| Автор: antonkonikov 27.10.2011, 14:52 | ||
Подскажите как вывести buf в окно или что не так делаю... очень прошу. И как узнать сосчиталось туда что нибудь?
|
| Автор: 500mhz 27.10.2011, 15:20 |
| в файлик сохрани да блокнотиком открой |
| Автор: antonkonikov 27.10.2011, 15:54 | ||
файл не создается((( |
| Автор: xvr 27.10.2011, 16:47 |
OPEN_EXISTING в CreateFile("myfile.txt" замените на что нибудь более подходящее |
| Автор: antonkonikov 27.10.2011, 17:09 |
| поменял на open_always теперь начало выходить из программы. в файл записывает 512 символов "Н". Почему не считывается сектор? может это из-за касперского, не может он блокировать доступ? |
| Автор: 500mhz 27.10.2011, 18:42 |
| CreateFile("\\\\.\\D:" что возвращает? |
| Автор: antonkonikov 27.10.2011, 19:08 |
| Ну не знаю. должна открывать доступ к жесткому диску. да? |
| Автор: 500mhz 27.10.2011, 21:09 |
| ну так проверь, если 0xffffffff то ошибочка, нада сделать GetlastError пс надеюсь все это с не с юсерскими правами запускаеться? |
| Автор: antonkonikov 27.10.2011, 21:41 |
| всмысле не с юсерскими? вот что пишет : "SPO_window.exe": Загружено "C:\Windows\System32\cryptbase.dll" "SPO_window.exe": Загружено "C:\Windows\System32\clbcatq.dll" "SPO_window.exe": Загружено "C:\Windows\System32\oleaut32.dll" Первый этап обработки исключения в "0x757f75ea" в "SPO_window.exe": 0xC0000005: Нарушение прав доступа при записи "0x00000000". Необработанное исключение в "0x757f75ea" в "SPO_window.exe": 0xC0000005: Нарушение прав доступа при записи "0x00000000". и значения: buf 0x01b418e8 "HHHHHHHHHHHHHHHHHHH" hFile 0x00000134 |
| Автор: Estranged 27.10.2011, 22:24 |
Потому что ReadFile(hDevice, buf, 512, &dwBytesRead, NULL); НЕ выполняется успешно. Нельзя читать, нет доступа. |
| Автор: antonkonikov 28.10.2011, 00:39 |
| А как это устранить?) компилю под семеркой, или лучше пользоватся ХП? |
| Автор: GremlinProg 28.10.2011, 07:15 |
| ну, вообще-то 0xC0000005 - это Access Violation, т.е. в коде по адресу 0x757f75ea произошла запись данных по адресу 0x00000000 antonkonikov, лучше будет научиться пользоваться отладчиком, да и программировать с таких задач не начинают Добавлено через 4 минуты и 59 секунд 0x757f75ea - это практически 100% библиотека, т.е. в какую-то API был передан нераспределенный буфер, что и вызвало ошибку |
| Автор: 500mhz 28.10.2011, 09:44 | ||
| сорри С компилера под рукой нема ) вот накидал, проверил, работает (ХР с админом)
|
| Автор: antonkonikov 28.10.2011, 12:39 |
| 500 mhz какой это asm? конечно не начинают программировать с таких задач, но в си под дос не могу написать интерфейс с выпадающими окнами, поэтому я даже не знаю как лучше подойти к этой задаче((( |
| Автор: 500mhz 28.10.2011, 13:41 |
| это FASM пс си под дос и виндос отличаються как пуля и г*вно извините |
| Автор: antonkonikov 28.10.2011, 15:45 |
| та ну понятно что отличаются) с графикой под дос не дружу, а в visual c проще интерфейс создать и понятно как он реагирует. хотя со всеми остальными вещами как прочитать сектор, сложнее( |
| Автор: antonkonikov 30.10.2011, 20:41 |
| 500mhz, что-то у меня не работает и асмовская программа. нули в файле((( |
| Автор: antonkonikov 30.10.2011, 22:50 | ||
Через дебагер смотрю и в строке 004013AB ошибка(
|