다음을 통해 공유


EngCreateWnd 함수(winddi.h)

EngCreateWnd 함수는 hwnd에서 참조하는 창에 대한 WNDOBJ 구조를 만듭니다.

구문

ENGAPI WNDOBJ * EngCreateWnd(
  SURFOBJ          *pso,
  HWND             hwnd,
  WNDOBJCHANGEPROC pfn,
  FLONG            fl,
  int              iPixelFormat
);

매개 변수

pso

디바이스 표면을 식별하는 SURFOBJ 구조체에 대한 포인터입니다.

hwnd

Win32 CreateWindow 또는 동등한 함수에 대한 애플리케이션의 호출로 만든 창에 대한 핸들입니다.

pfn

fl

GDI가 추적하고 드라이버에 보고해야 하는 변경의 유형을 지정하는 비트 마스크입니다. 이 값은 드라이버에서 수행한 모든 WNDOBJ 요청을 통해 일관되어야 합니다. 이 매개 변수는 다음 비트 필드 값 중 하나 이상이 될 수 있습니다.

플래그 의미
WO_DRAW_NOTIFY GDI는 드라이버에 WOC_DRAWN 알림을 제공해야 합니다.
WO_RGN_CLIENT GDI는 창 개체의 클라이언트 영역 변경 내용을 추적하고 창의 표시되는 클라이언트 영역이 변경되면 드라이버에 알려야 합니다. 콜백 함수에 열거된 지역은 창의 표시되는 새 클라이언트 영역입니다.
WO_RGN_CLIENT_DELTA GDI는 창 개체의 델타 클라이언트 영역의 변경 내용을 추적하고 창의 표시되는 영역이 변경되면 드라이버에 알려야 합니다. 콜백 함수에 열거된 지역은 새 지역에 있지만 이전 지역에는 없는 없음 델타 영역입니다. 델타 지역은 콜백 중에만 유효합니다.
WO_RGN_DESKTOP_COORD GDI는 시스템이 여러 모니터를 실행할 때 데스크톱 좌표를 사용하여 WNDOBJ 구조를 만듭니다.

GDI는 이 플래그를 무시하고 시스템이 단일 모니터를 실행할 때 디바이스 좌표를 사용하여 WNDOBJ 구조를 만듭니다.

WO_RGN_SURFACE GDI는 창 개체의 표면 영역 변경 내용을 추적하고 표면 영역이 변경되면 드라이버에 알려야 합니다. 표면 영역은 드라이버가 추적하는 창의 표시되는 모든 클라이언트 영역을 제외한 디스플레이 노출 영역입니다.
WO_RGN_SURFACE_DELTA GDI는 창 개체의 델타 표면 영역의 변경 내용을 추적하고 표면 영역이 변경되면 드라이버에 알려야 합니다. 콜백 함수에 열거된 영역은 새 표면 영역에 있지만 이전 표면 영역에는 없는 흠이 없는 델타 영역입니다. 델타 표면 영역은 콜백 중에만 유효합니다.
WO_RGN_UPDATE_ALL GDI는 해당 창의 표시되는 영역이 변경되면 추적되는 모든 창에 대해 드라이버에 알려야 합니다. 이 플래그는 WO_RGN_CLIENT 플래그와 함께 사용해야 합니다.
WO_RGN_WINDOW GDI는 창 개체의 전체 영역(창의 클라이언트 영역 포함)의 변경 내용을 추적하고 창의 영역이 변경되면 드라이버에 알려야 합니다.
WO_SPRITE_NOTIFY GDI는 창의 표시되는 영역이 겹치거나 스프라이트에 의해 더 이상 겹치지 않을 때 추적하는 모든 창에 대해 드라이버에 알려야 합니다.

iPixelFormat

창 개체와 연결된 픽셀 형식을 지정합니다. 창 개체의 픽셀 형식이 수정되었습니다. 연결된 픽셀 형식이 없는 경우 이 매개 변수는 0일 수 있습니다.

반환 값

반환 값은 함수가 성공한 경우 WNDOBJ 구조체에 대한 포인터입니다. 그렇지 않으면 드라이버에서 동일한 창을 추적하는 경우 반환 값이 -1이고, 드라이버가 동일한 창을 추적하지 않는 경우 0입니다.

설명

창 개체를 만들려면 창 리소스 잠금이 포함되므로 DrvEscape에서 WNDOBJ_SETUP 이스케이프의 컨텍스트에서만 EngCreateWnd를 호출해야 합니다.

EngCreateWnd는 각 드라이버가 pfn으로 식별된 고유한 WNDOBJCHANGEPROC 함수 포인터로 식별되는 여러 드라이버의 창 추적을 지원합니다. 예를 들어 OpenGL 드라이버가 OpenGL 창에 대한 변경 내용을 추적하는 동안 라이브 비디오 드라이버는 라이브 비디오 창의 변경 내용을 추적할 수 있습니다.

DrvEscape에서 새 WNDOBJ를 만든 경우 GDI는 최신 창 상태로 WNDOBJCHANGEPROC를 호출합니다. GDI는 WNDOBJ 구조에 의해 설명된 창이 제거되면 WNDOBJCHANGEPROC 에도 알립니다.

WNDOBJCHANGEPROC에 전달된 WOC_SPRITE_OVERLAP 및 WOC_SPRITE_NO_OVERLAP 알림을 통해 스프라이트가 창 위에 있을 때 드라이버에 동기적으로 알림을 받고 적절한 조치를 취할 수 있습니다. 드라이버는 모든 스프라이트가 EngControlSprites의 ECS_TEARDOWN 플래그에 의해 분해된 경우에도 이러한 알림을 받습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 이상 버전의 Windows 운영 체제에서 사용할 수 있습니다.
대상 플랫폼 유니버설
헤더 winddi.h(Winddi.h 포함)
라이브러리 Win32k.lib
DLL Win32k.sys

추가 정보

DrvEscape

WNDOBJ

WNDOBJCHANGEPROC