Это возможно? Ну допустим есть символьное устройство, которое читает строку у пользователя, что-то обрабатывает и возвращает строку. Допустим также, что есть условие, согласно которому, на вопрос Q1 устройство должно ответить A1 а на вопрос Q2 -- A2. Я написал такой драйвер. Как сделать так, чтобы 2 разных источника получали разные ответы? Как распознать отправителя? Блин... не знаю как по-русски объяснить. Вот я послал в устройство Q1 и ушел курить не дождавшись ответа. А пользователь иванов прочитал строку из устройства и получил мою A1. Как научить драйвер распознавать читателей и писателей? Что-то типа сессии. Чтоб ответ на мой вопрос пришел мне, а злому иванову пришло сообщение об ошибке?
Я в кернел-моде недавно... Юзал пайпы в обычно режиме... А ядро имеет к ним доступ? Если да, то проблема решена
Вполне имеет. IoCreateFile используется и в EA передаются параметры пайпа. Правда там есть гемор с привилегиями определенный, но практически решаемый.
LPC, либо ивент и секция разделяемой памяти, много раз обсуждалось, да и чем собственно IOCTL не подходит?
В ф-ции device_open я определил: Код (Text): if ( strncmp (Message, "USER",4)!=-1){ char *username="df"; int i=0; for (i=0; i<strlen (Message)-1; i++) { if (i==5){ username=&Message[i]; } } sprintf (Message,"+OK password required for %s",username); } Message берется из _IOR(MAJOR_NUMBER, 1, char *) в ф-ции int dev_do_ioctl, когда обрабатываем реакцию на запись в устройство Дело все в том что драверу плевать кто послал Message и тем более кто будет читать. Кинь ему USER osrootd и сразу USER lamer, драйвер ответит +OK password required for lamer а osrootd будет проигнорирован. blast правильно говорит: пробывать Shared Memory. Там можно - я просто чето забыл про нее Написать "клиента" и вперед!