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

Вниз

Сервис+mailslot   Найти похожие ветки 

 
Zapped   (2003-10-14 16:23) [0]

Здравствуйте!
Прелюдия.
Пишу сервис на основе TServiceApplication, он должен сам в определённое
время проигрывать какой-то список аудио-файлов, а также должен иметь
возможность управляться другой программой (в том числе и по локальной
сети), то есть получать команды (воспроизвести, остановиться, пауза, следующий файл и т.п.)
ну и возвращать состояние (проигрывает/стоит, номер файла etc).
Задача: как организовать обмен командами/данными?
Нашёл, что можно с помощью mailslot`ов. В ходе проверки mailslot`ов,
типа, "кто как работает", пришёл к выводу, что нужно по одному mailslot`у у каждого (у сервиса и
у программы управления): у сервиса - чтобы получать команды, у
программы управления - для получения её (команды) результатов. Создал
класс, в нём в зависиости от параметра создаётся либо mailslot, либо
подключние к mailslot`у (но это не так важно).
Важно, то что:
создаю mailslot так (как везде написано):
FMailslotHandle := CreateMailslot(PChar(FMailslotName), 0, MAILSLOT_WAIT_FOREVER, nil);
проблем нет,
"подключаюсь" к нему:
FMailslotHandle := CreateFile(PChar(FMailslotName), GENERIC_WRITE, FILE_SHARE_READ,
nil, OPEN_EXISTING, 0, 0);
Вот здесь проблема: если из сервиса производить "подключение" к
mailslot`у, созданному программой управления - всё нормально, а вот
если наоборот: "подключаться" к mailslot`у, созданному в сервисе, из
программы управление - апшипка! GetLastError даёт 5 = ERROR_ACCESS_DENIED.
а вот если
вместо GENERIC_WRITE поставить GENERIC_READ
FMailslotHandle := CreateFile(PChar(FMailslotName), GENERIC_READ, FILE_SHARE_READ,
nil, OPEN_EXISTING, 0, 0);
то всё нормально! НО! нам ведь такое не надо...
судя по всему различие в правах программ: сервис запускается с правами
System, программа же в общем случае с правами любого пользователя.
Как победить? Только чобы по уму.
--
Спасибо,Алексей


 
clickmaker ©   (2003-10-14 16:43) [1]

Указывай Security Attributes у мэилслота в сервисе, давай на него права нужным пользователям



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

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

Наверх




Память: 0.47 MB
Время: 0.022 c
14-62256
Knight
2003-11-25 14:58
2003.12.19
В чём разница между S1 и S2 в данном фрагменте?


3-61922
DBDev
2003-11-24 13:10
2003.12.19
как получить будущее значение ID после опреации Insert?


1-62079
Arximed
2003-12-08 20:31
2003.12.19
Формат бумаги


3-61941
hooky-mars
2003-11-26 18:41
2003.12.19
BDE


1-62085
Riptor
2003-12-08 11:49
2003.12.19
Тестирование с помощью пакета qtest