Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.06.2013, 00:08   #1
kineziz
Форумчанин
 
Регистрация: 22.12.2011
Сообщений: 378
По умолчанию ReadFile (ошибка №6)

Вообщем проблема такая. Открываю файл функцией OpenFile

Код:
OFSTRUCT OpenFileStruct;
HANDLE hFile = (HANDLE)OpenFile("C:\\1.txt",&OpenFileStruct,OF_READ);
Далее в цикле читаем файл:
Код:
while (условие) 
{
     char Byte = 0;
     OVERLAPPED OverLapped;
     ReadFile(hFile,&Byte,sizeof(BYTE),nullptr,&OverLapped);
}
И при попытке чтения, функция ReadFile выдает ошибку с кодом 6 - Неверный дескриптор. Стандартный файловый поток ввода\вывода C++ работает на ура, а вот WINAPI почему-то не хочет. Пробовал открывать файл функцией CreateFile, тоже самое. Пробовал создавать новое консольное приложение (пустое) и скопировал код чтения из файла и тоже выдает ошибку 6. Что может быть?

P.S. После вызова функции OpenFile hFile != HFILE_ERROR

P.P.S. При необходимости могу выложить полный код данной подпрограммы (функции)

Чуть не забыл: Данная функция, выполняющая выше описанные операции, выполняется в отдельном потоке, созданным функцией CreateThread и находится в DLL
Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования.

Последний раз редактировалось kineziz; 24.06.2013 в 00:21.
kineziz вне форума Ответить с цитированием
Старый 24.06.2013, 00:12   #2
Ezhik Kihze
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 639
По умолчанию

Неправильно указан путь. Слеши, как и некоторые другие спец. символы, в С++ надо экранировать.
ICQ: 677936656 Gmail: ekEmbed@gmail.com
Ezhik Kihze вне форума Ответить с цитированием
Старый 24.06.2013, 00:21   #3
kineziz
Форумчанин
 
Регистрация: 22.12.2011
Сообщений: 378
По умолчанию

Код:
"C:\\1.txt"
Слеш экранирован. Да вы наверно не прочли, что std::ifstream работает на ура.
Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования.
kineziz вне форума Ответить с цитированием
Старый 24.06.2013, 00:43   #4
kineziz
Форумчанин
 
Регистрация: 22.12.2011
Сообщений: 378
По умолчанию

Решил данный вопрос проецированием файла в память.
Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования.
kineziz вне форума Ответить с цитированием
Старый 24.06.2013, 02:22   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

первое, применяем CreateFile.
второе, Overlapped вам не нужно.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[C] ReadFile/WriteFile hvz- Помощь студентам 17 16.01.2013 18:18
ошибка в программе - Create ReadFile handle Ted_45 Win Api 2 25.06.2012 20:17
ReadFile() Madmaxisss Visual C++ 4 02.04.2012 01:01
проблема с ReadFile Fog Win Api 4 01.02.2011 12:51
ReadFile nazavrik Общие вопросы C/C++ 14 22.11.2009 15:11