共用方式為


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 會指向逸出函式編號; 會忽略 cjOutpvOut 。 如果支援指定的函式,則傳回值為非零。

[in] cjIn

指定 pvIn 所指向緩衝區的大小,以位元組為單位。

[in] pvIn

呼叫之輸入數據的指標。 輸入數據的格式取決於 iEsc 參數指定的查詢。

[in] cjOut

指定 pvOut 所指向緩衝區的大小,以位元組為單位。

[out] pvOut

輸出緩衝區的指標。 輸出數據的格式取決於 iEsc 參數所指定的查詢。

傳回值

傳回值取決於 iEsc 參數所指定的查詢。 如果不支持查詢中指定的函式,則傳回值為零。

備註

此函式中不允許在裝置上進行繪圖。 DrvDrawEscape 是用於特製化繪圖支援。

GDI 會將數據直接從 (惡意) 用戶端應用程式傳遞至驅動程式,這表示 DrvEscape 函式必須驗證所有輸入自變數。 具體而言,此函式必須:

  • 確認 iEsc 參數中收到的值代表有效的查詢。
  • 確認輸入緩衝區的大小 (cjIn 參數中的值) 對指定的查詢有效。
  • 確認 pvIn 參數指向的緩衝區內容對指定的查詢有效。
  • 確認指定輸出緩衝區的大小 (cjOut 參數中的值) 對指定的查詢有效。
Microsoft 會保留範圍 0 以0X10000逸出碼。 第三方廠商可以自由選擇逸出程序代碼,供自己在此範圍上方使用。 由於驅動程式特定的逸出程式代碼可能會與其他顯示驅動程式中使用的程式碼衝突,因此在處理逸出之前,顯示驅動程式必須先驗證逸出參數。 其中一個做法是驗證輸入和輸出區塊大小和輸入區塊參數。 為了提高安全性,驅動程式也應該包含「魔術」值,每個輸入區塊中都必須適當地設定,以確保輸入區塊來自信任的來源。

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

規格需求

需求
目標平台 桌面
標頭 winddi.h (包含Winddi.h)

另請參閱

DrvDrawEscape

SURFOBJ