2012-06-22 4 views
1

USB 파이프 아래로 데이터를 보내기 위해 수직 빈 인터럽트와 동기화가 필요한 드라이버를 작성 중입니다.커널 모드에서 수직 공백을 기다리고 있습니까?

사용자 모드에는 IDXGIOutput::WaitForVBlank과 같은 오래된 X 기능이 있으며 그 중 오래된 기능은 거의 없습니다. 커널에서 사용할 수 없습니다. Windows 8 SDK에 다른 인터페이스 (커널 헤더 (SDK의/km/폴더)가 있음) 인 D3DKMTWaitForVerticalBlankEvent도 발견되었지만 사용자 모드 라이브러리 및 링크를 사용하여 드라이버를 손상시키는 gdi32.lib이 필요합니다.

폴링없이 세로 공백 발생에 대한 알림을받을 수있는 방법이 있습니까?

답변

1

드라이버의 사용자 모드 부분을 사용할 수 있습니까? VBI를 기다리는 사용자 모드에서 도우미 프로세스를 가질 수 있으며 프로세스가 KM 드라이버를 어떤 식 으로든 트리거하게 할 수 있습니다.

+0

; IOCTLS를 드라이버에 보내는 오버 헤드를 제거하고 싶습니다. 내가 얻을 수있는 모든 마이크로 초가 필요해. – kurczak

1

명명 된 이벤트를 사용할 수 있습니다.

  • 드라이버에서 실제 작업을 수행하기 전에 명명 된 이벤트와 커널 스레드를 만들어 이벤트를 대기하십시오.
  • 사용자 모드 도우미 응용 프로그램/서비스에서 명명 된 이벤트를 열고 IDXGIOutput :: WaitForVBlank를 호출하는 스레드를 만들고 즉시 명명 된 이벤트를 설정합니다. 나는 당신이 밖으로 오래 전에이 일을하고 새출발 상상하는 것 물론

...

나는 지금 그것을 할 방법