Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.30;
Скачать: CL | DM;

Вниз

WSAAccept и условная функция lpfnCondition : LPCONDITIONPROC   Найти похожие ветки 

 
Spirit111   (2006-01-15 01:09) [0]

Доброй ночи!

Бьюсь над такой проблемой:

Есть Thread, в котором слушаю порт. Для принятия нового подключения использую WSAAccept.

 TListeningThread = class (TThread)
 private
   FServerSocket: TSocket;
   ...
 protected
   procedure Execute; override;
 public
   constructor Create(AOwner: TComponent; ASocket: TSocket);
   destructor Destroy; override;
 end;

 TOnSearchInBlackList = procedure (ip: cardinal; var InBlackList: boolean) of object;

 TMyTCPServer = class(TComponent)
 private
   FServerSocket: TSocket;
   FOnSearchInBlackList: TOnSearchInBlackList;
   ...
 published
   property OnSearchInBlackList: TOnSearchInBlackList read FOnSearchInBlackList write FOnSearchInBlackList;
   ...
 end;

function BeforeConnectionAccepted(lpCallerId: LPWSABUF; lpCallerData : LPWSABUF; lpSQOS,lpGQOS : LPQOS; lpCalleeId,lpCalleeData : LPWSABUF;
     g : GROUP; dwCallbackData : DWORD ) : Integer; stdcall;

TMyTCPServer является компонентом, в котором есть событие OnSearchInBlackList. Пользователь сам описывает это событие, результатом будет возвращение переменной InBlackList: boolean.
Функция WSAAccept вызывается из TListeningThread.Execute.

А теперь о проблеме:  Никак не могу из функции BeforeConnectionAccepted вызвать OnSearchInBlackList(...).

Точнее никак не могу через dwCallbackData передать указатели на эту функцию или объект TMyTCPServer, чтобы ее вызвать.

Буду очень благодарен за помощь!

P.S. Если что-то из моего объяснения неясно, задавайте вопросы - уточню проблему.


 
Rouse_ ©   (2006-01-15 19:14) [1]

Недостаточно кода... покажи код где описаны данные функции и как они примерно используються...


 
Digitman ©   (2006-01-16 09:10) [2]

function BeforeConnectionAccepted( ..) : Integer;
begin
 ..
   with TMyTCPServer(Pointer(dwCallbackData)) do
     if Assigned(OnSearchInBlackList) then
       OnSearchInBlackList(...)
 ..
end;



Страницы: 1 вся ветка

Текущий архив: 2006.04.30;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.074 c
2-1145128479
Системщик
2006-04-15 23:14
2006.04.30
SOS


2-1145038924
R2D2
2006-04-14 22:22
2006.04.30
Алгоритм Диффи-Хелмана


9-1129041625
Кефир87
2005-10-11 18:40
2006.04.30
Организация текстурирования уровней


2-1144930611
Der Nechk@ssoff
2006-04-13 16:16
2006.04.30
Типизация файла


2-1144680738
ctudent
2006-04-10 18:52
2006.04.30
Ошибка FFFFFFFFFF