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 參數指向的緩衝區內容對指定的查詢有效。
裝置支援的逸出是由 呼叫 DrvEscape所決定。

如需 Microsoft 保留之逸出代碼的詳細資訊,請參閱 DrvEscape

DrvDrawEscape 是所有驅動程式的選擇性專案。

規格需求

   
目標平台 桌上型
標頭 winddi.h (包含 Winddi.h)

另請參閱

CLIPOBJ

DrvEnableDriver

DrvEscape