DXGKDDI_MIRACAST_HANDLE_IO_CONTROL回呼函式 (dispmprt.h)
由作系統呼叫,要求顯示迷你埠驅動程序處理同步 I/O 控件要求,以回應使用者模式顯示驅動程式呼叫 MiracastIoControl 函式。
語法
DXGKDDI_MIRACAST_HANDLE_IO_CONTROL DxgkddiMiracastHandleIoControl;
NTSTATUS DxgkddiMiracastHandleIoControl(
[in] PVOID DriverContext,
[in] PVOID MiracastContext,
[in] ULONG InputBufferSize,
[in] VOID *pInputBuffer,
[in] ULONG OutputBufferSize,
[out] VOID *pOutputBuffer,
[out] ULONG *BytesReturned
)
{...}
參數
[in] DriverContext
與顯示配接器相關聯的內容區塊句柄。 顯示迷你埠驅動程式的 DxgkDdiAddDevice 函式先前提供此句柄給 DirectX 圖形核心子系統。
[in] MiracastContext
作系統所提供的Miracast裝置內容。 此內容是由顯示迷你埠驅動程式在呼叫 DxgkDdiMiracastCreateContext 函式時提供。
[in] InputBufferSize
作系統所提供的輸入緩衝區大小,以位元組為單位,pInputBuffer 所指向的輸入緩衝區,。 此值源自使用者模式 MiracastIoControl 函式的 InputBufferSize 參數。
[in] pInputBuffer
由作系統提供做為輸入緩衝區指標。 此值源自使用者模式 MiracastIoControl 函式的 InputBufferSize 參數。
InputBufferSize 指定緩衝區的大小。
[in] OutputBufferSize
作系統所提供的輸出緩衝區大小,以位元組為單位,pOutputBuffer 所指向的輸出緩衝區。
此值源自使用者模式 MiracastIoControl 函式的 outputBufferSize 參數。
[out] pOutputBuffer
由作系統提供做為輸出緩衝區指標。 此值源自使用者模式 MiracastIoControl 函式的 pOutputBuffer 參數。
OutBufferSize 指定緩衝區的大小。
[out] BytesReturned
由作系統提供作為緩衝區的指標,該緩衝區會保存 ULONG類型值,該值是 pOutputBuffer 所指向之緩衝區中所指向之顯示迷你埠驅動程式所傳回的位元組數。
傳回值
如果成功,則傳回 STATUS_SUCCESS。 否則,它會傳回 Ntstatus.h 中定義的其中一個錯誤碼。
言論
作系統可確保呼叫 DxgkDdiMiracastIoControl,與在中呼叫 MiracastIoControl 要求的使用者模式 相同進程空間中。
即使作系統只會從 MiracastIoControl的個別參數複製輸入和輸出緩衝區大小的值,但顯示迷你埠驅動程式仍負責在使用緩衝區之前檢查緩衝區大小。 此外,驅動程式應該在 try/except 呼叫區塊內執行探查作業,使用 ProbeForRead 和/或 ProbeForWrite 函式,來驗證輸入緩衝區指向的任何使用者模式記憶體。
此 I/O 控件作業會以使用者模式呼叫同步處理,MiracastIoControl 函式。
同步處理
作系統會將 DxgkDdiMiracastCreateContext、DxgkDdiMiracastDestroyContext和 DxgkDdiMiracastIoControl 函式設為 Miracast 類別。此函式的線程和同步處理層級是由使用者模式驅動程式在 呼叫 miracastIoControl 函式時,設定 HardwareAccess 參數的方式設定:
- 如果 HardwareAccessFALSE,則作系統會保證 DxgkDdiMiracastIoControl 遵循 線程和同步處理第二層中所定義的第二層同步處理模式。 當在另一個線程內容上呼叫其他層級 0、1 或非 Miracast 類別時,可以呼叫 DxgkDdiMiracastIoControl。 不過,一次只能呼叫其中一個層級 2 Miracast 類別函式。
- 如果 HardwareAccess 為 TRUE TRUE,則 DxgkDdiMiracastIoControl 遵循 線程和同步處理第三層中所定義的第三層同步處理模式。 請注意,GPU 的排清將會造成大量的處理額外負荷。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows 8.1 |
支援的最低伺服器 | Windows Server 2012 R2 |
目標平臺 | 桌面 |
標頭 | dispmprt.h (包括 Dispmprt.h) |
IRQL | PASSIVE_LEVEL |