функция обратного вызова DXGKCB_INDICATE_CHILD_STATUS (dispmprt.h)

Функция DxgkCbIndicateChildStatus записывает текущее состояние указанного дочернего устройства видеоадаптера.

Синтаксис

DXGKCB_INDICATE_CHILD_STATUS DxgkcbIndicateChildStatus;

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

Параметры

[in] DeviceHandle

Дескриптор, представляющий видеоадаптер. Драйвер мини-порта дисплея ранее получил этот дескриптор в элементе DeviceHandleструктуры DXGKRNL_INTERFACE , переданной в DxgkDdiStartDevice.

[in] ChildStatus

Указатель на структуру DXGK_CHILD_STATUS , которая идентифицирует дочернее устройство и описывает текущее состояние дочернего устройства.

Возвращаемое значение

DxgkCbIndicateChildStatus возвращает STATUS_SUCCESS в случае успешного выполнения. В противном случае возвращается один из кодов ошибок, определенных в ntstatus.h.

Комментарии

DPC драйвера минипорта дисплея для ISR вызывает DxgkCbIndicateChildStatus , когда видеоадаптер создает прерывание по любой из следующих причин:

  • Внешнее устройство (обычно монитор) подключено к одному из дочерних устройств видеоадаптера с значением hpdAwarenessInterruptible. В этом случае драйвер минипорта дисплея устанавливает тип ChildStatus->взначение StatusConnection и задает ChildStatus.HotPlug. Подключено к TRUE.
  • Внешнее устройство (обычно монитор) было отключено от одного из дочерних устройств видеоадаптера с значением hpdAwarenessInterruptible. В этом случае драйвер минипорта дисплея устанавливает тип ChildStatus->взначение StatusConnection и задает ChildStatus.HotPlug. Подключено к FALSE.
  • Устройство отображения, подключенное к одному из его дочерних устройств (которое имеет значение отслеживания ориентации монитора D3DKMDT_MOA_INTERRUPTIBLE), было повернуто. В этом случае драйвер минипорта отображения устанавливаеттип ChildStatus-> в Значение StatusRotation и задает ChildStatus.Поворот. Угол поворота.
Функция DxgkDdiNotifyAcpiEvent драйвера мини-порта дисплея вызывает DxgkCbIndicateChildStatus в следующих ситуациях:
  • Крышка на переносном компьютере открывается. В этом случае драйвер минипорта дисплея устанавливает тип ChildStatus->взначение StatusConnection и задает ChildStatus.HotPlug. Подключено к TRUE.
  • Крышка на переносном компьютере закрывается. В этом случае драйвер минипорта дисплея устанавливает тип 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 и более поздних версиях операционных систем Windows.
Целевая платформа Персональный компьютер
Верхняя часть dispmprt.h (включая Dispmprt.h)
IRQL <=DISPATCH_LEVEL

См. также раздел

DxgkDdiQueryChildRelations

DxgkDdiQueryChildStatus