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

Вниз

WaitForSingleObject & Synchronize   Найти похожие ветки 

 
Cashmare   (2006-02-01 12:28) [0]

Здравствуйте, уважаемые мастера. Помогите разобраться глупому в следующем:

Выдержка из help"а:

DWORD WaitForSingleObject(

   HANDLE hHandle, // handle of object to wait for
   DWORD dwMilliseconds  // time-out interval in milliseconds  
  );

Windows NT: The handle must have SYNCHRONIZE access. For more information, see Access Masks and Access Rights.

Читал, ну ничего не понял! Куда этот SYNCHRONIZE вписать и с чем его едят?


 
Игорь Шевченко ©   (2006-02-01 12:30) [1]


> Куда этот SYNCHRONIZE вписать и с чем его едят?


Когда получаешь Handle методом OpenXXXX или CreateXXXX в качестве параметров доступа должен быть указан SYNCRONIZE


 
Cashmare   (2006-02-01 12:50) [2]

Использую CreateEvent. И куда там вписать SYNCHRONIZE, все равно не понимаю :(((


 
Игорь Шевченко ©   (2006-02-01 12:55) [3]


> Использую CreateEvent


The handle returned by CreateEvent has EVENT_ALL_ACCESS access to the new event object and can be used in any function that requires a handle to an event object.

в EVENT_ALL_ACCESS SYNCHRONIZE входит по умолчанию.


 
Cashmare   (2006-02-01 13:06) [4]

Спасибо. Тогда непонятно, почему WaitForSingleObject не срабатывает. Описал структуры:

type

 RX_TX_Buffer=packed record
   FrameFormat:word;
   StandartID:word;
   ExtendedID:dword;
   RTR:word;
   DLC:word;
   DataBytes:array [0..7] of word;
 end;

 TEventData=record
   RxTxBuffer:RX_TX_Buffer;
   IntrID:byte;
 end;

var   sa4Event:SECURITY_ATTRIBUTES;
      evd:TEventData;

далее:

 sa4Event.nLength:=sizeof(sa4Event);
 sa4Event.lpSecurityDescriptor:=nil;
 sa4Event.bInheritHandle:=True;
 hEvent:=CreateEvent(@sa4Event,True,False,nil);

Получил хэндл, далее:

 DefEvent(hEvent,True);

В параллельном потоке делаю:

   res3:=WaitForSingleObject(hEvent,10);
   if res3=WAIT_OBJECT_0 then begin
     ResetEvent(hEvent);
     GetEventData(@evd);
   end;

Не срабатывает! Хотя физически событие происходит.


 
Cashmare   (2006-02-01 13:13) [5]

Да, функции DefEvent и GetEventData - из сторонней библиотеки, заведомо рабочие, дело не в них.


 
Digitman ©   (2006-02-01 13:18) [6]


> Не срабатывает


Откуда знаешь ?
М.б. ты просто не дождался его ? Тайм-аут ожидания у тебя всего 10 мс указан ..


 
Cashmare   (2006-02-01 13:21) [7]

2 Digitman.

Ставил таймаут INFINITE - все равно не работает!


 
Cashmare   (2006-02-01 13:41) [8]

Извиняюсь, вопрос снят. Кривые руки :)))
Всем спасибо!


 
Digitman ©   (2006-02-01 13:44) [9]


> все равно не работает


Да что значит "не работает" ?!

Если будучи вызванной с INFINITE-таймаутом ф-ция блокирует вызвавший ее поток на неопределенное время, то это означает лишь одно - событие у тебя никогда не сигналит !

В противном случае ф-ция вернет управление с результатом
- WAIT_OBJECT_0 (событие просигналило),
- WAIT_TIMEOUT (при таймауте отличном от INFINITE),
- WAIT_ABANDONED (если в ходе ожидания объект-ивент перестал существовать),
- WAIT_FAILED (объект ожидания не существует или по причине, указанной в GetLastError)


 
Digitman ©   (2006-02-01 13:45) [10]

WAIT_ABANDONED , кстати, ты не получишь, поскольку в кач-ве объекта синхр-ции используешь ивент, а не мьютекс


 
Cashmare   (2006-02-01 14:00) [11]

2 Digitman

Уже все нормально, все работает. Была задача оживить покупной переходник PCI-CAN. Просто я его недоинициализировал, так сказать, вот ничего и не работало. :)))



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

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

Наверх




Память: 0.47 MB
Время: 0.035 c
4-1138111789
Still Swamp
2006-01-24 17:09
2006.04.16
Кто может поделиться заголовками к TAPI.DLL


2-1143618643
Erik1
2006-03-29 11:50
2006.04.16
Освобождение строк.


2-1143691956
vegarulez
2006-03-30 08:12
2006.04.16
Подскажите плиз.... как загружать рисунок на форму?


15-1143363049
Yegorchic
2006-03-26 12:50
2006.04.16
Backup по-русски


1-1142394627
atruhin
2006-03-15 06:50
2006.04.16
Можно ли увиличить ширину ScrollBar





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский