|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
10.09.2014, 16:47 | #1 |
Пользователь
Регистрация: 14.10.2011
Сообщений: 29
|
Вопрос по WaitForSingleObject от Event
Всем добрый день!
Такой вот у меня вопрос. В одном процессе создается событие, и после выполнения определенных действий устанавливается в сигнализирующее состояние: Код:
Код:
<Windows.h> подключен. Подскажите, пожалуйста, в чем может быть дело? На WAIT_OBJECT_0 не ругается (если остальное закомментировать), но все равно работает не корректно (в любом случае выдает 0хFFFFFFFF). |
10.09.2014, 21:09 | #2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,330
|
Так покажите эти строки.
Судя по всему, там создаются локальные переменные. Оградите код в в каждом case фигурными скобками { } |
10.09.2014, 21:41 | #3 | |
Пользователь
Регистрация: 14.10.2011
Сообщений: 29
|
Цитата:
case "значение": //...; //...; break; Все равно ловил вышеуказанную ошибку. Поэтому пришёл к выводу что строки ни при чем и не стал их писать здесь. |
|
11.09.2014, 10:02 | #4 |
Форумчанин
Регистрация: 29.01.2013
Сообщений: 319
|
А из каких соображений выбран флаг EVENT_MODIFY_STATE?
|
11.09.2014, 10:58 | #5 |
Пользователь
Регистрация: 14.10.2011
Сообщений: 29
|
Предполагалось использовать ResetEvent(). А в Synchronization Object Security and Access Rights вычитал следующее:
EVENT_MODIFY_STATE (0x0002) - Modify state access, which is required for the SetEvent, ResetEvent and PulseEvent functions. |
11.09.2014, 11:45 | #6 |
Пользователь
Регистрация: 14.10.2011
Сообщений: 29
|
Действительно, изменение флага на EVENT_ALL_ACCESS, снимает все указанные мной ошибки.
EVENT_ALL_ACCESS - все возможные права доступа для event object. Используйте такое право, только если ваше приложение требует доступа за пределы, предоставляемые стандартными правами доступа и EVENT_MODIFY_STATE. Использование такого права доступа прямо увеличивает возможность того, что ваше приложение должно запускаться от имени администратора. EVENT_MODIFY_STATE - Изменяет состояние доступа, который необходим для функций SetEvent, ResetEvent и PulseEvent. Я полагал, что флаг EVENT_MODIFY_STATE вполне достаточен для второго процесса, чтобы тот мог изменять состояние Event с помощью функции ResetEvent()... Похоже, я полагал неправильно... Объясните, пожалуйста. |
12.09.2014, 22:09 | #7 |
Форумчанин
Регистрация: 29.01.2013
Сообщений: 319
|
Ну, я рассуждаю так: в исходном примере флаг EVENT_MODIFY_STATE явно не отвечает требуемому, ибо OpenEvent используется для получения хэндла именно для ожидания события с помощью WaitForSingleObject, а не для его изменения [читай, "управления"] с помощью Set/ResetEvent. Следовательно, я намекал на использование флага SYNCHRONIZE [он хоть и для NT-only, но где сейчас не NT?]. Думаю, его можно использовать вместо EVENT_ALL_ACCESS, если последний не очень по душе...
|
15.09.2014, 11:57 | #8 |
Пользователь
Регистрация: 14.10.2011
Сообщений: 29
|
Все ясно. Спасибо.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
TThread и WaitForSingleObject | xrob | Общие вопросы Delphi | 4 | 20.04.2014 14:13 |
Не срабатывает waitforsingleobject | peeper | Общие вопросы Delphi | 2 | 28.11.2013 16:10 |
Многопоточность showmodal и WaitForSingleObject | bulldog5293 | Общие вопросы Delphi | 24 | 24.01.2011 18:46 |
WaitForSingleObject | besserebrenik | Win Api | 3 | 15.02.2010 22:40 |
вопрос по функции WaitForSingleObject | shurik_7866 | Общие вопросы Delphi | 2 | 08.12.2008 10:53 |