Condividi tramite


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 di visualizzazione precedentemente ottenuto questo handle nel membro DeviceHandle del DXGKRNL_INTERFACE passato 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.

Osservazioni

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

  • Un dispositivo esterno (in genere un monitor) è stato connesso a uno dei dispositivi figlio della scheda di visualizzazione con un valore di riconoscimento HPD di HpdAwarenessInterruptible. In questo caso, il driver miniport di visualizzazione imposta ChildStatus->Type 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 con un valore di riconoscimento HPD di HpdAwarenessInterruptible. In questo caso, il driver miniport di visualizzazione imposta ChildStatus->Type su StatusConnection e imposta ChildStatus.HotPlug. connesso a FALSE.
  • Il dispositivo di visualizzazione connesso a uno dei relativi dispositivi figlio a bordo (con un valore di riconoscimento dell'orientamento del monitor di D3DKMDT_MOA_INTERRUPTIBLE) è stato ruotato. In questo caso, il driver miniport di visualizzazione imposta ChildStatus->Type su StatusRotation e imposta ChildStatus.rotazione.Angolo all'angolo di rotazione.
Il driver miniport DxgkDdiNotifyAcpiEvent funzione di visualizzazione chiama DxgkCbIndicateChildStatus nelle situazioni seguenti:
  • Il coperchio su un computer portatile viene aperto. In questo caso, il driver miniport di visualizzazione imposta ChildStatus->Type su StatusConnection e imposta ChildStatus.HotPlug. connesso a TRUE.
  • Il coperchio su un computer portatile viene chiuso. In questo caso, il driver miniport di visualizzazione imposta ChildStatus->Type su StatusConnection e imposta ChildStatus.HotPlug. connesso a FALSE.

Esempi

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

Fabbisogno

Requisito Valore
client minimo supportato Windows Vista
piattaforma di destinazione Desktop
intestazione dispmprt.h (include Dispmprt.h)
IRQL <=DISPATCH_LEVEL

Vedere anche

DxgkDdiQueryChildRelations

DxgkDdiQueryChildStatus