Compartilhar via


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 função DxgkDdiNotifyAcpiEvent do driver de miniport de exibição chama DxgkCbIndicateChildStatus nas seguintes situações:
  • 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

Confira também

DxgkDdiQueryChildRelations

DxgkDdiQueryChildStatus