共用方式為


DXGKDDI_STOP_DEVICE_AND_RELEASE_POST_DISPLAY_OWNERSHIP回呼函式 (dispmprt.h)

OS 會呼叫內核模式顯示驅動程式的 (KMD) DxgkddiStopDeviceAndReleasePostDisplayOwnership 函式,要求 KMD 重設顯示裝置,並釋放目前電源上自我測試 (POST) 裝置的擁有權。

語法

DXGKDDI_STOP_DEVICE_AND_RELEASE_POST_DISPLAY_OWNERSHIP DxgkddiStopDeviceAndReleasePostDisplayOwnership;

NTSTATUS DxgkddiStopDeviceAndReleasePostDisplayOwnership(
  [in]  PVOID MiniportDeviceContext,
  [in]  D3DDDI_VIDEO_PRESENT_TARGET_ID TargetId,
  [out] PDXGK_DISPLAY_INFORMATION DisplayInfo
)
{...}

參數

[in] MiniportDeviceContext

與顯示配接器相關聯的內容區塊句柄。 KMD 的 DxgkDdiAddDevice 函式先前已將此句柄提供給 DirectX 圖形核心子系統(Dxgkrnl)。

[in] TargetId

D3DDDI_VIDEO_PRESENT_TARGET_ID 值,指定顯示裝置所連接的顯示適配卡上影片目前目標的標識碼。 在先前呼叫 DxgkDdiCommitVidPn 期間,此標識元可能是目前影片呈現網路 (VidPN) 狀態中留下的目標標識碼。

如需使用 TargetId 參數的詳細資訊,請參閱一節。

[out] DisplayInfo

操作系統所配置之 DXGK_DISPLAY_INFORMATION 結構的指標。

傳回值

如果成功,則傳回 STATUS_SUCCESS。 否則,它會傳回 Ntstatus.h中定義的其中一個錯誤碼。 如需詳細資訊,請參閱一節。

言論

從 Windows 8 (WDDM 1.2) 開始,OS 會在隨插即用 (PnP) 停止作業期間呼叫此函式。

若要向操作系統指出支援此函式,驅動程式必須在呼叫其 DxgkDdiQueryAdapterInfo 函式時,設定 DXGK_DRIVERCAPS 結構的 NonVGASupport 成員。

允許的色彩格式

KMD 應該只報告 32 位的色彩格式。 因此,DisplayInfo->ColorFormat 成員只能包含下列兩種 D3DDDIFORMAT 格式之一:

  • D3DDDIFMT_X8R8G8B8
  • D3DDDIFMT_A8R8G8B8

影片呈現目標初始化

KMD 必須將 DisplayInfo->TargetId 成員設定為保持使用中之顯示器的目標識別符。 一般而言,此標識符會是OS傳遞給驅動程式的 TargetId 參數的值。

同樣地,KMD 必須將 DisplayInfo->AcpiId 成員設定為保持使用中之顯示器的 ACPI 識別碼。

KMD 的必要步驟

