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 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 ejecuta correctamente. De lo contrario, devuelve uno de los códigos de error definidos en Ntstatus.h.

Comentarios

El DPC del controlador de miniporte de pantalla para ISR llama a 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 de pantalla 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 de pantalla establece ChildStatus->Type en StatusConnection y establece ChildStatus.HotPlug. Conectado a FALSE.
  • El dispositivo de pantalla 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 minipuerto de pantalla establece ChildStatus->Type en StatusRotation y establece ChildStatus.Rotación. Ángulo al ángulo de rotación.
La función DxgkDdiNotifyAcpiEvent del controlador display miniport llama a DxgkCbIndicateChildStatus en las situaciones siguientes:
  • La tapa de un equipo portátil se abre. En este caso, el controlador de miniporte de pantalla establece ChildStatus->Type en StatusConnection y establece ChildStatus.HotPlug. Conectado a TRUE.
  • La tapa de un equipo portátil se cierra. En este caso, el controlador de miniporte de pantalla 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 Value
Cliente mínimo compatible Disponible en Windows Vista y versiones posteriores de los sistemas operativos Windows.
Plataforma de destino Escritorio
Encabezado dispmprt.h (include Dispmprt.h)
IRQL <=DISPATCH_LEVEL

Consulte también

DxgkDdiQueryChildRelations

DxgkDdiQueryChildStatus