Ошибка read file device error

Как исправить ошибку Disk Read Error OccurredИногда при включении компьютера можно столкнуться с ошибкой «A disk read error occurred. Press Ctrl+Alt+Del to restart» на черном экране, при это перезагрузка, как правило, не помогает. Ошибка может возникнуть после восстановления системы из образа, при попытке загрузки с флешки, а иногда и без каких-то видимых причин.

В этой инструкции подробно об основных причинах ошибки A disk read error occurred при включении компьютера и о способах исправить проблему.

Причины ошибки disk read error occurred и способы исправления

Сообщение об ошибке Disk Read Error Occurred

Сам по себе текст ошибки говорит о том, что произошла ошибка чтения с диска, при этом, как правило имеется в виду диск, с которого выполняется загрузка компьютера. Очень хорошо, если вы знаете, что предшествовало (какие действия с компьютером или события) появлению ошибки — это поможет более точно установить причину и выбрать метод исправления.

Среди наиболее распространенных причин, вызывающих появление ошибки «A disk read error occurred» можно выделить следующие

  1. Повреждение файловой системы на диске (например, в результате неправильного выключения компьютера, отключения электричества, сбоя при изменении разделов).
  2. Повреждение или отсутствие загрузочной записи и загрузчика ОС (по вышеозначенным причинам, а также, иногда, после восстановления системы из образа, особенно созданным сторонним ПО).
  3. Неправильные настройки БИОС (после сброса или обновления БИОС).
  4. Физические проблемы с жестким диском (диск вышел из строя, давно работал не стабильно, или после падения). Один из признаков — при работе компьютер то и дело зависал (когда включался) без видимых причин.
  5. Проблемы с подключением жесткого диска (например, вы плохо или неправильно его подключили, поврежден кабель, повреждены или окислены контакты).
  6. Недостаток питания вследствие выхода блока питания из строя: иногда при недостатке питания и неисправностях блока питания компьютер продолжает «работать», но некоторые компоненты могут самопроизвольно отключаться, в том числе — жесткий диск.

Исходя из этой информации и в зависимости от ваших предположений о том, что способствовало появлению ошибки, можно попробовать исправить её.

Прежде чем приступать, убедитесь, что диск, с которого выполняется загрузка, виден в БИОС (UEFI) компьютера: если это не так, вероятнее всего, проблем в подключении диска (перепроверьте подключение кабелей как со стороны самого диска, так и со стороны материнской платы, особенно если у вас системный блок находится в открытом виде или вы недавно выполняли какие-либо работы внутри него) или в его аппаратной неисправности.

Если ошибка вызвана повреждением файловой системы

Первое и самое безопасное — выполнить проверку диска на ошибки. Для этого потребуется загрузить компьютер с какой-либо загрузочной флешки (или диска) с утилитами диагностики или с обычной загрузочной флешки с любой версией Windows 10, 8.1 или Windows 7. Приведу метод проверки при использовании загрузочной флешки Windows:

  1. Если загрузочной флешки нет, создайте её где-то на другом компьютере (см. Программы для создания загрузочной флешки).
  2. Загрузитесь с неё (Как поставить загрузку с флешки в БИОС).
  3. На экране после выбора языка нажмите «Восстановление системы». Запуск восстановления системы
  4. Если у вас была загрузочная флешка Windows 7, в средствах восстановления выберите «Командная строка», если 8.1 или 10 — «Поиск и устранение неисправностей» — «Командная строка». Запуск командной строки
  5. В командной строке введите по порядку команды (нажимая Enter после каждой из них).
  6. diskpart
  7. list volume
  8. В результате выполнения команды на шаге 7 вы увидите букву системного диска (в данном случае она может отличаться от стандартной C), а также, при их наличии — отдельные разделы с загрузчиком системы, которые могут не иметь буквы. Для проверки её потребуется назначить. В моем примере (см. скриншот) на первом диске есть два раздела, которые не имеют буквы и которые имеет смысл проверить — Том 3 с загрузчиком и Том 1 со средой восстановления Windows. В следующих двух командах назначаю букву для 3-го тома. Список томов в среде восстановления
  9. select volume 3
  10. assign letter=Z (буква может быть любая не занятая) Назначение буквы разделу с загрузчиком
  11. Аналогично назначаем букву для других томов, которые следует проверить.
  12. exit (этой командой выходим из diskpart).
  13. Поочередно проверяем разделы (главное — проверить раздел с загрузчиком и системный раздел) командой: chkdsk C: /f /r (где C — буква диска). Проверка системного раздела на ошибки
  14. Закрываем командную строку, перезагружаем компьютер, уже с жесткого диска.

Если на 13-м шаге на каком-то из важных разделов были найдены и исправлены ошибки и причина проблемы была именно в них, то есть вероятность, что следующая загрузка пройдет успешно и ошибка A Disk Read Error Occurred вас больше не потревожит.

Повреждение загрузчика ОС

Если есть подозрения, что ошибка при включении вызвана повреждением загрузчика Windows, используйте следующие инструкции:

  • Восстановление загрузчика Windows 10
  • Восстановление загрузчика Windows 7

Проблемы с настройками БИОС/UEFI

Если ошибка появилась после обновления, сброса или изменения параметров БИОС, попробуйте:

  • Если после обновления или изменения — сбросить параметры БИОС.
  • После сброса — внимательно изучить параметры, особенно режим работы диска (AHCI/IDE — если не знаете, какой выбрать, попробуйте оба варианта, параметры находятся в разделах, связанных с конфигурацией SATA).
  • Обязательно проверьте порядок загрузки (на вкладке Boot) — ошибка может быть вызвана и тем, что нужный диск не выставлен в качестве устройства загрузки.

Если ничто из этого не помогает, а проблема связана с обновлением БИОС, уточните, есть ли возможность установить предыдущую версию на вашу материнскую плату и, если есть, попробуйте сделать это.

Проблема с подключением жесткого диска

Рассматриваемая проблема может быть вызвана и проблемами с подключением жесткого диска или работой SATA шины.

  • Если вы проводили работы внутри компьютера (или он стоял открытым, и кто-то мог задеть кабели) — переподключите жесткий диск как со стороны материнской платы, так и со стороны самого диска. Если есть возможность, попробуйте другой кабель (например, от DVD-привода).
  • Если вы установили новый (второй) накопитель, попробуйте отключить его: если без него компьютер загружается нормально, попробуйте подключить новый диск к другому разъему SATA.
  • В ситуации, когда компьютер долгое время не использовался и хранился не в идеальных условиях, причиной могут быть окисленные контакты на диске или кабеле.

Если ни один из способов не помогает решить проблему, при этом жесткий диск «виден», попробуйте переустановку системы с удалением всех разделов на этапе установки. Если через короткий промежуток после переустановки (или сразу после неё) проблема вновь заявит о себе — велика вероятность, что причина ошибки в неисправности жесткого диска.

I have created a App in which I am showing the pdf and docx file in Android Device which get download in device when button is been clicked we are displaying it in devices why using below code.

File pdfFile = new File(Environment.getExternalStorageDirectory() + "/FILE/a.docx");
Uri path = Uri.fromFile(pdfFile);
Intent pdfIntent = new Intent(Intent.ACTION_VIEW);
pdfIntent.setDataAndType(path,"application/msword");
pdfIntent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(pdfIntent);

Getting an error message in Android 4.2:

file read error. File type is unsupported or the file is corrupted.

4444's user avatar

4444

3,54110 gold badges31 silver badges43 bronze badges

asked Jan 18, 2017 at 12:53

Atul Dhanuka's user avatar

Atul DhanukaAtul Dhanuka

1,4335 gold badges20 silver badges56 bronze badges

That is not the correct MIME type for DOCX files. That is the MIME type for the older DOC format. Try application/vnd.openxmlformats-officedocument.wordprocessingml.document.

Also, do not use concatenation to build file paths, as you are making assumptions about the value returned by getExternalStorageDirectory(). Use:

File pdfFile = new File(Environment.getExternalStorageDirectory(), "FILE/a.docx");

answered Jan 18, 2017 at 13:00

CommonsWare's user avatar

CommonsWareCommonsWare

982k189 gold badges2383 silver badges2466 bronze badges

disk read error message

