Создать глобальный Event fpc Linux

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Создать глобальный Event fpc Linux

Сообщение ElectroGuard » 05.07.2016 14:02:10

Добрый день. Есть такой код:

Код: Выделить всё
function MyCreateEvent(const AName: string): cardinal;
var
SA: TSecurityAttributes;
SD: TSecurityDescriptor;
begin
if not InitializeSecurityDescriptor(@SD, SECURITY_DESCRIPTOR_REVISION) then
  raise Exception.CreateFmt('Error InitializeSecurityDescriptor: %s', [SysErrorMessage(GetLastError)]);
SA.nLength := SizeOf(TSecurityAttributes);
SA.lpSecurityDescriptor := @SD;
SA.bInheritHandle := False;
if not SetSecurityDescriptorDacl(SA.lpSecurityDescriptor, True, nil, False) then
  raise Exception.CreateFmt('Error SetSecurityDescriptorDacl: %s', [SysErrorMessage(GetLastError)]);
Result := CreateEvent(@SA, True, True, PChar(AName));
if Result = 0 then
  raise Exception.CreateFmt('Error MyCreateEvent: %s', [SysErrorMessage(GetLastError)]);
end;


Под windows он нормально работает и в Делфи и в Лазаре. Код необходим для создания межюзерного, межпроцессного ивента, работающего между юзерами System и 'обычным'
Использую так:

Код: Выделить всё
WaitEvent := MyCreateEvent('Global\SyncEvent')


Как это перевести для fpc в линуксе?

Сам ивент в линуксе создаю так (не тестировал, правда, пока):

Код: Выделить всё
function CreateEvent(EventAttributes : Pointer; AManualReset,InitialState : Boolean;const Name : PChar): TEventHandle;
begin
Result := BasicEventCreate(EventAttributes, AManualReset, InitialState, Name);
end;


Как можно создать и передать правильные атрибуты?
ElectroGuard
новенький
 
Сообщения: 71
Зарегистрирован: 03.06.2016 12:10:22

Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: MailRu[bot] и гости: 51

Рейтинг@Mail.ru