powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Считать информацию с флэшки
13 сообщений из 13, страница 1 из 1
Считать информацию с флэшки
    #38264372
Alex_kip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Открыл раздел флэшки следующим образом
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
razdel=CreateFileA("\\\\.\\H:",
        GENERIC_READ,
        FILE_SHARE_READ | FILE_SHARE_WRITE,
        NULL,
        OPEN_EXISTING,
        0,
        NULL))


Теперь хочу считать с нее информацию, использую ReadFile(razdel,buffer,5,k,0), которая, по идее, должна считать 5 символов в buffer. Но функция возвращает false( Не могу разобраться, почему?
...
Рейтинг: 0 / 0
Считать информацию с флэшки
    #38264386
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_kipиспользую ReadFile(razdel,buffer,5,k,0)
Это в каком языке ей можно передать переменную и константу вместо двух указателей?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Считать информацию с флэшки
    #38264609
Alex_kip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
BOOL WINAPI ReadFile(
  _In_         HANDLE hFile,
  _Out_        LPVOID lpBuffer,
  _In_         DWORD nNumberOfBytesToRead,
  _Out_opt_    LPDWORD lpNumberOfBytesRead,
  _Inout_opt_  LPOVERLAPPED lpOverlapped
);



Первый параметр - результат CreateFile - HANDLE, второй параметр - char*, 3 параметр - количество символов(5), 4 параметр переменная LPDWORD.
Что я не так делаю?
...
Рейтинг: 0 / 0
Считать информацию с флэшки
    #38264629
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_kip,

а что говорит GetLastError() ?
...
Рейтинг: 0 / 0
Считать информацию с флэшки
    #38264630
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovAlex_kipиспользую ReadFile(razdel,buffer,5,k,0)
Это в каком языке ей можно передать переменную и константу вместо двух указателей?
Если k объявлена как указатель нужного типа, то легко :)
Alex_kipЧто я не так делаю?
Вы не привели свой код, чтобы мы хотя бы посмотрели на него, а не гадали. В этом определенно что-то не так.
...
Рейтинг: 0 / 0
Считать информацию с флэшки
    #38264658
Alex_kip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Anatoly MoskovskyDimitry Sibiryakovпропущено...

Это в каком языке ей можно передать переменную и константу вместо двух указателей?
Если k объявлена как указатель нужного типа, то легко :)
Alex_kipЧто я не так делаю?
Вы не привели свой код, чтобы мы хотя бы посмотрели на него, а не гадали. В этом определенно что-то не так.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 if ((razdel = CreateFileA("\\\\.\\H:", GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE,0,OPEN_EXISTING,0,0)) == INVALID_HANDLE_VALUE)
    {
        cout << "Error: " << GetLastError() << endl;
        return (-1);
    }
    buffer=new char[6];
    LPDWORD k=0;
    if(!ReadFile(razdel,buffer,5,k,0))
    {
        cout << "Error: " << GetLastError() << endl;
        return (-1);
    }
...
Рейтинг: 0 / 0
Считать информацию с флэшки
    #38264660
Alex_kip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропил, Error 87
...
Рейтинг: 0 / 0
Считать информацию с флэшки
    #38264673
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_kip,

Прочитайте внимательнее справку по этой функции
http://msdn.microsoft.com/en-us/library/windows/desktop/aa365467(v=vs.85).aspx

Несмотря на то что параметр lpNumberOfBytesRead помечен как необязательный, это отнотится только к режиму overlapped I/O. Во всех остальных случаях он не может быть 0.

Правильное использование этого параметра такое:
Код: plaintext
1.
2.
DWORD len;
... =ReadFile(..., &len, 0);


Никаких отдельных указателей объявлять не надо.
...
Рейтинг: 0 / 0
Считать информацию с флэшки
    #38264697
Alex_kip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
DWORD k;
    if(!ReadFile(razdel,buffer,5,&k,0))
    {
        cout << "Error: " << GetLastError() << endl;
        return (-1);
    }


Так тоже пробовала - 87 ошибка
...
Рейтинг: 0 / 0
Считать информацию с флэшки
    #38264707
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_kip,

87 - ошибка в параметрах.

Читаем сектор логичеккого диска , а не файл ?

512 байт читайте(ну или что там о диске IOCTL_DISK_GET_DRIVE_GEOMETRY расскажет)
...
Рейтинг: 0 / 0
Считать информацию с флэшки
    #38264713
Alex_kip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Читал 512 байт - пишет ошибка доступа. Решил до 5 байт сократить пока.
...
Рейтинг: 0 / 0
Считать информацию с флэшки
    #38264755
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_kipЧитал 512 байт - пишет ошибка доступа. Решил до 5 байт сократить пока.
с правами администратора читайте сектор, уменьшение размера от нехватки прав не поможет
...
Рейтинг: 0 / 0
Считать информацию с флэшки
    #38264777
Alex_kip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну если я 5 байт считать не могу, то вряд ли смогу 512. Спасибо всем.
Буду пытаться fopen'ом считывать, раз так не получается
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Считать информацию с флэшки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]