Если появление синего экрана смерти способно не на шутку встревожить, то что можно говорить о тех случаях, когда при включении компьютера появляется черный экран с одной или несколькими строчками на английском языке. Сегодня мы попробуем разобраться с одной из самых грозных и распространенных ошибок disk read error occurred press ctrl+alt+del to restart. Переводится она как «Не могу прочитать диск, нажмите ctrl+alt+del и перезагрузите компьютер».

Причины disk read error occurred могут быть разными, но так или иначе они связаны либо с повреждением данных на диске, либо с повреждением самой магнитной поверхности диска, либо со шлейфом или иными аппаратными компонентами, что встречается намного реже. Ниже вы можете ознакомиться с основными методами лечения ошибки, но сначала давайте узнаем, что же может стать ее первичной причиной.

  • Некорректная установка второй операционной системы
  • Установка старой версии Windows поверх новой
  • Манипуляции с логическими разделами при наличии нестабильных секторов
  • Падение работающего ноутбука (повреждение механики)
  • Восстановление системы из образа на забитый под развязку раздел
  • Отключение работающего компьютера кнопкой питания
  • Ошибочное удаление загрузочной записи антивирусом
  • Повреждение загрузочной записи вирусом
  • Физический износ диска и наличие на нем множества бэд-секторов
  • Проблемы с контактами, шлейфом, контроллерами
  • Неисправности блока питания

Итак, если вы столкнулись с ошибкой disk read error occurred, первым делом убедитесь в отсутствии аппаратных проблем. Зайдите в BIOS и посмотрите, определяется ли диск вообще. Если нет, проверьте контакты. Для верности можно попробовать подключить диск к рабочему компьютеру. Если диск не определяется BIOS или определяется неверно, данные на нем превратились в «кашу» – несите компьютер в сервисный центр, в этом случае лучше довериться специалистам.

Часто появление ошибки disk read error occurred связано с частичным или полным разрушением MBR – загрузочной записи, расположенной в нулевом секторе диска и обеспечивающей опознание логических разделов. Если информация MBR корректна, управление передается разделу «Зарезервировано системой» и дальше – по цепочке системному разделу C. При обнаружении несоответствия выдаётся ошибка disk read error occurred или Reboot and selеct proper boot device. Впрочем, известны случаи, когда ошибка disk read error occurred появлялась при повреждении загрузочных файлов скрытого раздела «Зарезервировано системой».

Проверка скрытого раздела

Загрузитесь с диска Acronis Disk Director или аналогичной программы и для начала убедитесь, что раздел «Зарезервировано системой» помечен как активный (установлен флажок). Если такой отметки нет, кликните по разделу правой кнопкой мыши и выберите опцию «Пометить как активный».

4143259_1

Заодно убедитесь, что необходимые для загрузки системы файл bootmgr и папка Boot находятся на месте. Если одного из этих элементов нет, скорее всего, причина ошибки в этом.

4143259_2

Восстановление файлов скрытого раздела

Для восстановления загрузочных файлов скрытого раздела вам понадобиться загрузочный образ с Windows 8.1. Загрузитесь с него, нажмите «Восстановление системы», «Диагностика», «Дополнительные параметры», «Командная строка».

4143259_3

Чтобы определиться с буквами дисков, выполните команду notepad.exe. В открывшемся Блокноте выбираем «Файл», «Открыть», «Этот компьютер» и смотрим буквы разделов. В нашем примере скрытый раздел имеет букву C, раздел с Windows букву D, а загрузочный диск букву X.

4143259_4

Восстановим файлы загрузки, выполнив команду bcdboot D:/Windows. Если ошибка была связана с повреждением файлов загрузки, проблема будет решена.

4143259_5

Проверка файловой системы и восстановление загрузочной записи

Ошибка disk read error occurred может быть вызвана повреждением файловой системы. Для анализа и исправления ошибок диска в командной строке загрузочной среды выполните команды chkdsk C: /r и chkdsk C: /f, а затем повторите то же для основного раздела с системой (раздел D).

4143259_6

4143259_7

Если проверка не выявила проблем, пробуем восстановить загрузочную запись. Для этого в командной строке выполняем эти команды:

bootrec.exe /fixmbr
bootrec.exe /fixboot

