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

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

03.04.2013, 17:29. Показов 11439. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения. https:/ / habr. com/ ru/ sandbox/ 295048/ начало и оглавление - Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование. . .
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0) Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона Уважаемые коллеги! В продолжение. . .
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru