Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.50/54: Рейтинг темы: голосов - 54, средняя оценка - 4.50
 Аватар для sasha0192
51 / 51 / 7
Регистрация: 23.01.2012
Сообщений: 449

Как читать/записывать ячейки SD карты (Flash карты)

03.04.2013, 17:29. Показов 11633. Ответов 60
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе время суток, возникла необходимость прочесть/записать ячейки SD карты.

Подобно тому как это делает программа WinHex

Смотри

Как возможно это сделать ?

Заранее спасибо!
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.04.2013, 17:29
Ответы с готовыми решениями:

Как записывать со встроенной звуковой карты?
Здравствуйте. Есть ноут ASUS K52JB и есть проблема: в аудиоустройствах отображаются только динамики Conexant CX20671 SmartAudio HD (для...

Есть номер банкоматовской карты. Как по одному номеру карты можно снять деньги?
Есть номер банкоматовской карты. Как по одному номеру карты можно снять деньги? Пин кода нет. Только номер карты Добавлено через 7...

Восстановление SDHC-flash карты.
Давно, когда покупал фотик, прикупил к нему флешку на 16гиг. Кароче проработала она с месяц гдето, и перестала опознаваться, похоронив в...

60
C#
57 / 57 / 5
Регистрация: 09.03.2013
Сообщений: 216
12.04.2013, 18:37
Студворк — интернет-сервис помощи студентам
5 - ERROR_ACCESS_DENIED. В антивирусе отключи защиту в реальном времени.
1
 Аватар для sasha0192
51 / 51 / 7
Регистрация: 23.01.2012
Сообщений: 449
12.04.2013, 18:40  [ТС]
Если "\\\\.\\PhysicalDrive1" то ошибка 5.

Если "\\\\.\\PhysicalDrive2" то 2
0
C#
57 / 57 / 5
Регистрация: 09.03.2013
Сообщений: 216
12.04.2013, 18:43
2 это ERROR_INVALID_FUNCTION, у меня возникает если отключить флешку.
PhysicalDrive0 - это у меня внутренний SSD, PhysicalDrive1 - внешний HDD, PhysicalDrive2 становиться флешка (обычная USB, не SD) после подключения.
PhysicalDrive0 пробовал?
0
 Аватар для sasha0192
51 / 51 / 7
Регистрация: 23.01.2012
Сообщений: 449
12.04.2013, 18:47  [ТС]
Цитата Сообщение от A1exSun Посмотреть сообщение
PhysicalDrive0 пробовал?
Да, тоже 5.


Цитата Сообщение от A1exSun Посмотреть сообщение
2 это ERROR_INVALID_FUNCTION, у меня возникает если отключить флешку.
Получается, что "\\\\.\\PhysicalDrive2" это флешка, да.

Странно что не читает.
0
C#
57 / 57 / 5
Регистрация: 09.03.2013
Сообщений: 216
12.04.2013, 19:02
UAC отключен?
0
 Аватар для sasha0192
51 / 51 / 7
Регистрация: 23.01.2012
Сообщений: 449
12.04.2013, 19:08  [ТС]
"\\\\.\\PhysicalDrive1" если SD есть то выдает 5, если нет то 2

Добавлено через 57 секунд
Антивир отключен.
0
C#
57 / 57 / 5
Регистрация: 09.03.2013
Сообщений: 216
12.04.2013, 19:18
Даже не знаю, в чем может быть проблема.
Посмотрел зарубежные форумы - везде пишут про администраторские права и отключенный UAC.
Пользователь, под которым ты в системе - администратор?
0
 Аватар для sasha0192
51 / 51 / 7
Регистрация: 23.01.2012
Сообщений: 449
12.04.2013, 19:23  [ТС]
Да, кажется получилось запустить от имени администратора, вот что получилось -
Изображения
 
0
C#
57 / 57 / 5
Регистрация: 09.03.2013
Сообщений: 216
12.04.2013, 19:25
Код мой выполняешь?
C#
1
handle = CreateFile("\\\\.\\PhysicalDrive1", GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0);
Если вместо GENERIC_READ использовать GENERIC_WRITE, то будет ошибка 5.

Добавлено через 1 минуту
87 - ERROR_INVALID_PARAMETER, у меня возникает при малом количестве байт для чтения, например 100. Количество кратное 512 читается нормально.
0
 Аватар для sasha0192
51 / 51 / 7
Регистрация: 23.01.2012
Сообщений: 449
12.04.2013, 19:26  [ТС]
Цитата Сообщение от A1exSun Посмотреть сообщение
Код мой выполняешь?
Да.


Цитата Сообщение от A1exSun Посмотреть сообщение
Если вместо GENERIC_READ использовать GENERIC_WRITE, то будет ошибка 5.
Вот что получилось -
Изображения
 
0
 Аватар для sasha0192
51 / 51 / 7
Регистрация: 23.01.2012
Сообщений: 449
12.04.2013, 19:28  [ТС]
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
            //handle = CreateFile("\\\\.\\PhysicalDrive1", GENERIC_READ, 1 | 2, 0, OPEN_EXISTING, 0x80, 0);
            handle = CreateFile("\\\\.\\PhysicalDrive1", GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0);
 
            Console.WriteLine("Last error: " + Marshal.GetLastWin32Error());
 
            Console.Write(handle.ToInt64());
 
            SetFilePointer(handle, 0x200, 0, EMoveMethod.Begin);
 
            byte[] data = new byte[128];
            int n = Read(data, 0, 512);
 
            Console.WriteLine(Encoding.Default.GetString(data));
            Console.WriteLine("Bytes read: " + n + ", last error: " + Marshal.GetLastWin32Error());
 
            Console.ReadKey();
            CloseHandle(handle);
Миниатюры
Как читать/записывать ячейки SD карты (Flash карты)  
0
C#
57 / 57 / 5
Регистрация: 09.03.2013
Сообщений: 216
12.04.2013, 19:31
C#
1
            byte[] data = new byte[512];
0
 Аватар для sasha0192
51 / 51 / 7
Регистрация: 23.01.2012
Сообщений: 449
12.04.2013, 19:31  [ТС]
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
static void Main(string[] args)
        {
            //handle = CreateFile("\\\\.\\PhysicalDrive1", GENERIC_READ, 1 | 2, 0, OPEN_EXISTING, 0x80, 0);
            handle = CreateFile("\\\\.\\PhysicalDrive1", GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0);
 
            Console.WriteLine("Last error: " + Marshal.GetLastWin32Error());
 
            Console.Write(handle.ToInt64());
 
            SetFilePointer(handle, 0x200, 0, EMoveMethod.Begin);
 
            byte[] data = new byte[512];
            int n = Read(data, 0, 512);
 
            Console.WriteLine(Encoding.Default.GetString(data));
            Console.WriteLine("Bytes read: " + n + ", last error: " + Marshal.GetLastWin32Error());
 
            Console.ReadKey();
            CloseHandle(handle);
        }
Миниатюры
Как читать/записывать ячейки SD карты (Flash карты)  
0
C#
57 / 57 / 5
Регистрация: 09.03.2013
Сообщений: 216
12.04.2013, 19:32
Оно
0
 Аватар для sasha0192
51 / 51 / 7
Регистрация: 23.01.2012
Сообщений: 449
12.04.2013, 19:35  [ТС]
А как прочитать по указанному адресу ?

Так ?
C#
1
            SetFilePointer(handle, 0x400, 0, EMoveMethod.Begin);
0
C#
57 / 57 / 5
Регистрация: 09.03.2013
Сообщений: 216
12.04.2013, 19:36
Цитата Сообщение от sasha0192 Посмотреть сообщение
А как прочитать по указанному адресу ?

Так ?
C#
1
            SetFilePointer(handle, 0x400, 0, EMoveMethod.Begin);
Да, здесь 0x400 младшая половина адреса, 0 - старшая. EMoveMethod.Begin - позиция от начала файла/устройства.
0
 Аватар для sasha0192
51 / 51 / 7
Регистрация: 23.01.2012
Сообщений: 449
12.04.2013, 19:39  [ТС]
Цитата Сообщение от A1exSun Посмотреть сообщение
Да, здесь 0x400 младшая половина адреса, 0 - старшая.
Вот что выдает при попытке сменить адрес
Миниатюры
Как читать/записывать ячейки SD карты (Flash карты)  
0
C#
57 / 57 / 5
Регистрация: 09.03.2013
Сообщений: 216
12.04.2013, 19:41
Так ты пытаешься прочесть данные по адресу 0x60000000200, он есть?
Половины по 32 бита.
1
 Аватар для sasha0192
51 / 51 / 7
Регистрация: 23.01.2012
Сообщений: 449
12.04.2013, 19:42  [ТС]
обрати внимание на Begin = 200

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
public enum EMoveMethod : uint
        {
            Begin = 200,
            Current = 1,
            End = 2
        }
 
        [DllImport("Kernel32.dll", SetLastError = true)]
        static extern uint SetFilePointer(IntPtr hFile, int lDistanceToMove, int lpDistanceToMoveHigh, EMoveMethod dwMoveMethod);
 
        [DllImport("kernel32", SetLastError = true)]
        static extern unsafe bool CloseHandle
        (
            System.IntPtr hObject // handle to object
        );
 
        static IntPtr handle;
 
        static void Main(string[] args)
        {
            //handle = CreateFile("\\\\.\\PhysicalDrive1", GENERIC_READ, 1 | 2, 0, OPEN_EXISTING, 0x80, 0);
            handle = CreateFile("\\\\.\\PhysicalDrive1", GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0);
 
            Console.WriteLine("Last error: " + Marshal.GetLastWin32Error());
 
            Console.Write(handle.ToInt64());
 
            SetFilePointer(handle, 0x200, 0, EMoveMethod.Begin);
 
            byte[] data = new byte[512];
            int n = Read(data, 0, 512);
 
            Console.WriteLine(Encoding.Default.GetString(data));
            Console.WriteLine("Bytes read: " + n + ", last error: " + Marshal.GetLastWin32Error());
 
            Console.ReadKey();
            CloseHandle(handle);
        }
Миниатюры
Как читать/записывать ячейки SD карты (Flash карты)   Как читать/записывать ячейки SD карты (Flash карты)  
0
C#
57 / 57 / 5
Регистрация: 09.03.2013
Сообщений: 216
12.04.2013, 19:50
Попробуй в HEX вывести:
C#
1
for (int i = 0; i < data.Length; i++) Console.Write(data[i].ToString("X2"));
Или же, при открытии вместо PhysicalDrive1 букву диска, то есть так: "/.//C:"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.04.2013, 19:50

Сколькими способами из колоды (52 карты) можно выбрать 4 карты одной масти?
сколькими способами из колоды(52 карты) можно выбрать 4 карты одной масти? Можно найти общее число исходов, а дальше не знаю как,...

Вывести название карты, заданной двумя числами (достоинство и масть карты)
Здравствуйте , не могу понять как объявить переменные.. требуется же вроде как номер и имя(масть) не понимаю что-то.. помогите пожалуйста,...

Определить вероятность выпадения 4 дам, если из колоды в 32 карты взяли 4 карты
ЗАДАЧА 2: ИЗ 32 карт взяли 4 карты. Какова вероятность, что эти 4 карты все дамы ?

Поиск дисконтной карты при считывании кода с магнитной карты
Добрый день. Конфигурация: Управление торговлей 10.3 Если в Чеке ККМ (или Реализации товаров и услуг) нажать на поле &quot;Дисконтная...

Ввести порядковый номер карты из колоды и вывести в консоль масть и достоинство карты
ввести порядковый номер карты из колоды и выводит в консоль масть и достоинство карты. Колода, начинается с двоек до туза, по очереди, для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru