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

С++ для начинающих

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

Вызов функции из потока - C++

03.04.2011, 17:14. Просмотров 504. Ответов 0
Метки нет (Все метки)

Добрый день!
Есть задание по курсовой: Вызов из разных потоков функций чтения из файла. Функции находятся в DLL. Функции чтения:заголовок, данные.

Вот мой код

DLL:

#include "stdafx.h"
#include "n.h"
#include <windows.h>
#include <iostream.h>
#include <winbase.h>

BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}


DWORD WINAPI Read(LPVOID *lpParam)

{


HFILE hfile;

DWORD rNumber;

DWORD sizelow;

OFSTRUCT ofs;


hfile = OpenFile("C:\\1.txt",&ofs,OF_READ);

sizelow = GetFileSize(HANDLE(hfile),NULL);

char *buf= new char[sizelow];

ZeroMemory(&buf,sizelow);

BOOL r = ReadFile(HANDLE(hfile),buf,sizelow,&rNumber,NULL);

CloseHandle(HANDLE(hfile));

lpParam = reinterpret_cast<LPVOID*>(buf);

return r;

}

приложение:

#include "stdafx.h"
#include <windows.h>
#include <iostream.h>

typedef DWORD (WINAPI *Readfn)(LPVOID);

void main()

{

HINSTANCE hDLL;

BOOL free;

hDLL = LoadLibrary("n.dll");

Readfn pfn = (Readfn) GetProcAddress(hDLL,"Read");

char *value1 = NULL;

HANDLE thread1 = CreateThread(NULL,0,pfn,value1,0,NULL);

HANDLE *threads = new HANDLE[2];

threads[0]=&thread1;

cout<<value1;

delete[]value1;

free = FreeLibrary(hDLL);


}

Всё компилируется без ошибок, но постоянно вылетает unhandled exception.
Я совсем недавно начал изучать программирование, поэтому возникают проблемы. И я честно говоря не знаю как с этим бороться. Заранее благодарен за помощь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.04.2011, 17:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вызов функции из потока (C++):

Вызов функции внутри другой функции с передачей локальной переменной по ссылке - C++
Столкнулся с очень с интересной проблемой. Можно ли так делать? #include &lt;iostream&gt; using std::cout; void f(const int &amp;ref){...

Вызов родовой функции (нужно передать массив в качестве аргумента функции через указатель) - C++
#include &lt;iostream&gt; using namespace std; template &lt;class T1&gt; class mas { public: T1 n; T1 a; void input() ...

Вызов функции в возврате значения функции - C++
Есть функция: int function1(a) { ...... return function2(function1(b),function1(c)); } Как работает такая хитрая система?

Вызов функции в параметре другой функции - C++
программа: #include &lt;iostream&gt; using namespace std; struct E { E() {} }; void f(const E&amp; e)

return в функции потока - C++
Куда возвращается значение, указанное в return функции созданного потока?

вызов функции из под функции - C++
Добрый вечер. Такая ситуация: есть функция, назовем ее MainThreadFunc. Как можно сделать так, чтобы любая другая функция, которую я напишу,...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.04.2011, 17:14
Привет! Вот еще темы с ответами:

Передача потока по параметру функции - C++
Доброго времени суток. Есть пара вопросов :) Допустим у нас имеется функция открытия файла: int open_file() { char...

Остановка рабочей функции потока - C++
День добрый. Задумался над таким вот вопросом. Допустим, у меня есть две функции get(StopObj obj) и process(StopObj obj). Эти две функции...

Обращение потока к функции-члену класса - C++
Есть Класс MainWindow, функцией-членом которой выступает Reader(), при попытке обратиться поток к данной функции-члену из main'a через...

Запуск потока для функции с параметрами - C++
Доброго дня! Что хочется: распараллелить выполнение процедуры func. Давая новым потокам соответствующие параметры. На c# я...


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

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

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