Почему такой код: Завершается с GetLastError() = 5 ?... Программу запускаю из под админа. Полный исходный код прикреплен к теме.
и еще посмотри http://msdn.microsoft.com/en-us/library/ms679351(VS.85).aspx. А так же утилиту в составе MS Visual Studuio error lookup
С осью вопрос остается, просто в ОСях после XP микрософтовцы наложили серьезные ограничения на общения с диском в части прямого доступа, собственно поэтому траблы например y Partition Magic. Как то эту проблему решали, в каком то блоге описано решение данной проблемы
ОС ХР сп3. Аналогичный код на С++ работает.... В С++ получается первый раз тоже ошибка но там в buf пишется сколько памяти нужно. Я ее получаю и заново вызиваю... но тут чет так не выходить...(... код на С++ смотрел принципиальной разницы не нашол.
Сам то же в силу слабости знаний не могу понять причину( Есть только предположение что проблема на самом деле не здесь а с CreateFile
и еще страннность : Code (Text): invoke CreateFileA, addr drive,GENERIC_READ,FILE_SHARE_WRITE+FILE_SHARE_READ,0,OPEN_EXISTING,0,0 возвращает -1, GetLastError() = 5... такой же код на С++ : Code (Text): CreateFileW(szFullVolName, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL); отлично работает. приходится делать так: Code (Text): invoke CreateFileA, addr drive,GENERIC_READ,FILE_SHARE_WRITE+FILE_SHARE_READ,0,OPEN_EXISTING,FILE_FLAG_BACKUP_SEMANTICS,0 В таком случаии открывает.
Ну я конечно могу ошибаться и не бей сильно Но Windows изначально использует unicode строки вот может поэтому трабла выходит?
а ты прав если в С++ поставить CreateFileA, то будут с DeviceIoControl... Как то странно, ведь CreateFileA сводится к CreateFileW ...
Вот посмотри комрад Clerck расписывает про ошибки(обрати внимание на пост №57), можетбыть у тебя проблемы с ФС самой?