2010-05-04 3 views
1

우리는 사용자 정의 PCI 카드에 액세스하기 위해 Windows 장치 드라이버를 작성했습니다. 드라이버는 CreateFile을 사용하여 카드에 대한 핸들을 얻습니다.드라이버가 PCI 카드에 대한 액세스를 거부했습니다

최근 설치가 원활하지 않아 카드가 작동하지 않는 것으로 나타났습니다. 우리는 카드 교체를 시도했습니다 (교체가 작동하지 않는 것으로 보입니다). 컴퓨터 공급 업체가 마더 보드를 교체했으며 두 카드 모두 여전히 작동하지 않았습니다. 우리는 카드를 다른 컴퓨터에 넣었고 둘 다 잘 작동했습니다.

이제 우리 사무실에서 컴퓨터를 검사 받으러 왔습니다. Windows 장치 관리자는 다른 장치에서 우리 카드를 평소와 같이 나열하고 정상적으로 작동한다고 말합니다. 그러나 드라이버 초기화는 카드에 연결을 시도 할 때 실패합니다.

일부 추가 디버깅을 사용하여 드라이버의 테스트 버전을 만들었으며 CreateFile이 실패한 것으로 확인되었습니다. 실패 할 때 INVALID_HANDLE_VALUE를 반환합니다. GetLastError는 Access is Denied 오류를 나타냅니다.

시스템에 로컬 관리자로 로그인 했으므로 장치에 대한 액세스를 거부 할 수있는 항목은 무엇입니까?

답변

1

"확인한"Windows 커널 빌드를 시도해보십시오. 이것은 디버그 채널을 통해 사용할 수있는 진단 정보가 훨씬 더 많은 디버그 빌드입니다. 마지막으로 한 번 사용했는데 MSDN에서 빌드를 사용할 수 있었지만 내 정보가 유효 기간이 지났을 수 있습니다.

1

이것은 장치 드라이버처럼 들리지 않지만 CreateFile()은 일반 Win32 응용 프로그램에서만 사용할 수 있습니다. 그것도 오류와 일치, 장치 드라이버는 Win32 애플 리케이션과 같은 보안 제한을받지 않습니다.

예, CreateFile()이있는 장치의 핸들을 여는 데 문제가있을 수 있습니다. 적어도 사용자 계정에는 SE_BACKUP_PRIVILEGE가 있어야한다고 생각합니다. Vista에는 변경된 사항이 있으며 CreateFile docs 섹션의 "물리 디스크 및 볼륨"절을 검토하십시오. 계정 권한을 편집하는 방법을 보여줄 수있는 보안 전문가를 만날 수있는 가장 좋은 장소는 serverfault.com입니다.

+0

좋아요. SE_BACKUP_PRIVILEGE가 무엇인지 검색하면 여러 정책 설정이 관련되어 있음을 나타냅니다. 언급 된 모든 것에 대해, 우리는 허가를 가지고 있습니다. 또한 방금 serverfault에이 질문을 게시했습니다. 우리는 그들이 무엇을 생각해 내는지 볼 것입니다. – Corin

관련 문제