Мы записали драйвер устройства Windows для доступа к нашей пользовательской плате PCI. Драйвер использует CreateFile для получения дескриптора к карте.
Мы недавно испытали затруднения в одной установке, была карта, появившаяся, чтобы прекратить работать. Мы пытались заменить карту (замена появилась не, работают любой). Продавец компьютеров заменил материнскую плату, и обеим картам все еще не удалось работать. Мы помещаем карты в другой компьютер, и оба хорошо работали.
У нас теперь есть компьютер в нашем офисе для исследования. Windows Device Manager перечисляет нашу карту в Других Устройствах, как обычно, и говорит, что это хорошо работает. Однако наша инициализация драйвера перестала работать, когда она пытается соединиться с картой.
Мы создали тестовую версию нашего драйвера с некоторой дополнительной отладкой и решили, что CreateFile перестал работать. Это возвращает INVALID_HANDLE_VALUE, как это, как предполагается, при отказе. GetLastError указывает, что ошибкой является Доступ, Отклонен.
Так как в нас входят система как локальный администратор, что может запретить доступа к устройству?
Это не похоже на драйвер устройства, CreateFile() доступен только в обычном приложении Win32. Это также соответствует ошибке, драйверы устройств не подвергаются ограничениям безопасности, как приложения Win32.
Да, у вас могут возникнуть проблемы с открытием дескрипторов устройств с помощью CreateFile(). Я думаю, что учетная запись пользователя, по крайней мере, должна иметь SE_BACKUP_PRIVILEGE. В Vista также произошли изменения, ознакомьтесь с правилами в CreateFile docs, раздел "Физические диски и тома". Лучшее место, где можно найти гуру безопасности, которые могут показать вам, как редактировать привилегии учетной записи, это serverfault.com
Вы можете попробовать использовать "Проверенную" сборку ядра Windows. Это отладочная сборка, которая имеет гораздо больше диагностической информации, доступной через канал отладки. В последний раз, когда я использовал такую сборку (несколько лет назад), она была доступна на MSDN, но моя информация, возможно, устарела.