2011-02-08 7 views
5

커널 모드에서 실행되는 WFP 콜 아웃 드라이버를 만들었습니다. 이제이 드라이버와 사용자 모드에서 실행되는 GUI 응용 프로그램 간의 통신 방법을 알아 내려고 노력 중입니다. 어떤 아이디어?커널 모드와 사용자 모드 응용 프로그램 간의 통신

  1. 설명 선 드라이버가 포트 4444에 incomming 연결을
  2. 드라이버가 사용자 -에게 메시지를 보내 (이 내 질문의 일부가 아닌) 감지 : 내가 원하는 정확히 무엇을

    이 같은 것입니다 모드 앱.

  3. 앱이 사용자에게 알림을 표시하고 연결을 수락하거나 차단해야하는지 여부를 묻습니다.
  4. 사용자 모드 앱은 사용자의 응답을 콜 아웃 드라이버로 되돌려 보냅니다.

고마워요!

답변

4

나는 LordDoskias에 동의합니다. 장치 개체를 만들어 Win32 영역에서 사용할 수 있도록해야합니다. 그런 다음 CreateFile, ReadFile, WriteFile 및 이미 언급 한 DeviceIoControl을 사용하여 요청을 보낼 수 있습니다.

드라이버에서 응용 프로그램으로 알림을 받으려면 inverted call model을 사용할 수 있습니다. 위에서 언급 한 메커니즘 중 하나를 통해 일부 IRP를 보내고 비동기 방식으로 (또는 별도의 스레드에서) 수행합니다. 그런 다음 드라이버는 사용자 모드 구성 요소에 무언가를 알리고 완료된 IRP를 반환 할 때까지 매달려 있습니다. 다른 방법은 요점은

는, 운전자가 사용자 모드로 몇 가지 메시지를를 보낼 수있는 직접적인 방법이 없다

... 몇 가지 이벤트를 설정하고 드라이버가 큐의 어떤 종류의 유지에 상관없이 UM 요청이 신청.

+1

[Inverted Call Model] (http://www.osronline.com/article.cfm?id=94)에 대한 훌륭한 기사를 읽었습니다. 어쩌면 도움이 될지도 모른다. – QuangNHb

2

확인이 API 호출 - 당신은 어떻게 할 것인지 기본적으로 DeviceIoControl

그런 다음 GUI 응용 프로그램을 열고 할 수있는 버퍼가 (다른 명령과 데이터를 보낼 수있을 것입니다, 개체 관리자에서 드라이버를 등록입니다 그런 다음 사용자 지정 IOCTL 코드를 보내야합니다 (WDK 설명서를 확인하십시오).

관련 문제