共用方式為


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 的顯示迷你埠驅動程式的 DPC 會呼叫 DxgkCbIndicateChildStatus,原因如下:

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

另請參閱

DxgkDdiQueryChildRelations

DxgkDdiQueryChildStatus