2013-09-26 4 views
0

장치 드라이버를 만들었습니다. 그러나 장치 개체를 삭제하는 순간 시스템이 다운되었습니다. 심볼릭 링크가 삭제되었고 글로벌에서 심볼릭 링크를 볼 수 없어 장치를 삭제하려고 시도한 후 충돌이 발생했다고 생각합니다. 지금이 장치를 어떻게 삭제합니까? 또한 Winobj에서 장치 아래에 나열된 Mydriver를 열려고하면 오류 팝업 (시스템에서 Device \ Mydriver 지정된 파일을 찾을 수 없음)이 표시됩니다.장치 언로드

나는 드라이버 서비스를 다시 시작하려고 시도했다. 나는 서비스를 시작할 때 손잡이를 되 찾는다. 그러나 지금은 시작하지 않을 것입니다. 의 오류 값을 지정합니다. 지정된 파일을 찾을 수 없습니다. 나는 잘하고 있었다, 나는이 충돌 이전에 운전자를 시작했다.

나는 운전자와 함께 배우고 배우는이 초보자입니다. 따라주십시오.

답변

1

나는 이것을 다음에서 가져왔다 : 프로그래밍 마이크로 소프트 윈도우즈 드라이버 제 2 판 woney 나는 이것이 도움이되기를 바란다.

플러그 앤 플레이 환경에서 장치를 제거하는 것이 본문에서 언급 한 초기 언로드 문제 의 궁극적 인 원인입니다. 더 이상 메모리에 없을 수도있는 드라이버에 IRP를 보내지 말고 PnP 관리자가 해당 드라이버로 보낸 IRP를 처리중인 드라이버를 언로드하지 못하도록해야합니다. 책임을 이행하는 방법 중 하나가 텍스트에 나와 있습니다. IoCallDriver 호출과 관련하여 IoGetDeviceObjectPointer가 반환 한 파일 개체 에 대한 추가 참조를 가져옵니다. 대부분의 드라이버에서 비동기 IRP를 보낼 때만 추가 참조가 필요할 것입니다. 이 경우 일반적으로 코드 파일을 참조하는 코드가 드라이버의 다른 부분에있을 가능성이 높습니다.이 부분은 IoCallDriver에 대한 호출과 비동기 적으로 실행됩니다. 예를 들어 완료 루틴에서 비동기 IRP에 대해 설치해야합니다 . 동기식 IRP를 보내는 경우 IRP가 완료 될 때까지 파일을 참조하지 않도록 드라이버를 코딩 할 가능성이 훨씬 큽니다.

0

대화 형 부팅 옵션을 사용하고 문제가있는 드라이버를로드하지 마십시오. 그런 다음 진단 도구를 드라이버에 추가하거나 다른 디버깅 기술을 사용하여 근본적인 문제를 파악하여 실험 해 볼 수 있습니다.

+0

자세히 설명해주세요. 실제로 드라이버를로드하지 않고 디버깅한다는 것은 무엇을 의미합니까? 내가 말했듯이 나는 단지 출발점이다. –