Partager via


DXGKCB_INDICATE_CHILD_STATUS fonction de rappel (dispmprt.h)

La fonction DxgkCbIndicateChildStatus enregistre l’état actuel d’un appareil enfant spécifié d’une carte d’affichage.

Syntaxe

DXGKCB_INDICATE_CHILD_STATUS DxgkcbIndicateChildStatus;

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

Paramètres

[in] DeviceHandle

Handle qui représente un adaptateur d’affichage. Le pilote miniport d’affichage a précédemment obtenu ce handle dans le membre DeviceHandle de la structure DXGKRNL_INTERFACE qui a été passée à DxgkDdiStartDevice.

[in] ChildStatus

Pointeur vers une structure DXGK_CHILD_STATUS qui identifie l’appareil enfant et décrit l’état actuel de l’appareil enfant.

Valeur de retour

DxgkCbIndicateChildStatus retourne STATUS_SUCCESS si elle réussit. Sinon, elle retourne l’un des codes d’erreur définis dans Ntstatus.h.

Remarques

Le DPC du pilote miniport d’affichage pour les appels ISR DxgkCbIndicateChildStatus lorsque l’adaptateur d’affichage génère une interruption pour l’une des raisons suivantes :

  • Un appareil externe (généralement un moniteur) a été connecté à l’un des appareils enfants de l’adaptateur d’affichage qui a une valeur de sensibilisation HPD de HpdAwarenessInterruptible. Dans ce cas, le pilote display miniport définit ChildStatus->Type sur StatusConnection et définit ChildStatus.hotPlug. connecté à TRUE.
  • Un appareil externe (généralement un moniteur) a été déconnecté de l’un des appareils enfants de l’adaptateur d’affichage qui a une valeur de sensibilisation HPD de HpdAwarenessInterruptible. Dans ce cas, le pilote display miniport définit ChildStatus->Type sur StatusConnection et définit ChildStatus.hotPlug. connecté à FALSE .
  • L’appareil d’affichage connecté à l’un de ses appareils enfants à bord (qui a une valeur de reconnaissance de l’orientation du moniteur de D3DKMDT_MOA_INTERRUPTIBLE) a été pivoté. Dans ce cas, le pilote display miniport définit ChildStatus->Type sur StatusRotation et définit ChildStatus.rotation.Angle à l’angle de rotation.
La fonction d’affichage du pilote miniport DxgkDdiNotifyAcpiEvent appelle DxgkCbIndicateChildStatus dans les situations suivantes :
  • Le couvercle sur un ordinateur portable est ouvert. Dans ce cas, le pilote display miniport définit ChildStatus->Type sur StatusConnection et définit ChildStatus.hotPlug. connecté à TRUE.
  • Le couvercle sur un ordinateur portable est fermé. Dans ce cas, le pilote display miniport définit ChildStatus->Type sur StatusConnection et définit ChildStatus.hotPlug. connecté à FALSE .

Exemples

L’exemple de code suivant montre comment enregistrer l’état actuel d’un appareil enfant.

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

Exigences

Exigence Valeur
client minimum pris en charge Windows Vista
plateforme cible Bureau
d’en-tête dispmprt.h (include Dispmprt.h)
IRQL <=DISPATCH_LEVEL

Voir aussi

DxgkDdiQueryChildRelations

DxgkDdiQueryChildStatus