Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++: WinAPI
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Watros
3 / 3 / 2
Регистрация: 12.09.2010
Сообщений: 40
1

Asynchronous IO (WinAPI)

26.05.2012, 19:21. Просмотров 812. Ответов 6
Метки нет (Все метки)

Программа должна считывать в консоль 100 байт с текстового файла, но почему то консоль пустая.

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
#include <Windows.h>
#include <stdio.h>
#include <stdlib.h>
 
 
static HANDLE hFile = CreateFileA("d:\\sample.txt", GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_FLAG_OVERLAPPED, NULL);
 
BOOL Read(LPVOID pData, DWORD dwDataSize)
{
   OVERLAPPED ovr;
   return ReadFile(hFile, pData, dwDataSize, NULL, &ovr);
}
void main()
{
   BYTE bData[100]; 
   if (hFile)
   {
     if (Read(bData, 100))
     {
       WaitForSingleObject(hFile, INFINITE);
       printf("%s", bData);
     }
     CloseHandle(hFile);
   }
}
Текстовый файл может быть любым
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2012, 19:21
Ответы с готовыми решениями:

C++ winapi
Прошу помощи. Только начинаю изучать создание окон, кнопок и уже столкнулся с...

Учу WinAPI
int WINAPI WinMain ( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR...

handle,winapi
Всем привет.Порекомендуйте литературу по Winapi,handle и т.п.

Таймер в winapi с++
Задание Л« 4.12 Написать игру. Задано игровое поле размером 20x25 знакомест...

FAQ WinAPI
Сел изучать WinAPI, тк буду делать на нем диплом. После прочтения книг возникли...

6
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
26502 / 17797 / 7042
Регистрация: 22.10.2011
Сообщений: 31,325
Записей в блоге: 6
26.05.2012, 20:58 2
Во-первых, GENERIC_READ, для чтения-то. А во вторых, обнули ovr:
C++
1
ZeroMemory(&ovr, sizeof(OVERLAPPED));
1
Watros
3 / 3 / 2
Регистрация: 12.09.2010
Сообщений: 40
26.05.2012, 21:35  [ТС] 3
Не помогло, всё равно консоль пуста.
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
26502 / 17797 / 7042
Регистрация: 22.10.2011
Сообщений: 31,325
Записей в блоге: 6
26.05.2012, 21:54 4
Очень странно:
1
Миниатюры
Asynchronous IO (WinAPI)  
Watros
3 / 3 / 2
Регистрация: 12.09.2010
Сообщений: 40
26.05.2012, 22:12  [ТС] 5
GetLastError возвращает ERROR_INVALID_HANDLE. О_о
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
26502 / 17797 / 7042
Регистрация: 22.10.2011
Сообщений: 31,325
Записей в блоге: 6
26.05.2012, 22:26 6
GetLastError, или CreateFile? Если вот так сделать

C++
1
2
3
4
5
6
7
8
if(hFile != ERROR_INVALID_HANDLE)
{
   // Чтение
}
else
{
   // Напечатать GetLastError()
}
, то что, прямо ERROR_INVALID_HANDLE (т.е, 6) будет напечатано, или все-таки, пятерка какая-нибудь (из-за недостаточных прав на файл, кстати, вполне возможно, он у тебя в корне диска, система не очень любит давать доступ к таким файлам )
1
Watros
3 / 3 / 2
Регистрация: 12.09.2010
Сообщений: 40
26.05.2012, 23:06  [ТС] 7
а нет, правда пятерка

printf("%X", GetLastError()) выдавал сначала B7 потом 5

Добавлено через 23 минуты
И нет доступа как раз из-за ZeroMemory

Добавлено через 9 минут
Всё, спасибо, разобрался, заменил

C++
1
return ReadFile(hFile, pData, dwDataSize, NULL, &ovr);
на

C++
1
2
ReadFile(hFile, pData, dwDataSize, NULL, &ovr);
return 1;
0
26.05.2012, 23:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2012, 23:06

Изучение WINAPI
Подскажите, как лучше всего и по каким книгам можно выучить WINAPI? Взял...

InputBox в WinApi
Как проще реализовать?

Шашки на C++ и WinAPI
Всем привет!!! Подскажите пожалуйста как лучше реализовать... Проблема в...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru