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 的顯示迷你埠驅動程式的 DPC 會呼叫 DxgkCbIndicateChildStatus,原因如下:
- 外部裝置(通常是監視器)已連線到其中一個顯示器適配卡的子裝置,其 HPD 感知值 HpdAwarenessInterruptible。 在此情況下,顯示迷你埠驅動程式會將 ChildStatus->Type 設定為 StatusConnection,並設定 ChildStatus。HotPlug。連線TRUE。
- 外部裝置(通常是監視器)已與其中一個顯示器適配卡的子裝置中斷連線,其 HPD 感知值 HpdAwarenessInterruptible。 在此情況下,顯示迷你埠驅動程式會將 ChildStatus->Type 設定為 StatusConnection,並設定 ChildStatus。HotPlug。連線FALSE。
- 已旋轉連接到其中一個內建子裝置的顯示裝置(具有 D3DKMDT_MOA_INTERRUPTIBLE的監視器方向感知值)。 在此情況下,顯示迷你埠驅動程式會將 ChildStatus->Type 設定為 StatusRotation,並設定 ChildStatus。旋轉。角度 旋轉角度。
- 可攜式電腦上的蓋子隨即開啟。 在此情況下,顯示迷你埠驅動程式會將 ChildStatus->Type 設定為 StatusConnection,並設定 ChildStatus。HotPlug。連線TRUE。
- 便攜式電腦上的蓋子關閉。 在此情況下,顯示迷你埠驅動程式會將 ChildStatus->Type 設定為 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 |