Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++ и WinAPI

Войти
Регистрация
Восстановить пароль
 
Watros
3 / 3 / 0
Регистрация: 12.09.2010
Сообщений: 40
#1

Asynchronous IO (WinAPI) - C++ WinAPI

26.05.2012, 19:21. Просмотров 764. Ответов 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
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Asynchronous IO (WinAPI) (C++ WinAPI):

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

Winapi и Windows 8.1 - C++ WinAPI
Волнует вопрос перехода с Windows 7 на Windows 8.1. Я пишу программу на WinApi и Direct2D. Она хорошо работает на Windows 7. Как она...

winApi listView - C++ WinAPI
Подскажите пожалуйста как получить данные выделенного элемента в ListView?

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

С++ WinAPI GDIPLUS - C++ WinAPI
Всем доброго времени суток. Друзья возможно то, что я ищу уже было на этом форуме, но если честно я не нашел! Поэтому прошу простить и...

задачи по WinAPI - C++ WinAPI
у меня наконец-то получилось поставить hook) и сразу возникли новые вопросы: 1. У моей программы есть процесс, как сделать так, чтобы его...

6
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
25536 / 17089 / 5417
Регистрация: 22.10.2011
Сообщений: 30,262
Записей в блоге: 7
26.05.2012, 20:58 #2
Во-первых, GENERIC_READ, для чтения-то. А во вторых, обнули ovr:
C++
1
ZeroMemory(&ovr, sizeof(OVERLAPPED));
1
Watros
3 / 3 / 0
Регистрация: 12.09.2010
Сообщений: 40
26.05.2012, 21:35  [ТС] #3
Не помогло, всё равно консоль пуста.
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
25536 / 17089 / 5417
Регистрация: 22.10.2011
Сообщений: 30,262
Записей в блоге: 7
26.05.2012, 21:54 #4
Очень странно:
1
Миниатюры
Asynchronous IO (WinAPI)  
Watros
3 / 3 / 0
Регистрация: 12.09.2010
Сообщений: 40
26.05.2012, 22:12  [ТС] #5
GetLastError возвращает ERROR_INVALID_HANDLE. О_о
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
25536 / 17089 / 5417
Регистрация: 22.10.2011
Сообщений: 30,262
Записей в блоге: 7
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 / 0
Регистрация: 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 c++ - C++ WinAPI
Как получить список установленных программ через реестр на c++ с помощью winapi. Нужен подробный пример.

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

Книги по WinApi - C++ WinAPI
Посоветуйте пару хороших книг по WinApi. Очень надо!!!!

Учу WinAPI - C++ WinAPI
int WINAPI WinMain ( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow ) { HWND hWnd; WNDCLASS...


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

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

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