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所指向。 如果函式成功,傳回值就是寫入的位元組數目。 否則,它會是零,而且會記錄錯誤碼。 |
[in] pco
可查詢之 CLIPOBJ 結構的指標,以尋找呼叫端可覆寫之介面上的區域。
[in] prcl
定義介面上視窗矩形之 RECTL 結構的指標。 應用程式不知道視窗在介面上的位置。 GDI 會提供此矩形,並保留鎖定,以確保矩形在呼叫期間保持穩定。 從應用程式收到的座標相對於視窗矩形的左上角。
[in] cjIn
指定 pvIn所指向緩衝區的大小,以位元組為單位。
[in] pvIn
呼叫之輸入資料的指標。 輸入資料的格式取決於 iEsc指定的函式。
傳回值
傳回值取決於 iEsc指定的函式。 如果呼叫不支援的函式,驅動程式應該會傳回0xFFFFFFFF。
備註
此進入點與 DrvEscape 不同,因為提供 CLIPOBJ 結構。 這可讓驅動程式在視窗化環境中實作自己的 繪圖函 式。
GDI 會將資料直接從 (惡意) 用戶端應用程式傳遞至驅動程式,這表示 DrvDrawEscape 函式必須驗證所有輸入引數。 具體而言,此函式必須:
- 確認 iEsc 參數中收到的值代表有效的查詢。
- 確認輸入緩衝區的大小 (cjIn 參數中的值) 對指定的查詢有效。
- 確認 pvIn 參數指向的緩衝區內容對指定的查詢有效。
如需 Microsoft 保留之逸出代碼的詳細資訊,請參閱 DrvEscape。
DrvDrawEscape 是所有驅動程式的選擇性專案。
規格需求
目標平台 | 桌上型 |
標頭 | winddi.h (包含 Winddi.h) |