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