Freigeben über


DXGKCB_INDICATE_CHILD_STATUS Rückruffunktion (dispmprt.h)

Die DxgkCbIndicateChildStatus Funktion zeichnet den aktuellen Status eines angegebenen untergeordneten Geräts eines Anzeigeadapters auf.

Syntax

DXGKCB_INDICATE_CHILD_STATUS DxgkcbIndicateChildStatus;

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

Parameter

[in] DeviceHandle

Ein Handle, das einen Anzeigeadapter darstellt. Der Display-Miniporttreiber hat dieses Handle zuvor im DeviceHandle Member der DXGKRNL_INTERFACE Struktur abgerufen, die an DxgkDdiStartDeviceübergeben wurde.

[in] ChildStatus

Ein Zeiger auf eine DXGK_CHILD_STATUS Struktur, die das untergeordnete Gerät identifiziert und den aktuellen Status des untergeordneten Geräts beschreibt.

Rückgabewert

DxgkCbIndicateChildStatus gibt STATUS_SUCCESS zurück, wenn dies erfolgreich ist. Andernfalls wird eine der fehlercodes zurückgegeben, die in ntstatus.hdefiniert sind.

Bemerkungen

Der DPC des Anzeige-Miniporttreibers für ISR ruft DxgkCbIndicateChildStatus auf, wenn der Anzeigeadapter aus folgenden Gründen einen Interrupt generiert:

  • Ein externes Gerät (in der Regel ein Monitor) wurde an eines der untergeordneten Geräte des Displayadapters angeschlossen, das einen HPD-Bewusstseinswert von HpdAwarenessInterruptiblehat. In diesem Fall legt der Miniporttreiber ChildStatus->Type auf StatusConnection fest und legt ChildStatus-fest.HotPlug.ConnectedTRUE.
  • Ein externes Gerät (in der Regel ein Monitor) wurde von einem der untergeordneten Geräte des Displayadapters getrennt, das einen HPD-Bewusstseinswert von HpdAwarenessInterruptiblehat. In diesem Fall legt der Miniporttreiber ChildStatus->Type auf StatusConnection fest und legt ChildStatus-fest.HotPlug.VerbundenFALSE.
  • Das Anzeigegerät, das mit einem seiner untergeordneten Geräte an Bord verbunden ist (mit einem Monitorausrichtungsbewusstseinswert von D3DKMDT_MOA_INTERRUPTIBLE) wurde gedreht. In diesem Fall legt der Miniporttreiber ChildStatus->Type auf StatusRotation fest und legt ChildStatus-fest.Drehung.Winkel zum Drehwinkel.
Die DxgkDdiNotifyAcpiEvent Funktion des Anzeigeminiporttreibers ruft DxgkCbIndicateChildStatus- in den folgenden Situationen auf:
  • Der Deckel auf einem tragbaren Computer wird geöffnet. In diesem Fall legt der Miniporttreiber ChildStatus->Type auf StatusConnection fest und legt ChildStatus-fest.HotPlug.ConnectedTRUE.
  • Der Deckel auf einem tragbaren Computer wird geschlossen. In diesem Fall legt der Miniporttreiber ChildStatus->Type auf StatusConnection fest und legt ChildStatus-fest.HotPlug.VerbundenFALSE.

Beispiele

Das folgende Codebeispiel zeigt, wie der aktuelle Status eines untergeordneten Geräts erfasst wird.

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

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows Vista
Zielplattform- Desktop
Header- dispmprt.h (include Dispmprt.h)
IRQL- <=DISPATCH_LEVEL

Siehe auch

DxgkDdiQueryChildRelations

DxgkDdiQueryChildStatus-