DrvEscape 함수(winddi.h)
DrvEscape 함수는 디바이스 독립적 디바이스 드라이버 인터페이스에서 사용할 수 없는 디바이스에서 정보를 검색하는 데 사용됩니다. 특정 쿼리는 iEsc 매개 변수의 값에 따라 달라집니다.
구문
ULONG DrvEscape(
[in] SURFOBJ *pso,
[in] ULONG iEsc,
[in] ULONG cjIn,
[in] PVOID pvIn,
[in] ULONG cjOut,
[out] PVOID pvOut
);
매개 변수
[in] pso
호출이 전달되는 표면을 설명하는 SURFOBJ 구조체에 대한 포인터입니다.
[in] iEsc
쿼리를 지정합니다. 다른 매개 변수의 의미는 이 값에 따라 달라집니다. QUERYESCSUPPORT는 미리 정의된 유일한 값입니다. 드라이버가 특정 이스케이프 함수를 지원하는지 여부를 쿼리합니다. 이 경우 pvIn은 이스케이프 함수 번호를 가리킵니다. cjOut 및 pvOut 은 무시됩니다. 지정된 함수가 지원되는 경우 반환 값은 0이 아닌 값입니다.
[in] cjIn
pvIn이 가리키는 버퍼의 크기(바이트)를 지정합니다.
[in] pvIn
호출의 입력 데이터에 대한 포인터입니다. 입력 데이터의 형식은 iEsc 매개 변수로 지정된 쿼리에 따라 달라집니다.
[in] cjOut
pvOut에서 가리키는 버퍼의 크기(바이트)를 지정합니다.
[out] pvOut
출력 버퍼에 대한 포인터입니다. 출력 데이터의 형식은 iEsc 매개 변수로 지정된 쿼리에 따라 달라집니다.
반환 값
반환 값은 iEsc 매개 변수로 지정된 쿼리에 따라 달라집니다. 쿼리에 지정된 함수가 지원되지 않는 경우 반환 값은 0입니다.
설명
이 함수에서는 디바이스에 그리기를 사용할 수 없습니다. DrvDrawEscape 는 특수 그리기 지원에 사용됩니다.
GDI는 (악의적일 수 있는) 클라이언트 애플리케이션에서 드라이버로 직접 데이터를 전달합니다. 즉, DrvEscape 함수는 모든 입력 인수의 유효성을 검사해야 합니다. 특히 이 함수는 다음을 수행해야 합니다.
- iEsc 매개 변수에서 받은 값이 유효한 쿼리를 나타내는지 확인합니다.
- 입력 버퍼의 크기( cjIn 매개 변수의 값)가 지정된 쿼리에 유효한지 확인합니다.
- pvIn 매개 변수가 가리키는 버퍼의 내용이 지정된 쿼리에 유효한지 확인합니다.
- 지정된 출력 버퍼의 크기( cjOut 매개 변수의 값)가 지정된 쿼리에 유효한지 확인합니다.
DrvEscape 는 모든 드라이버에 대해 선택 사항입니다.
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | 데스크톱 |
머리글 | winddi.h(Winddi.h 포함) |