Водителю отказано в доступе к PCI-карте - PullRequest
1 голос
/ 05 мая 2010

Мы написали драйвер устройства Windows для доступа к нашей пользовательской карте PCI. Драйвер использует CreateFile, чтобы получить дескриптор карты.

У нас недавно были проблемы с одной установкой, когда карта перестала работать. Мы попытались заменить карту (замена оказалась тоже не работает). Поставщик компьютера заменил материнскую плату, и обе карты все еще не работали. Мы поместили карты в другой компьютер, и оба работали нормально.

Теперь у нас в офисе есть компьютер для проверки. Диспетчер устройств Windows перечисляет нашу карту в «Другие устройства» как обычно и говорит, что она работает нормально. Однако при попытке подключения к карте инициализация нашего драйвера завершается неудачно.

Мы создали тестовую версию нашего драйвера с дополнительной отладкой и определили, что CreateFile не работает. Он возвращает INVALID_HANDLE_VALUE, как это должно быть в случае сбоя. GetLastError указывает на ошибку: доступ запрещен.

Поскольку мы вошли в систему как локальный администратор, что может запретить доступ к устройству?

Ответы [ 2 ]

1 голос
/ 05 мая 2010

Это не похоже на драйвер устройства, CreateFile () доступен только в обычном приложении Win32. Это также соответствует ошибке, драйверы устройств не подвергаются ограничениям безопасности, как приложения Win32.

Да, у вас могут быть проблемы с открытием дескрипторов устройств с CreateFile (). Я думаю, что учетная запись пользователя должна по крайней мере иметь SE_BACKUP_PRIVILEGE. В Vista также произошли изменения, см. Правила CreateFile , раздел «Физические диски и тома». Лучшее место, где можно найти гуру безопасности, которые могут показать вам, как редактировать привилегии учетной записи, - serverfault.com

1 голос
/ 05 мая 2010

Возможно, вы захотите попробовать "проверенную" сборку ядра Windows. Это отладочная сборка, которая имеет гораздо больше диагностической информации, доступной через канал отладки. В прошлый раз, когда я использовал один (несколько лет назад), сборка была доступна на MSDN, но моя информация, возможно, устарела.

...