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