Функция 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 — это единственное предопределенное значение; он запрашивает, поддерживает ли драйвер определенную escape-функцию. В этом случае pvIn указывает на escape-номер функции; CjOut и pvOut игнорируются. Если указанная функция поддерживается, возвращаемое значение не равно нулю.
[in] cjIn
Указывает размер (в байтах) буфера, на который указывает pvIn.
[in] pvIn
Указатель на входные данные для вызова. Формат входных данных зависит от запроса, заданного параметром iEsc .
[in] cjOut
Указывает размер (в байтах) буфера, на который указывает pvOut.
[out] pvOut
Указатель на выходной буфер. Формат выходных данных зависит от запроса, заданного параметром iEsc .
Возвращаемое значение
Возвращаемое значение зависит от запроса, заданного параметром iEsc . Если функция, указанная в запросе, не поддерживается, возвращаемое значение равно нулю.
Комментарии
Рисование на устройстве запрещено в этой функции. DrvDrawEscape будет использоваться для специализированной поддержки рисования.
GDI передает данные непосредственно из клиентского приложения (возможно, вредоносного) в драйвер. Это означает, что функция DrvEscape должна проверять все входные аргументы. В частности, эта функция должна:
- Убедитесь, что значение, полученное в параметре iEsc , представляет допустимый запрос.
- Убедитесь, что размер входного буфера (значение в параметре cjIn ) является допустимым для указанного запроса.
- Убедитесь, что содержимое буфера, на которое указывает параметр pvIn , является допустимым для указанного запроса.
- Убедитесь, что размер указанного выходного буфера (значение в параметре cjOut ) является допустимым для указанного запроса.
DrvEscape является необязательным для всех драйверов.
Требования
Требование | Значение |
---|---|
Целевая платформа | Персональный компьютер |
Верхняя часть | winddi.h (включая Winddi.h) |