DXGKCB_INDICATE_CHILD_STATUS funzione di callback (dispmprt.h)

La funzione DxgkCbIndicateChildStatus registra lo stato corrente di un dispositivo figlio specificato di una scheda di visualizzazione.

Sintassi

DXGKCB_INDICATE_CHILD_STATUS DxgkcbIndicateChildStatus;

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

Parametri

[in] DeviceHandle

Handle che rappresenta una scheda di visualizzazione. Il driver miniport visualizzato in precedenza ha ottenuto questo handle nel membro DeviceHandle della struttura DXGKRNL_INTERFACE passata a DxgkDdiStartDevice.

[in] ChildStatus

Puntatore a una struttura DXGK_CHILD_STATUS che identifica il dispositivo figlio e descrive lo stato corrente del dispositivo figlio.

Valore restituito

DxgkCbIndicateChildStatus restituisce STATUS_SUCCESS se ha esito positivo. In caso contrario, restituisce uno dei codici di errore definiti in Ntstatus.h.

Commenti

Il DPC del driver di visualizzazione per ISR chiama DxgkCbIndicateChildStatus quando la scheda di visualizzazione genera un interruzione per uno dei motivi seguenti:

  • Un dispositivo esterno (in genere un monitor) è stato connesso a uno dei dispositivi figlio della scheda di visualizzazione che ha un valore di consapevolezza HPD di HpdAwarenessInterruptible. In questo caso, il driver miniport visualizzato imposta ChildStatusType su StatusConnection e imposta ChildStatus->.HotPlug. Connesso a TRUE.
  • Un dispositivo esterno (in genere un monitor) è stato disconnesso da uno dei dispositivi figlio della scheda di visualizzazione che ha un valore di consapevolezza HPD di HpdAwarenessInterruptible. In questo caso, il driver miniport visualizzato imposta ChildStatusType su StatusConnection e imposta ChildStatus->.HotPlug. Connesso a FALSE.
  • Il dispositivo di visualizzazione connesso a uno dei dispositivi figlio a bordo (con un valore di consapevolezza dell'orientamento di monitoraggio di D3DKMDT_MOA_INTERRUPTIBLE) è stato ruotato. In questo caso, il driver miniport visualizzato imposta ChildStatusType su StatusRotation e imposta ChildStatus->.Rotazione. Angolo dell'angolo di rotazione.
La funzione DxgkDdiNotifyAcpiEvent del driver di visualizzazione chiama DxgkCbIndicateChildStatus nelle situazioni seguenti:
  • Il coperchio su un computer portatile viene aperto. In questo caso, il driver miniport visualizzato imposta ChildStatusType su StatusConnection e imposta ChildStatus->.HotPlug. Connesso a TRUE.
  • Il coperchio su un computer portatile viene chiuso. In questo caso, il driver miniport visualizzato imposta ChildStatusType su StatusConnection e imposta ChildStatus->.HotPlug. Connesso a FALSE.

Esempio

Nell'esempio di codice seguente viene illustrato come registrare lo stato corrente di un dispositivo figlio.

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

Requisiti

Requisito Valore
Client minimo supportato Windows Vista
Piattaforma di destinazione Desktop
Intestazione dispmprt.h (include Dispmprt.h)
IRQL <=DISPATCH_LEVEL

Vedi anche

DxgkDdiQueryChildRelations

DxgkDdiQueryChildStatus