2011-03-18 3 views
0

NDIS 필터 드라이버를 개발하려고합니다. 그러나, 나는 그것을로드 할 수없는 것 같습니다. debugtestsigning 부팅 옵션이 활성화되어 있습니다. 내 드라이버는 테스트 서명되어 있으며 인증서는 roottrustedpublisher 상점에로드됩니다. 내가 testsigning을 활성화하기 전에, 내 드라이버가NDIS 필터 드라이버가 Windows 2008 R2에로드되지 않습니다.

이 드라이버 \의 SYSTEMROOT \ system32를 \ 드라이버를로드하지 않았나요로 ntbootlog.txt에 표시 할

는 \ mydriver.sys

내가 testsigning을 활성화 한 후, 운전자는 전혀 나타나지 않습니다. 그러나 인터페이스 proprties에서 제공됩니다. 내 드라이버가 현재 매우 최소한의 통과 NDIS 필터 드라이버인데도 필자의 필터를 비활성화 할 때까지 인터페이스가 손상됩니다. 필터를 비활성화하면 모든 것이 잘 작동합니다.

드라이버가 windbg 모듈 목록에 나열되어 있지 않지만 은 "언로드 된 모듈"목록에 나열된이며 드라이버가 어느 시점에로드되었음을 나타냅니다. 내 드라이버는 DriverEntryDriverUnload 및 일부 필수 NDIS 후크 중 일부 출력을 생성합니다. 이 출력 중 windbg의 !dbgprint에는 아무 것도 표시되지 않았으므로 드라이버의 DriverEntry은 한번도 호출되지 않았습니다.

나는이 문제를 디버깅하는 방법을 잃었습니다. 아무도 여기에 무슨 일이 벌어 질지에 대한 힌트를 줄 수 있습니까?

저는 Windows 2008 R2 DataCenter를 사용하고 있습니다. 빌드를 확인하십시오. 나는 현재 단일 기계 설정으로 제한되어 있습니다.

+0

예제 드라이버에서 시작하여 문제가 해결되었습니다. Driver Entry가 처음에 디버그 메시지를 작성하고 있는데, 분명히 그렇지 않은 경우 드라이버 입력이 호출되었다고 가정합니다. – Ondergetekende

답변

0

DriverEntry에서 추적 문자열을 인쇄하는 간단한 드라이버를 먼저로드하고 테스트 서명 한 다음로드하십시오. 추적을 보면 우리는 당신의 특정 운전자에게 잘못된 점을 이해하려고 노력할 것입니다. 그렇지 않은 경우 시스템에서 커널 추적을 사용할 수 없으며 문제점으로 인해 NDIS 드라이버가로드되지 않습니다. 물론 시스템 추적을 사용할 수 없기 때문에 볼 수 없습니다.

+0

dbgprint 버퍼에 표시되지 않습니다. – Ondergetekende

+1

Vista/Server2008에서는 기본적으로 DbgPrint() 출력이 비활성화되어 있습니다. 디버그 인쇄를 사용하려면 레지스트리에서 아래 설정을 따를 수 있습니다. 레지스트리를 열고 "HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ 세션 관리자 \ 디버그 인쇄 필터"경로로 이동하여 다음 값을 "DEFAULT": REG_DWORD : 0xFFFFFFFF 추가하고 다시 부팅하십시오. "디버그 인쇄 필터"키가 없으면 만들어야 할 수도 있습니다. – MindBlower

0

드라이버가 언로드 된 모듈 목록에 나타나면로드 된 것입니다.

DbgPrint을 사용하는 경우 MSDN 설명서, 특히 필터링 섹션을 읽어야합니다.

드라이버로드를 수신하려면 sxe ld:mydriver을 사용하면 드라이버 항목에 중단 점을 설정할 수 있습니다. 이것을 디버깅하는 또 다른 쉬운 방법은 DriverEntry에 하드 코드 된 중단 점을 넣는 것입니다. DbgBreakPoint()

관련 문제