DXGKCB_INDICATE_CHILD_STATUS função de retorno de chamada (dispmprt.h)
A função DxgkCbIndicateChildStatus registra o status atual de um dispositivo filho especificado de um adaptador de vídeo.
Sintaxe
DXGKCB_INDICATE_CHILD_STATUS DxgkcbIndicateChildStatus;
NTSTATUS DxgkcbIndicateChildStatus(
[in] HANDLE DeviceHandle,
[in] PDXGK_CHILD_STATUS ChildStatus
)
{...}
Parâmetros
[in] DeviceHandle
Um identificador que representa um adaptador de exibição. O driver de miniporto de exibição obteve anteriormente esse identificador no membro DeviceHandle da estrutura DXGKRNL_INTERFACE que foi passada para DxgkDdiStartDevice.
[in] ChildStatus
Um ponteiro para uma estrutura DXGK_CHILD_STATUS que identifica o dispositivo filho e descreve o status atual do dispositivo filho.
Retornar valor
DxgkCbIndicateChildStatus retornará STATUS_SUCCESS se for bem-sucedido. Caso contrário, ele retornará um dos códigos de erro definidos em Ntstatus.h.
Comentários
O DPC do driver de miniporta de exibição para ISR chama DxgkCbIndicateChildStatus quando o adaptador de vídeo gera uma interrupção por qualquer um dos seguintes motivos:
- Um dispositivo externo (normalmente um monitor) foi conectado a um dos dispositivos filho do adaptador de vídeo que tem um valor de reconhecimento HPD de HpdAwarenessInterruptible. Nesse caso, o driver de miniporto de exibição define ChildStatus->Type como StatusConnection e define ChildStatus.HotPlug. Conectado a TRUE.
- Um dispositivo externo (normalmente um monitor) foi desconectado de um dos dispositivos filho do adaptador de vídeo que tem um valor de reconhecimento HPD de HpdAwarenessInterruptible. Nesse caso, o driver de miniporto de exibição define ChildStatus->Type como StatusConnection e define ChildStatus.HotPlug. Conectado a FALSE.
- O dispositivo de exibição conectado a um de seus dispositivos filho a bordo (que tem um valor de reconhecimento de orientação do monitor de D3DKMDT_MOA_INTERRUPTIBLE) foi girado. Nesse caso, o driver de miniporto de exibição define ChildStatus->Type como StatusRotation e define ChildStatus.Rotação. Ângulo para o ângulo de rotação.
- A tampa de um computador portátil é aberta. Nesse caso, o driver de miniporto de exibição define ChildStatus->Type como StatusConnection e define ChildStatus.HotPlug. Conectado a TRUE.
- A tampa de um computador portátil é fechada. Nesse caso, o driver de miniporto de exibição define ChildStatus->Type como StatusConnection e define ChildStatus.HotPlug. Conectado a FALSE.
Exemplos
O exemplo de código a seguir mostra como registrar o status atual de um dispositivo filho.
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 com suporte | Windows Vista |
Plataforma de Destino | Área de Trabalho |
Cabeçalho | dispmprt.h (inclua Dispmprt.h) |
IRQL | <=DISPATCH_LEVEL |