4143259_8

После этого выполняем поиск операционных систем и добавляем их в список меню загрузки:

bootrec.exe /rebuildBcd

4143259_9

Примечание

Для восстановления записей MBR можно использовать сторонние программы, например, загрузочный образ

Paragon Partition Manager

. Эти же программы можно использовать для проверки и устранения ошибок на жестком диске, если анализ chkdsk не дал результатов.

Прочие варианты

Если вышеописанные способы не помогли, можно попробовать переустановить систему, предварительно удалив и основной системный и зарезервированный разделы. А еще лучше снять диск, подключить его к другому компьютеру и, скопировав всю ценную информацию, полностью отформатировать, а заодно выполнить проверку на наличие ошибок. После этого на чистый диск устанавливается система.

4143259_10

Как вариант, можно попробовать следующий способ. От пользовательского раздела акронисом или другой аналогичной программой отделяется нераспределенное пространство и в него устанавливается копия Windows. После этого в меню загрузки должны появиться две системы, одна из которых, а может быть даже обе, окажутся вполне рабочими.

Отличного Вам дня!

What is the I/O device error and how to fix it without affecting the original data? This article will help you understand the origins and solutions of the I/O device error. And you can try MiniTool data recovery software to recover lost data as well.

I cannot access my external hard drive due to the following error message «Drive is not accessible. The request could not be performed because of an I/O device error» as shown below.

The request could not be performed because of an I/O device error

You can read this post to find some reliable solutions to fix this I/O device error in external hard drives as well as removable media without the loss of any data.

Part 1: What Is an I/O Device Error?

An I/O device error (short for Input/Output device error) happens when Windows is not able to perform an input/output action (such as reading or copying data) when it is trying to access a drive or disk.

It can occur in many different types of hardware devices or media.

Tip: Sometimes, the I/O device error may occur when you try to access the floppy disk driver in Windows XP Service Pack.

Common Reasons for the I/O Device Error

  • The plugged storage device is incorrectly connected. The PC cannot detect the connected device normally.
  • The computer USB port or the USB card reader is damaged or broken.
  • The computer storage device driver is outdated, damaged, or incompatible with your attached device.
  • The external hard drive, memory card, or USB drive is recognized with a wrong drive letter.
  • The external hard drive, memory card, or USB drive that you are trying to access is dirty or damaged.
  • Windows is trying to use a transfer mode that the hardware device cannot use.

Common Symptoms of «I/O Device Error»

In general, you will get the following messages if your storage device unexpectedly gets the I/O device error issue:

  • «The request could not be performed because of an I/O device error».
  • «I/O error 32», «I/O error 21» or the similar «I/O error + codes».
  • «Only part of a read process memory request was completed» or «Only part of a write process memory request was completed».

So, how to solve this I/O device error in Windows 10/7? Here is a video tutorial for you.

Regardless of why and how the I/O device error message is triggered, it is strongly recommended for data of the affected drive be transferred or recovered before any attempts to fix the issue. All of the files and data stored on the affected drive are at risk of being lost completely in the occurrence of the I/O error.

However, how to get lost data back from this damaged drive effectively? Please keep reading.

Part 2: Recover Data from Drive With the I/O Device Error

How to recover data from the drive with the I/O device error without affecting the original data?

We recommend MiniTool Power Data Recovery for the following reasons.

  • All-in-one and read-only data recovery software.
  • Excellent data recovery effect and great reliability.
  • Detailed instructions to help you recover data successfully.
  • Millions of users world-wide.
  • Support Windows 7, Windows 8, Windows 8.1, Windows 10, Windows 11, Windows Server, etc.

In short, using MiniTool Power Data Recovery, you can easily and quickly recover lost data without damaging the original data. It is a tool with high security, excellent performance, and simple operations.

Free Download

Warning: Do not install MiniTool Power Data Recovery on the drive containing lost data. Otherwise, the original data could be overwritten and there is no way to recover overwritten files.

A step-by-step guide to recovering data from the drive with the I/O Device Error:

Step 1. Launch MiniTool Power Data Recovery (You can click the Scan Settings icon in the left panel to configure scanning for specific file systems and file types).

