Compartir a través de


DXGKCB_INDICATE_CHILD_STATUS función de devolución de llamada (dispmprt.h)

La función DxgkCbIndicateChildStatus registra el estado actual de un dispositivo secundario especificado de un adaptador de pantalla.

Sintaxis

DXGKCB_INDICATE_CHILD_STATUS DxgkcbIndicateChildStatus;

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

Parámetros

[in] DeviceHandle

Identificador que representa un adaptador de pantalla. El controlador de minipuerto de pantalla obtuvo previamente este identificador en el miembro DeviceHandle de la estructura de DXGKRNL_INTERFACE que se pasó a DxgkDdiStartDevice.

[in] ChildStatus

Puntero a una estructura DXGK_CHILD_STATUS que identifica el dispositivo secundario y describe el estado actual del dispositivo secundario.

Valor devuelto

DxgkCbIndicateChildStatus devuelve STATUS_SUCCESS si se realiza correctamente. De lo contrario, devuelve uno de los códigos de error definidos en Ntstatus.h.

Observaciones

El DPC del controlador de miniporte de pantalla para llamadas ISR DxgkCbIndicateChildStatus cuando el adaptador de pantalla genera una interrupción por cualquiera de los siguientes motivos:

  • Un dispositivo externo (normalmente un monitor) se ha conectado a uno de los dispositivos secundarios del adaptador de pantalla que tiene un valor de reconocimiento de HPD de HpdAwarenessInterruptible. En este caso, el controlador de miniporte para mostrar establece ChildStatus->Type en StatusConnection y establece ChildStatus.HotPlug. conectado a TRUE.
  • Un dispositivo externo (normalmente un monitor) se ha desconectado de uno de los dispositivos secundarios del adaptador de pantalla que tiene un valor de reconocimiento de HPD de HpdAwarenessInterruptible. En este caso, el controlador de miniporte para mostrar establece ChildStatus->Type en StatusConnection y establece ChildStatus.HotPlug. conectado a FALSE.
  • El dispositivo de visualización conectado a uno de sus dispositivos secundarios incorporados (que tiene un valor de reconocimiento de orientación de monitor de D3DKMDT_MOA_INTERRUPTIBLE) se ha girado. En este caso, el controlador de miniporte para mostrar establece ChildStatus->Type en StatusRotation y establece ChildStatus.rotación.ángulo al ángulo de rotación.
La función DxgkDdiNotifyAcpiEvent del controlador de miniporte de pantalla llama a DxgkCbIndicateChildStatus en las situaciones siguientes:
  • La tapa de un equipo portátil se abre. En este caso, el controlador de miniporte para mostrar establece ChildStatus->Type en StatusConnection y establece ChildStatus.HotPlug. conectado a TRUE.
  • La tapa de un ordenador portátil se cierra. En este caso, el controlador de miniporte para mostrar establece ChildStatus->Type en StatusConnection y establece ChildStatus.HotPlug. conectado a FALSE.

Ejemplos

En el ejemplo de código siguiente se muestra cómo registrar el estado actual de un dispositivo secundario.

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;
}

Requisitos

Requisito Valor
cliente mínimo admitido Windows Vista
de la plataforma de destino de Escritorio
encabezado de dispmprt.h (incluya Dispmprt.h)
irQL <=DISPATCH_LEVEL

Consulte también

dxgkDdiQueryChildRelations

DxgkDdiQueryChildStatus