Я создаю драйвер мини-фильтра. В этом я общаюсь с приложением пользовательского режима, чтобы получить некоторую часть пользователя формы данных. я общаюсь с пользовательским режимом, используя "порт связи". Я пытался общаться с приложением пользовательского режима, он работал нормально.
Одним из предложений, которое я получил от других, является использование службы Windows для извлечения данных, поскольку она всегда будет работать, и мы хотим, чтобы приложение режима пользователя запускалось всегда.
Мой вопрос:
1) Могу ли я создать "порт связи" в службе Windows?
2) Если я создаю службу Windows, как получить конкретную информацию о пользователе. я имею в виду, когда я отправляю запрос для обслуживания того, как служба узнает, какие данные сеанса пользователя нужно извлечь?
3) какой из них лучше, я имею в виду, что пользовательский режим или служба Windows - лучшее решение.
1) Могу ли я создать "порт связи" в службе Windows?
Да, вы можете создать его на службе.
2) Если я создаю службу Windows, как получить конкретную информацию о пользователе. я имею в виду, когда я отправляю запрос для обслуживания того, как служба узнает, какие данные сеанса пользователя нужно извлечь?
Служба работает под учетной записью системы, а не под любым зарегистрированным пользователем. Таким образом, чтобы показать всплывающее окно или диалог текущего пользователя, вы можете посмотреть WTSGetActiveConsoleSessionId()
или аналогичный api, чтобы получить консольный сеанс.
3) какой из них лучше, я имею в виду, что пользовательский режим или служба Windows - лучшее решение.
Зависит от вашего дизайна. Как вы упомянули, служба всегда работает, если ваш драйвер зависит от такого требования, а затем обратитесь к сервису. Но для взаимодействия с пользователем потребуется больше усилий.
Но если ваш драйвер может работать без какого-либо подключения к сервису/приложению, то переходите к приложению.