информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Где водятся OGRыАтака на Internet
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
 Зловреды выбирают Lisp и Delphi 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
[Win32] Ожидание завершения функции из DLL (WinAPI) 05.09.01 11:49  Число просмотров: 895
Автор: доброжелатель :) Статус: Незарегистрированный пользователь
<"чистая" ссылка>
чаще всего такие эффекты говорят о твоём глюке
попробуй заменить MessageBox() на Sleep()
если твоё предположение верно (не успевают считаться данные) то исключение не должно появиться
хотя судя по msdn InternetReadFile() не должна работать асинхронно
запуская MessageBox() ты создаёшь цикл сообщений, т.е. огромное количество рекурсивных вызовов
если у тебя GUI приложение, то из этого цикла сообщений будут вызываться и процедуры других окон
<programming>
[Win32] Ожидание завершения функции из DLL (WinAPI) 05.09.01 03:20  
Автор: formatc Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Предисловие: Есть DLL в которой реализована функция GET для считывания страницы
с сайта. В ней используются ф-ии InternetConnect, InternetOpen, HttpSendRequest,
HttpQueryInfo и InternetReadFile.(wininet).
Библиотека статически подключается к приложению.
Теперь суть проблемы:
При вызове функции GET из программы происходят странные вещи:
если после функции есть MessageBox, показывающий полученное, то все проходит
гладко. В противном же случае, получаем исключение при дальнейшей обработке
полученных данных, что дает повод предположить о незавершенной передаче данных.

Каким образом вызов MessageBox позволяет дожидаться полного приема данных?
Как реализовать вызов, минуя, вызов MessageBox?
Заранее спасибо.
[Win32] Ожидание завершения функции из DLL (WinAPI) 05.09.01 11:49  
Автор: доброжелатель :) Статус: Незарегистрированный пользователь
<"чистая" ссылка>
чаще всего такие эффекты говорят о твоём глюке
попробуй заменить MessageBox() на Sleep()
если твоё предположение верно (не успевают считаться данные) то исключение не должно появиться
хотя судя по msdn InternetReadFile() не должна работать асинхронно
запуская MessageBox() ты создаёшь цикл сообщений, т.е. огромное количество рекурсивных вызовов
если у тебя GUI приложение, то из этого цикла сообщений будут вызываться и процедуры других окон
[Win32] Ожидание завершения функции из DLL (WinAPI) 05.09.01 22:20  
Автор: formatc Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> чаще всего такие эффекты говорят о твоём глюке
> попробуй заменить MessageBox() на Sleep()
> если твоё предположение верно (не успевают считаться
> данные) то исключение не должно появиться
> хотя судя по msdn InternetReadFile() не должна работать
> асинхронно
> запуская MessageBox() ты создаёшь цикл сообщений, т.е.
> огромное количество рекурсивных вызовов
> если у тебя GUI приложение, то из этого цикла сообщений
> будут вызываться и процедуры других окон

Sleep делу не помог - при его выполнении - встает и скачивание информации. Но что самое интересное, если на Sleep ставим breakpoint то скачивается все отлично, но если запускаем на полное выполнение - Access Violation - т.е. опять работа с пустой памятью...

Теперь дополню картину - может глюк в самой идее...

В dll функцию передаются параметры: структура с url и прочей информацией для пересылки и две ссылки на указатели, в которых, внутри dll, вычисляется размер буфера и выделяется память (malloc|realloc).
Т.е. указатели которые мы передаем становятся функциональными только после выполнения функции.
[Win32] Ожидание завершения функции из DLL (WinAPI) 05.09.01 03:50  
Автор: + <Mikhail> Статус: Elderman
<"чистая" ссылка>
A kak na schet :

InternetReadFileEx(...,HSR_SYNC ,...)
[Win32] Ожидание завершения функции из DLL (WinAPI) 06.09.01 00:01  
Автор: formatc Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> A kak na schet :
>
> InternetReadFileEx(...,HSR_SYNC ,...)
А можно простенький примерчик по работе с этой функцией.
Я попробовал, но она у меня не работает...
[Win32] Ожидание завершения функции из DLL (WinAPI) 06.09.01 00:35  
Автор: + <Mikhail> Статус: Elderman
<"чистая" ссылка>
Pohozhje chto kogda ty zovesh foo:
InternetOpen(....) u tebia stoit flag INTERNET_FLAG_ASYNC , togda vse operacii na etu handle budut asyncronnye
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach