다음을 통해 공유


DrvDrawEscape 함수(winddi.h)

DrvDrawEscape 함수는 둘 이상의 함수 호출을 제공하는 진입점입니다. 특정 함수는 iEsc 매개 변수의 값에 따라 달라집니다.

구문

ULONG DrvDrawEscape(
  [in] SURFOBJ *pso,
  [in] ULONG   iEsc,
  [in] CLIPOBJ *pco,
  [in] RECTL   *prcl,
  [in] ULONG   cjIn,
  [in] PVOID   pvIn
);

매개 변수

[in] pso

호출이 전달되는 표면을 식별하는 SURFOBJ 구조체에 대한 포인터입니다.

[in] iEsc

수행할 작업을 지정합니다. 나머지 매개 변수의 의미는 이 매개 변수에 따라 달라집니다. 이 매개 변수는 다음 값일 수 있습니다.

의미
ESC_PASSTHROUGH 원시 디바이스 데이터를 디바이스 드라이버에 전달합니다. 원시 데이터의 바이트 수는 cjIn으로 표시됩니다. 데이터는 pvIn에서 가리킨다. 반환 값은 함수가 성공한 경우 작성된 바이트 수입니다. 그렇지 않으면 0이고 오류 코드가 기록됩니다.

[in] pco

호출자가 덮어쓸 수 있는 표면 영역을 찾기 위해 쿼리할 수 있는 CLIPOBJ 구조체에 대한 포인터입니다.

[in] prcl

표면의 창 사각형을 정의하는 RECTL 구조체에 대한 포인터입니다. 응용 프로그램은 표면에 창의 위치를 알 수 없습니다. GDI는 이 사각형을 제공하고, 호출 기간 동안 사각형이 안정적으로 유지되도록 하는 잠금을 유지합니다. 애플리케이션에서 받은 좌표는 창 사각형의 왼쪽 위 모서리를 기준으로 합니다.

[in] cjIn

pvIn이 가리키는 버퍼의 크기(바이트)를 지정합니다.

[in] pvIn

호출의 입력 데이터에 대한 포인터입니다. 입력 데이터의 형식은 iEsc에서 지정한 함수에 따라 달라집니다.

반환 값

반환 값은 iEsc에서 지정한 함수에 따라 달라집니다. 지원되지 않는 함수가 호출되면 드라이버는 0xFFFFFFFF 반환해야 합니다.

설명

이 진입점은 CLIPOBJ 구조체가 제공된다는 점에서 DrvEscape 와 다릅니다. 이렇게 하면 드라이버가 창이 있는 환경에서 자체 그리기 함수를 구현할 수 있습니다.

GDI는 (악의적일 수 있는) 클라이언트 애플리케이션에서 드라이버로 직접 데이터를 전달합니다. 즉, DrvDrawEscape 함수는 모든 입력 인수의 유효성을 검사해야 합니다. 특히 이 함수는 다음을 수행해야 합니다.

  • iEsc 매개 변수에서 받은 값이 유효한 쿼리를 나타내는지 확인합니다.
  • 입력 버퍼의 크기( cjIn 매개 변수의 값)가 지정된 쿼리에 유효한지 확인합니다.
  • pvIn 매개 변수가 가리키는 버퍼의 내용이 지정된 쿼리에 대해 유효한지 확인합니다.
디바이스에서 지원하는 이스케이프는 DrvEscape 호출에 의해 결정됩니다.

Microsoft에서 예약하는 이스케이프 코드에 대한 자세한 내용은 DrvEscape를 참조하세요.

DrvDrawEscape 는 모든 드라이버에 대해 선택 사항입니다.

요구 사항

   
대상 플랫폼 데스크톱
머리글 winddi.h(Winddi.h 포함)

추가 정보

CLIPOBJ

DrvEnableDriver

DrvEscape