共用方式為


DXGKDDI_PREEMPTCOMMAND回呼函式 (d3dkmddi.h)

DxgkDdiPreemptCommand 函式會先占先前提交至硬體命令執行單元中且目前已排入佇列的直接記憶體存取 (DMA) 緩衝區。

語法

DXGKDDI_PREEMPTCOMMAND DxgkddiPreemptcommand;

NTSTATUS DxgkddiPreemptcommand(
  [in] IN_CONST_HANDLE hAdapter,
  [in] IN_CONST_PDXGKARG_PREEMPTCOMMAND pPreemptCommand
)
{...}

參數

[in] hAdapter

與顯示配接器相關聯的內容區塊句柄。 顯示迷你埠驅動程式先前已將此句柄提供給 MiniportDeviceContextDxgkDdiAddDevice 函式的 Microsoft DirectX 圖形核心子系統。

[in] pPreemptCommand

DXGKARG_PREEMPTCOMMAND 結構的指標,描述用來先占先前提交至硬體命令執行單位的 DMA 緩衝區的命令。

傳回值

成功完成時傳回 STATUS_SUCCESS。 如果驅動程式改為傳回錯誤碼,則作系統會導致發生系統錯誤檢查。 如需詳細資訊,請參閱下列一節。

言論

如果驅動程式判斷硬體已完成處理所有提交的 DMA 緩衝區,而且硬體會通知圖形處理單位 (GPU) 排程器完成完成--當其 DxgkDdiPreemptCommand 函式被呼叫來先占 DMA 緩衝區時, 驅動程式應該執行下列作業,而不是將 PreemptionFenceId 所識別的先佔柵欄DXGKARG_PREEMPTCOMMAND 成員提交至硬體:

  • 引發 IRQL 以中斷層級。 例如,驅動程式可以呼叫 DxgkCbSynchronizeExecution 函式來與其 DxgkDdiInterruptRoutine 函式同步處理。
  • 通知 GPU 排程器先占資訊。 驅動程式可以直接呼叫 DxgkCbNotifyInterrupt 函式,或直接呼叫其 DxgkDdiInterruptRoutine 函式(例如,如果驅動程式也必須執行其他更新)。

    請注意,GPU 排程器會處理硬體因逾時偵測和復原 (TDR) 運作而停止響應的實例。

如果驅動程式傳回錯誤碼,Microsoft DirectX 圖形核心子系統會造成系統錯誤檢查。 在損毀傾印檔案中,錯誤是由錯誤訊息 BugCheck 0x119所指出,其具有下列四個參數。
  1. 0x2
  2. 從失敗的驅動程式呼叫傳回的NTSTATUS錯誤碼
  3. DXGKARG_PREEMPTCOMMAND 結構的指標
  4. 內部排程器數據結構的指標
DxgkDdiPreemptCommand 應設為不可分頁,因為它會在 IRQL = DISPATCH_LEVEL

要求

要求 價值
最低支援的用戶端 Windows Vista
目標平臺 桌面
標頭 d3dkmddi.h
IRQL DISPATCH_LEVEL

另請參閱

DXGKARG_PREEMPTCOMMAND

DxgkCbNotifyInterrupt

DxgkCbSynchronizeExecution

DxgkDdiAddDevice

DxgkDdiInterruptRoutine