呼叫 KMD DxgkDdiStopDeviceAndReleasePostDisplayOwnership 函式時,必須遵循下列步驟:

  1. 停止與 TargetId 參數所指示之視訊顯示目標相關聯的顯示裝置,但必須保留與此目標開啟且可見的顯示關聯。

  2. 檢查與此目標相關聯的顯示連線。 如果目標沒有連接顯示器,KMD 必須完成此函式的呼叫,並傳回 STATUS_NOT_SUPPORTED 錯誤碼。

  3. 停用連接到顯示配接器之所有其他顯示器的訊號。 如果無法這樣做,驅動程式應該嘗試將空白影像放在所有其他顯示器上。 如果無法這樣做,驅動程式必須在畫面上保留最後一個影像不變。

  4. 將目前顯示模式保留在指定的目標上,並在此函式呼叫中將這個模式傳回OS。

  5. 如果驅動程式無法維持目前的顯示模式,或目標不是使用中拓撲的一部分,驅動程式應該選取替代的作用中目標,並嘗試維護該目標的目前解析度。 如果不可能,驅動程式應該嘗試將顯示器設定為其原生解析度或高解析度模式。 在此情況下,顯示器解析度必須設定為至少 800 x 600 像素,D3DDDIFMT_R8G8B8(每圖元 24 位)或 D3DDDIFMT_X8R8G8B8 (32 bpp) 色彩格式。

  6. 如果沒有作用中的目標,驅動程式應該嘗試啟用目標,最好是內部面板,如果有的話。

  7. 可能的話,驅動程式必須清除目前的畫面緩衝區,並停用硬體游標和所有顯示重疊。

  8. 可能的話,驅動程式必須將裝置的 gamma 坡形設定為其預設值。

  9. 驅動程式必須將目前的框架緩衝區設定為處於線性模式。 驅動程式會使用預設的旋轉範圍或停用旋轉模式來執行此動作。

  10. 驅動程式必須將目前的框架緩衝區以線性方式對應到 CPU 位址空間,讓 CPU 能夠存取目前的框架緩衝區。

  11. 驅動程式必須確保所指出目標的可見性設定為「已啟用」。

KMD 執行這些步驟之後,它必須傳回裝置目前的顯示設定。 驅動程式會設定 DisplayInfo 參數所參考之 DXGK_DISPLAY_INFORMATION 結構的成員,以傳回這項資訊。

裝置停止之後,Windows 一般顯示驅動程式可能會使用此顯示資訊來管理顯示裝置。

其他需求

在支援整合可擴展韌體介面 (UEFI) 的系統上,VGA 基本輸入/輸出系統 (BIOS) 不存在。 為了支援這些系統上的 PnP 停止作業,WDDM 1.2 和更新版本可支援 OS 重設 POST 裝置,並在 PnP 停止作業期間取得其顯示資訊。 操作系統會藉由呼叫 KMD 的 DxgkDdiStopDeviceAndReleasePostDisplayOwnership 函式來執行這項作業。

PnP 停止作業可能會因應設備管理器等程式的要求,或在驅動程序升級程式期間發生。

從 Windows 8 開始,OS 只會在 PnP 停止作業期間呼叫驅動程式的 DxgkDdiStopDeviceAndReleasePostDisplayOwnership 函式。

KMD 可以選擇呼叫 DxgkCbAcquirePostDisplayOwnership。 不過,無論驅動程式是否先前呼叫 DxgkCbAcquirePostDisplayOwnership,OS 仍可能會呼叫 KMD 的 DxgkDdiStopDeviceAndReleasePostDisplayOwnership 函式。

如果驅動程式成功完成此函式的呼叫,OS 將不會呼叫 KMD 的 DxgkDdiStopDevice 函式。 如果驅動程式無法完成此函式的呼叫,OS 將會呼叫 DxgkDdiStopDevice,且裝置行為會與 Windows 7 中的相同。

在僅限 UEFI 的系統上,如果 KMD 無法呼叫此函式,則會顯示黑色畫面,且未安裝 IHV 驅動程式。 此案例的因應措施是讓使用者重新啟動電腦。

如需如何在 PnP 案例中使用此函式的詳細資訊,請參閱 WDDM 1.2 和更新版本中 隨插即用 (PnP)

要求

要求 價值
最低支援的用戶端 Windows 8 (WDDM 1.2)
支援的最低伺服器 Windows Server 2012
目標平臺 桌面
標頭 dispmprt.h
IRQL PASSIVE_LEVEL

另請參閱

DXGKRNL_INTERFACE

DXGK_DISPLAY_INFORMATION

DXGK_DRIVERCAPS

DxgkCbAcquirePostDisplayOwnership

DxgkDdiAddDevice

DxgkDdiQueryAdapterInfo

DxgkDdiStartDevice

DxgkDdiStopDevice