• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Гуру! Не открывается бд в потоке (не в потоке открывается)

  • Автор темы EuGenius
  • Дата начала
E

EuGenius

Создаю программно поток. Открываю в нем базу данных(DAO, MS Access) и в дебаге сообщение:
Код:
Unhandled exception at 0x1b760401 in Bellvisual.exe: 0xC0000005: Access violation reading location 0x0000000c.
Не в потоке, а в обычном методе класса все работает нормально.
Вот код:
Обьявление "потоковой функции"
Код:
...
public:	
friend UINT OurThread(LPVOID pParam);
...
Запуск потока
Код:
...
HWND hWnd = GetSafeHwnd();
AfxBeginThread(OurThread, hWnd, THREAD_PRIORITY_NORMAL);
...
Сама функция потока
Код:
UINT OurThread(LPVOID pParam)
{
CDaoWorkspace *ws = new CDaoWorkspace;
CDaoDatabase db(ws);
try
{
db.Open("dbase_bell.mdb");//вот здесь и выскакивает
...
В чем дело?
 
B

Barmutik

А инициализацию COM подсистемы Вы сделали в потоке? Её нужно делать для каждого потока отдельно...
 
E

EuGenius

Как можно узнать об окончании потока.
Можно ли убить поток в функции
UINT OurThread(LPVOID pParam)
{ ...
AfxEndThread(0);
}
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!