DXGKCB_INDICATE_CHILD_STATUS回呼函式 (dispmprt.h)

DxgkCbIndicateChildStatus 函式會記錄顯示適配卡之指定子裝置的目前狀態。

語法

DXGKCB_INDICATE_CHILD_STATUS DxgkcbIndicateChildStatus;

NTSTATUS DxgkcbIndicateChildStatus(
  [in] HANDLE DeviceHandle,
  [in] PDXGK_CHILD_STATUS ChildStatus
)
{...}

參數

[in] DeviceHandle

表示顯示配接器的句柄。 顯示迷你埠驅動程式先前在傳遞給 DxgkDdiStartDeviceDXGKRNL_INTERFACE 結構的 DeviceHandle 成員中取得此句柄。

[in] ChildStatus

識別子裝置 之DXGK_CHILD_STATUS 結構的指標,並描述子裝置的目前狀態。

傳回值

如果成功,DxgkCbIndicateChildStatus 會傳回STATUS_SUCCESS。 否則,它會傳回 Ntstatus.h 中定義的其中一個錯誤碼。

備註

當顯示器配接器產生中斷時,ISR 的 display miniport 驅動程式的 DPC 會呼叫 DxgkCbIndicateChildStatus ,原因如下:

  • 外部裝置 (通常是監視) 已連線到其中一個顯示器適配卡的子裝置,其 HPdAwarenessInterruptible 的 HPD 感知值。 在此情況下,顯示迷你埠驅動程式會將 ChildStatus->Type 設定為 StatusConnection,並設定 ChildStatus。HotPlug線上TRUE
  • 外部裝置 (通常是) 與其中一個顯示器適配卡的子裝置中斷連線,其 HPdAwarenessInterruptible 的 HPD 感知值。 在此情況下,顯示迷你埠驅動程式會將 ChildStatus->Type 設定為 StatusConnection,並設定 ChildStatus。HotPlug聯機FALSE
  • 連接到其中一個內建子裝置的顯示裝置, (已旋轉 D3DKMDT_MOA_INTERRUPTIBLE) 的 監視方向感知值。 在此情況下,顯示迷你埠驅動程式會將 ChildStatus->Type 設定為 StatusRotation,並設定 ChildStatus。旋轉旋轉角度。
在下列情況下,顯示迷你埠驅動程式的 DxgkDdiNotifyAcpiEvent 函式會呼叫 DxgkCbIndicateChildStatus
  • 可攜式電腦上的蓋子隨即開啟。 在此情況下,顯示迷你埠驅動程式會將 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 和更新版本的 Windows 作業系統中使用。
目標平台 桌面
標頭 dispmprt.h (包含 Dispmprt.h)
IRQL <=DISPATCH_LEVEL

另請參閱

DxgkDdiQueryChildRelations

DxgkDdiQueryChildStatus