Under the Logical Drives section, select the target drive and click Scan to scan for desired data in the disk sector-by-sector. For the best recovery result, please wait until the full scan is complete.

select the target drive to scan

Step 2. After scanning, you can use the following features to filter, preview, and search for your files.

  • Filter: Filter files by file name, file size, date modified, etc. For instance, if you only want to recover photos, you can choose Picture to filter out other types of files.
  • Preview: Before recovering files, you can preview the selected files. You can also preview photos before saving them.
  • Export Scan Result: After scanning, you can export the results to a specific location. Then you can load previous results in the future without rescanning (Recommended if the disk scanning and data filtering take a long time. And, this feature is only available for paid editions).
  • Search: Find a specific file using the keyword of the file name.

filter, preview, search, and export scan result

Step 3. Verify the files recovered, and then click Save to store useful ones to a safe place separate from the original drive.

save all needed files

To recover unlimited data, use MiniTool Power Data Recovery Personal by purchasing and registering a MiniTool license key.

With MiniTool Power Data Recovery, I quickly recovered lost data from the hard drive with the I/O device error without bringing any damage to the original data.Click to Tweet

After recovering lost data, let’s see how to fix the external hard drive I/O error.

Part 3: How to Fix I/O Device Error in Windows 10/7/8

Here are several solutions to fix the I/O device error in Windows 7, Windows 8, and Windows 10. You can feel free to try them one by one.

Solution 1: Ensure the Storage Device Connection Is Working Correctly

The affected storage device might not have been connected properly. To check the connection, disconnect the storage medium and connect it with another USB port, USB cable, USB adaptor, or USB card reader. Data on the device should be able to be read as usual if this is caused by a faulty connection.

Solution 2: Download, Install, or Update Your Device Driver

If the computer storage device driver is outdated, damaged, or incompatible with your attached device, it might affect its input/output functionality.

Download, install, or update your device driver, and then disconnect and reconnect this device to see whether the I/O error is fixed.

Solution 3: Change the Drive Letter

If the external drive is detected with a wrong drive letter, its I/O functionality will be affected because the computer would be reading from the wrong or non-existent drive.

You can change the drive letter to fix this issue. To do so without affecting the original data, you can use MiniTool Partition Wizard, a free, simple, and professional partition magic.

Step 1. Download and install MiniTool Partition Wizard, and then launch it.

Free Download

Step 2. Select the target external drive and choose Change Drive Letter from the action panel.

change the drive letter

Step 3. Choose a drive letter from the list. Click OK to go back to the main interface.

Step 4. Click the Apply button to perform this operation.

Solution 4: Check and Repair Disk Errors on the Drive

You can also run a check disk from a command line to check for and fix disk errors.

Step 1: Type CMD in the Windows search box and right-click the Command Prompt to select Run as administrator.

Step 2: Type «chkdsk /f x:» into the Command Prompt window and press Enter. The letter «x» should be replaced with the letter name of the drive you’d like to run the scan on.

Step 3: Finally, type «exit» and press Enter.

Solution 5: Change the Transfer Mode for The Drive in IDE Channel Properties

Windows cannot transfer data from the drive to the computer if the transfer mode for the drive was changed or incorrect. Therefore, in this case, you can follow these steps to change the transfer mode to fix this problem.

Step 1: Press the Start button and select Device Manager.

Step 2: Expand IDE ATA/ATAPI controllers. You will see a list containing various IDE ATA/ATAPI channels for your PC.

Step 3: Right-click the channel where the external drive is connected, and then click Properties. Typically, the channel that is usually used for external hard drives is the Secondary IDE Channel.

right-click to select Properties

Step 4: Open the Advanced Settings tab and select the PIO Only option in the box labeled Transfer Mode for the device representing your external hard drive. Usually, this is Device 0. Click OK to close all windows.

Step 5: Restart your computer and check if the I/O device error has been addressed.

Solution 6: Perform a Clean Boot

Similar to starting Windows in safe mode, performing a clean boot can determine whether a background program is interfering with your computer. Here is how to do that.

Step 1. In the Windows search box, type msconfig and select System Configuration.

Step 2. Go to the Services tab, and check Hide all Microsoft services. Then select Disable all and click Apply.

disable all services

