DXGKCB_INDICATE_CHILD_STATUS回呼函式 (dispmprt.h)
DxgkCbIndicateChildStatus 函式會記錄顯示適配卡之指定子裝置的目前狀態。
語法
DXGKCB_INDICATE_CHILD_STATUS DxgkcbIndicateChildStatus;
NTSTATUS DxgkcbIndicateChildStatus(
[in] HANDLE DeviceHandle,
[in] PDXGK_CHILD_STATUS ChildStatus
)
{...}
參數
[in] DeviceHandle
表示顯示配接器的句柄。 顯示迷你埠驅動程式先前在傳遞至 DxgkDdiStartDevice 之 DXGKRNL_INTERFACE 結構的 DeviceHandle 成員中取得此句柄。
[in] ChildStatus
識別子裝置 之DXGK_CHILD_STATUS 結構的指標,並描述子裝置的目前狀態。
傳回值
DxgkCbIndicateChildStatus 會在成功時傳回STATUS_SUCCESS。 否則,它會傳回 Ntstatus.h 中定義的其中一個錯誤碼。
備註
當顯示適配卡產生中斷時,適用於 ISR 的 display miniport 驅動程式的 DPC 會呼叫 DxgkCbIndicateChildStatus ,原因如下:
- 外部裝置 (通常) 監視器已連線到其中一個具有 HpdAwarenessInterruptible HPD 感知值的顯示器適配卡子裝置。 在此情況下,顯示迷你埠驅動程式會將 ChildStatus->類型設定為 StatusConnection,並設定 ChildStatus。HotPlug。線上到 TRUE。
- 外部裝置 (通常) 已中斷與其中一個具有 HpdAwarenessInterruptible HPD 感知值的顯示器適配卡子裝置中斷連線。 在此情況下,顯示迷你埠驅動程式會將 ChildStatus->類型設定為 StatusConnection,並設定 ChildStatus。HotPlug。聯機到 FALSE。
- 連接到其中一個內建子裝置的顯示裝置, (已旋轉 D3DKMDT_MOA_INTERRUPTIBLE) 的監視方向感知值。 在此情況下,顯示迷你埠驅動程式會將 ChildStatus->類型設定為 StatusRotation,並設定 ChildStatus。旋轉。旋轉角度。
- 可攜式電腦上的蓋子隨即開啟。 在此情況下,顯示迷你埠驅動程式會將 ChildStatus->類型設定為 StatusConnection,並設定 ChildStatus。HotPlug。線上到 TRUE。
- 可攜式電腦上的 Lid 會關閉。 在此情況下,顯示迷你埠驅動程式會將 ChildStatus->類型設定為 StatusConnection,並設定 ChildStatus。HotPlug。聯機到 FALSE。
範例
下列程式代碼範例示範如何記錄子裝置的目前狀態。
NTSTATUS
AtiSimulateMonitor(HW_DEVICE_EXTENSION *pHwDeviceExtension, PR2_SIMULATE_MONITOR i_pEscape)
{
NTSTATUS Status;
PVOID MonitorDescriptor = NULL;
DXGK_CHILD_STATUS ChildStatus;
ChildStatus.ChildUid = pHwDeviceExtension->ulNumberDisplays | HW_ID_DISPLAY_CHILD;
ChildStatus.Type = StatusConnection;
if(i_pEscape->Data == NULL) {
// Remove a simulated monitor
if(pHwDeviceExtension->pvSimulatedMonitorDescriptor != NULL) {
ExFreePoolWithTag(pHwDeviceExtension->pvSimulatedMonitorDescriptor, ATI_TAG);
pHwDeviceExtension->pvSimulatedMonitorDescriptor = NULL;
pHwDeviceExtension->ulSimulatedMonitorDescriptorLength = 0;
pHwDeviceExtension->ulRetryCount = 0;
pHwDeviceExtension->bReportDescriptor = FALSE;
ChildStatus.HotPlug.Connected = FALSE;
Status = DxgkCbIndicateChildStatus(pHwDeviceExtension->DeviceHandle, &ChildStatus);
}
else {
// No simulated monitor is present so the request to remove one is invalid
return STATUS_INVALID_PARAMETER;
}
}
else {
//Add a simulated monitor
}
return Status;
}
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows Vista |
目標平台 | 桌面 |
標頭 | dispmprt.h (包括 Dispmprt.h) |
IRQL | <=DISPATCH_LEVEL |