none
가상 화면 위치이동 문제(ChangeDisplaySettingsEx) RRS feed

  • 질문

  • 가상 디스플레이 드라이버를 개발하여 Windows7에 XPDM모델의 드라이버를 로드시켰습니다. 

    그런데 inf파일로 설치를 하면 gdi가 display driver의 entry point를 호출해야지 가상 화면이 생성되는데 entry point를 호출하지를 않습니다.

    임시 방편으로 기존 모니터의 해상도나 위치를 변경하니 display driver의 entry point가 호출이 되었습니다. 

    하지만 이 것을 코드로 해야해서 모니터의 해상도나 위치의 변경을 ChangeDisplaySettingsEx()를 이용하여 테스트한 결과 정상 작동하는 것을 확인하였습니다. 

    그러나 제가 생성한 가상화면에 대해서는 ChangeDisplaySettingsEx()가 적용이 되지 않고 BadMode error를 return하였습니다. 

    "제어판\모든 제어판 항목\디스플레이\화면 해상도 " 여기에서 화면의 위치나 해상도를 변경할 때 호출되는 api들이 궁금합니다. ChnageDisplaySettingsEx 함수가 아닌 다른 무엇이 호출되는 것 같은데 그 것을 모르겠습니다.

    어떤 것을 시도해야 할 지 모르겠습니다. 도와주세요

    2013년 2월 15일 금요일 오후 9:23

답변

  • 안녕하세요,

    먼저, 현재 오류가 발생하고 있는 시스템과 개발하신 코드에 대해서 정확하게 정보가 없는 상태에서 위 내용만 가지고 답변을 드리기엔 조금 조심스럽니다.

    그러기에 몇 가지 배경부터 체크하자면,

    1) XPDM/XDDM 방식의 display driver의 경우 Vista 이후의 윈도우에서는 제한적으로 지원을 하고 있으며, 특히 Windows 8부터는 완전히 지원이 중단되었습니다.

    http://msdn.microsoft.com/en-us/library/windows/hardware/ff569512(v=vs.85).aspx

    "Note  XDDM and VGA drivers will not compile on Windows 8 and later versions."

    2) XDDM 또는 WDDM 중 하나의 방식으로만 동작해야 합니다.

    http://msdn.microsoft.com/en-us/library/windows/hardware/gg487363.aspx#EQB

    "All graphics adapters in a system must use the same display driver model. That is, all of them should either be running XPDM or WDDM. The driver models are mutually exclusive, and Windows Vista does not allow the simultaneous loading of both an XPDM driver and a WDDM driver."

    WDDM 드라이버를 disable 하고 해보시거나, screen resolution을 변경하는 건에 대해서는 다음 codeproject 글을 확인해 보시기 바랍니다.

    http://www.codeproject.com/Articles/15072/Programmatically-change-display-resolution

    감사합니다.

    2013년 2월 19일 화요일 오전 8:26

모든 응답

  • 안녕하세요,

    먼저, 현재 오류가 발생하고 있는 시스템과 개발하신 코드에 대해서 정확하게 정보가 없는 상태에서 위 내용만 가지고 답변을 드리기엔 조금 조심스럽니다.

    그러기에 몇 가지 배경부터 체크하자면,

    1) XPDM/XDDM 방식의 display driver의 경우 Vista 이후의 윈도우에서는 제한적으로 지원을 하고 있으며, 특히 Windows 8부터는 완전히 지원이 중단되었습니다.

    http://msdn.microsoft.com/en-us/library/windows/hardware/ff569512(v=vs.85).aspx

    "Note  XDDM and VGA drivers will not compile on Windows 8 and later versions."

    2) XDDM 또는 WDDM 중 하나의 방식으로만 동작해야 합니다.

    http://msdn.microsoft.com/en-us/library/windows/hardware/gg487363.aspx#EQB

    "All graphics adapters in a system must use the same display driver model. That is, all of them should either be running XPDM or WDDM. The driver models are mutually exclusive, and Windows Vista does not allow the simultaneous loading of both an XPDM driver and a WDDM driver."

    WDDM 드라이버를 disable 하고 해보시거나, screen resolution을 변경하는 건에 대해서는 다음 codeproject 글을 확인해 보시기 바랍니다.

    http://www.codeproject.com/Articles/15072/Programmatically-change-display-resolution

    감사합니다.

    2013년 2월 19일 화요일 오전 8:26
  • 답변 감사합니다. 제가 조사하였던 바로는 Windows7부터는 WDDM드라이버와 XPDM드라이버를 함께 사용할 수 있다고 알고있습니다. 제가 만든 디스플레이 드라이버가 Win32API에 반응을 하지 않는 이유가 제가 디스플레이 드라이버의 특정 부분을 구현을 하지 않아서 그런 것인지, 아니면 그 외의 이유에서인지 궁금함니다..
    2013년 3월 10일 일요일 오전 8:30