Step 3. Go to the Startup tab, and select Open Task Manager.

open Task Manager

Step 4. For each enabled startup item, select them one by one to click Disable.

Step 5. Close Task Manager and click OK on the Startup section of the System Configuration window.

Solution 7: Format the Hard Drive

If all the above solutions cannot help you, you can try formatting your hard drive. If you don’t know how to format a hard drive with ease, you can try MiniTool Partition Wizard which offers concise PI.

Tip: If formatting does not work either, your drive must be seriously damaged. In this case, you have no choice but to replace it with a new one.

Bottom Line

Are you troubled by this message «The request could not be performed because of an I/O device error»? Now, you can try the solutions listed above to fix this I/O device error on external and internal hard drives. Remember to recover your lost data in the drive before trying the solutions.

Like this post? Share it to help more users get rid of the I/O device error.

If you have any questions about data recovery using MiniTool Power Data Recovery, please feel free to contact us via [email protected].

Сладуля

0 / 0 / 0

Регистрация: 17.11.2013

Сообщений: 107

Записей в блоге: 2

1

21.03.2015, 16:05. Показов 3633. Ответов 16

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

C++
1
2
3
4
5
char buf[512];
Device = CreateFile(all_name_card_lpcwstr, 0, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
ReadFile(Device, &buf, 512, &rb, NULL);         
SetFilePointer(Device, rb, NULL, FILE_CURRENT);
WriteFile("C:\Documents and Settings\Kate\Рабочий стол\hi.txt", &buf, rb, &wb, 0);

Подскажите почему файл у меня открывается, но не считывается из него? ну то есть массив buf после ReadFile Остается нулевым



0



Ушел с форума

Эксперт С++

16459 / 7423 / 1186

Регистрация: 02.05.2013

Сообщений: 11,617

Записей в блоге: 1

21.03.2015, 16:22

2

Что в Device после CreateFile ?
Что возвращает ReadFile ?
Что возвращает SetFilePointer ?
Что возвращает WriteFile и почему первым аргументом передается путь, а не хэндл файла ?



1



Сладуля

0 / 0 / 0

Регистрация: 17.11.2013

Сообщений: 107

Записей в блоге: 2

21.03.2015, 16:44

 [ТС]

3

в Device 0x000002d4, SetFilePointer возвращает 0xffffffff.
Проблема фиг знает в чем, так как открытие файла вроде как проходит, так как ошибки INVALID_HANDLE_VALUE нет.
Что касается ReadFile, на сколько я понимаю в миссив buf должна считаться информация, но после того как я прохожу эту строчку у меня этот массив по-прежнему обнуленным остается.
с WriteFile особо пока не разбиралась, написала на скорую руку и не думая, так как для начала надо решить проблему с ReadFile .

Добавлено через 15 минут

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
String^ all_name_card;
all_name_card = "\\.\"+name_card+":";
MessageBox::Show("Путь "+all_name_card, "Сообщение");
pin_ptr<const wchar_t> all_name_card_lpcwstr = PtrToStringChars(all_name_card);
Device = CreateFile(all_name_card_lpcwstr, 0, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
if (Device != INVALID_HANDLE_VALUE)
    MessageBox::Show(String::Format("{0:X}",(int)Device), "Сообщение");
 
DWORD rb, wb;
char ybuf[512];
for (int n = 0; n<512; n++)
{
    buf[n] = 0;
}
ReadFile(Device, &buf, 512, &rb, NULL);         
SetFilePointer(Device, rb, NULL, FILE_CURRENT);
WriteFile("C:\Documents and Settings\Kate\Рабочий стол\hi.txt", &buf, rb, &wb, 0);

это весь код



0



Ушел с форума

Эксперт С++

16459 / 7423 / 1186

Регистрация: 02.05.2013

Сообщений: 11,617

Записей в блоге: 1

21.03.2015, 17:35

4

Так надо проверить, что возвращает ReadFile, и если FALSE,
что скорее всего, вызвать GetLastError (а расшифровку кода
смотреть утилитой Error Lookup).



1



0 / 0 / 0

Регистрация: 17.11.2013

Сообщений: 107

Записей в блоге: 2

21.03.2015, 17:40

 [ТС]

5

Подскажите как проверить, что возвращает ReadFile?



0



Убежденный

Ушел с форума

Эксперт С++

16459 / 7423 / 1186

Регистрация: 02.05.2013

Сообщений: 11,617

Записей в блоге: 1

21.03.2015, 17:59

6

C++
1
2
3
4
5
6
7
8
if (FALSE == ReadFile(..., ...))
{
    // Обработка ошибки (смотрим, что в GetLastError).
}
else
{
    // В этой ветке все ок.
}



0



0 / 0 / 0

Регистрация: 17.11.2013

Сообщений: 107

Записей в блоге: 2

21.03.2015, 18:11

 [ТС]

7

GetLastError(); он же вот так вызывается?

Добавлено через 9 минут
Итак код ошибки 5. ERROR_ACCESS_DENIED. что с этим делать?(



0



Ушел с форума

Эксперт С++

16459 / 7423 / 1186

Регистрация: 02.05.2013

Сообщений: 11,617

Записей в блоге: 1

21.03.2015, 18:17

8

Передайте вторым аргументом CreateFile флаги GENERIC_READ и GENERIC_WRITE.



0



Сладуля

0 / 0 / 0

Регистрация: 17.11.2013

Сообщений: 107

Записей в блоге: 2

21.03.2015, 18:33

 [ТС]

9

Invalid access to memory location ошибка номер 998.

слушайте, я таким образом пытаюсь открыть sd карту без файловой системы.Ну грубо говоря, сначала я определяю букву диска, которым определилась карта. потом эту букву подставляю в путь. и пытаюсь по букве открыть целиковую карту(как файл) и считать. Может это из-за этого?

Задача такова, что мне нужно считать с Sd карты(flash) всю информацию в 16-чной системе(а-ля WinHex). проще говорят записать все что лежит в sd карте в массив. может есть какие-то другие способы. но я решила воспользоваться этим

Добавлено через 5 минут
но так же сейчас я попробовала открыть просто файл с рабочего стола, и он выдал ошибку 6 ERROR_INVALID_HANDLE

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
HANDLE Device;
String^ all_name_card;
all_name_card = "C:\Users\Екатерина\Desktop\test.txt";
MessageBox::Show("Путь "+all_name_card, "Сообщение");
pin_ptr<const wchar_t> all_name_card_lpcwstr = PtrToStringChars(all_name_card);
Device = CreateFile(all_name_card_lpcwstr, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
if (Device != INVALID_HANDLE_VALUE)
    MessageBox::Show(String::Format("{0:X}",(int)Device), "Сообщение");
 
DWORD rb, wb;
char buf[512];
DWORD Error;
for (int n = 0; n<512; n++)
{
    buf[n] = 0;
}
DWORD BuffSize = GetFileSize(Device, NULL);             // получаем размер файла     
if (FALSE == ReadFile(Device, &buf, BuffSize, &rb, NULL))
{
    Error = GetLastError();
    MessageBox::Show(String::Format("{0:X}",(int)Error), "Сообщение");
}
else MessageBox::Show("Файл прочитан успешно", "Сообщение");



0



Ушел с форума

Эксперт С++

16459 / 7423 / 1186

Регистрация: 02.05.2013

Сообщений: 11,617

Записей в блоге: 1

22.03.2015, 08:59

10

Цитата
Сообщение от Сладуля
Посмотреть сообщение

Invalid access to memory location ошибка номер 998.

Это откуда ?

Цитата
Сообщение от Сладуля
Посмотреть сообщение

слушайте, я таким образом пытаюсь открыть sd карту без файловой системы.Ну грубо говоря, сначала я определяю букву диска, которым определилась карта. потом эту букву подставляю в путь. и пытаюсь по букве открыть целиковую карту(как файл) и считать. Может это из-за этого?

И что Вы пытаетесь таким образом считать ?
Я не в курсе на счет SD-карты, но CreateFile на букве диска выдает
так называемый volume handle, который обычно используется
только для получения метаданных (partition table).

Цитата
Сообщение от Сладуля
Посмотреть сообщение

но так же сейчас я попробовала открыть просто файл с рабочего стола, и он выдал ошибку 6 ERROR_INVALID_HANDLE

Где выдал ? В каком конкретно месте ?



0



0 / 0 / 0

Регистрация: 17.11.2013

Сообщений: 107

Записей в блоге: 2

22.03.2015, 09:29

 [ТС]

11

Эти ошибки выдал GetLastError. Не подскажите как их можно решить?

Добавлено через 2 минуты
А про sd карту, то не можно открыть по аналогии с программой winhex, то есть в шестнадцатиричной системе. Вот это я и пытаюсь сделать. Ну Типо представить карту как единый файл и открыть. Ну тут суть даже не в этом у меня не считываются даже файлы с рабочего стола и я не пойму в чем проблема



0



Ушел с форума

Эксперт С++

16459 / 7423 / 1186

Регистрация: 02.05.2013

Сообщений: 11,617

Записей в блоге: 1

22.03.2015, 12:50

12

Цитата
Сообщение от Сладуля
Посмотреть сообщение

Эти ошибки выдал GetLastError.

В каких конкретно местах ?



0



0 / 0 / 0

Регистрация: 17.11.2013

Сообщений: 107

Записей в блоге: 2

22.03.2015, 13:02

 [ТС]

13

Вот в переменной error



0



Ушел с форума

Эксперт С++

16459 / 7423 / 1186

Регистрация: 02.05.2013

Сообщений: 11,617

Записей в блоге: 1

22.03.2015, 13:10

14

Сладуля, так мы далеко не уедем.
Приведите самую последнюю версию кода и конкретные места в нем,
где происходят ошибки.

Добавлено через 52 секунды
Просто так не бывает, чтобы CreateFile с GENERIC_READ успешно
открывал файл, но ReadFile вдруг обламывался.



0



Сладуля

0 / 0 / 0

Регистрация: 17.11.2013

Сообщений: 107

Записей в блоге: 2

22.03.2015, 13:19

 [ТС]

15

Итак скидываю программу просто для проверки: открытие файла с рабочего стола и считывание с него данных.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
HANDLE Device;
String^ all_name_card;
all_name_card = "C:\Users\Екатерина\Desktop\test.txt";
MessageBox::Show("Путь "+all_name_card, "Сообщение");
                    pin_ptr<const wchar_t> all_name_card_lpcwstr = PtrToStringChars(all_name_card);
Device = CreateFile(all_name_card_lpcwstr, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
if (Device != INVALID_HANDLE_VALUE)
    MessageBox::Show(String::Format("{0:X}",(int)Device), "Сообщение");
 
DWORD rb, wb;
char buf[512];
DWORD Error;
for (int n = 0; n<512; n++)
{
    buf[n] = 0;
}
DWORD BuffSize = GetFileSize(Device, NULL);             // получаем размер файла     
if (FALSE == ReadFile(Device, &buf, BuffSize, &rb, NULL))
{
        Error = GetLastError();
        MessageBox::Show(String::Format("{0:X}",(int)Error), "Сообщение");
}
else MessageBox::Show("Файл прочитан успешно", "Сообщение");

Здесь в переменной Error появляется код ошибки 0x06, то есть ERROR_INVALID_HANDLE.
Если Вы поможете мне разобраться с этой ошибкой, то может по аналогии получится сделать мой основной код. В общем решим сначала эту проблеиу



0



Ушел с форума

Эксперт С++

16459 / 7423 / 1186

Регистрация: 02.05.2013

Сообщений: 11,617

Записей в блоге: 1

22.03.2015, 13:23

16

Вопрос: а сообщение в строке 8 выводится на экран ?



0



0 / 0 / 0

Регистрация: 17.11.2013

Сообщений: 107

Записей в блоге: 2

22.03.2015, 13:32

 [ТС]

17

Блин, вы совершенно правы, в этой программе не выводится, так как пишет ошибку INVALID_HANDLE_VALUE. (совсем забыла проверить, так как в моей основной программе здесь ошибки не было)



0



Понравилась статья? Поделить с друзьями:
  • Ошибка r01 на котле beretta
  • Ошибка react must be in scope when using jsx
  • Ошибка r01 на котле baxi
  • Ошибка rage mp gta 5 installation patch
  • Ошибка r01 на газовом котле бакси