Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2003.07.31;
Скачать: [xml.tar.bz2];

Вниз

запись в Tevent, созданном в другом процессе.   Найти похожие ветки 

 
HolyGlory   (2003-07-15 18:36) [0]

Создаю Tevent в одном процессе, открываю его в другом. SetEvent работает в первом, но не работает во втором. Ясень пень проблема в PSecurityAttributes . Каким образом инициализировать эту структуру так, чтобы была разрешена запись в Event из другого процесса?


 
HolyGlory   (2003-07-15 18:53) [1]

В MSDN сказано, что Event должен иметь EVENT_MODIFY_STATE установленным для возможности записи в него. Как этот EVENT_MODIFY_STATE установить?


 
panov   (2003-07-15 19:49) [2]

Ты бы привел в обоих процессах код с использованием Events


 
HolyGlory   (2003-07-16 14:51) [3]

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

Создание SecurityAttrbutes (без него не работало):
new(fDefSA);
fDefSA.nLength:=SizeOf(TSecurityAttributes);
fDefSA.bInheritHandle:=true;
new(sd);
fDefSA.lpSecurityDescriptor:=sd;
InitializeSecurityDescriptor(fDefSA.lpSecurityDescriptor,SECURITY_DESCRIPTOR_REVISION);
SetSecurityDescriptorDacl(fDefSA.lpSecurityDescriptor,false,nil,true);
SetSecurityDescriptorDacl(fDefSA.lpSecurityDescriptor,false,nil,true);

Создание евента:
fPReady:=TEvent.Create(fDefSA,false,false,fSyncPref+".PReady");

Ожидание:
if (fPReady.WaitFor(fPollingTime)=wrSignaled)then...
//Здесь всегда был WAIT_TIMEOUT

А вот другой процесс(VC++):
открытие евента:
strcpy(token, pref);
strcat(token, ".PReady");
SDArr[handle]->evPReady = OpenEvent(EVENT_ALL_ACCESS,1,token);
событие:
SetEvent(SDArr[handle]->evPReady);






 
HolyGlory   (2003-07-16 14:57) [4]


Уже ошибку заметил:
SetSecurityDescriptorDacl(fDefSA.lpSecurityDescriptor,false,nil,true);
SetSecurityDescriptorSacl(fDefSA.lpSecurityDescriptor,false,nil,true);




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

Форум: "Потрепаться";
Текущий архив: 2003.07.31;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.01 c
14-100891
HolyGlory
2003-07-15 18:36
2003.07.31
запись в Tevent, созданном в другом процессе.


1-100721
Дома
2003-07-18 16:54
2003.07.31
GetCaretPos из user32.dll


14-100960
Жук
2003-07-15 14:32
2003.07.31
Работа с com-портами


14-100893
Карелин Артем
2003-07-14 10:23
2003.07.31
Как избавиться от щелчков в звуковухе?


14-100931
Ткаченко Сергей
2003-07-15 09:33
2003.07.31
Подсчет суммы поля из SQL запроса.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский