Я написал драйвер режима ядра для доступа к памяти на плате PCI Express, и я могу общаться с драйвером IO Control с помощью функций CreateFile и DeviceIOControl. Все выглядит хорошо, за исключением того факта, что пользовательское приложение должно запускаться с правами администратора, поскольку требуется доступ на чтение/запись к устройству PCI. Это вызов в моем приложении, потому что я не могу ожидать, что мои пользователи получат права администратора при запуске приложения. Чтобы решить эту проблему, я привел следующие идеи:Доступ к драйверу IOControl из пользовательского приложения без администратора priviledge
1) Создание именованного канала в драйвере и доступ к нему в пользовательском приложении, но я не уверен, что драйвер имеет доступ к API окон для создания и доступа именованный канал.
2) Создание службы Windows, которая запускается с правами администратора и становится интерфейсом между пользовательским приложением и драйвером. Хотя это практично, это решение кажется излишним.
Я ценю любые комментарии по вышеуказанным решениям, а также общую практику общения с водителем.
Благодаря
Использование DeviceIOControl(), безусловно, может быть кикер-убийцей, поэтому обычно требуются права доступа администратора. Установщик драйверов определяет значение для ключа безопасности. Посмотрите на c: \ windows \ inf \ wvid.inf для примера, раздел [Vid_Device.NT.AddReg]. Выполнение его программно после установки [обсуждается здесь] (https://msdn.microsoft.com/en-us/library/windows/hardware/ff563755 (v = vs.85) .aspx). –