DXGKCB_INDICATE_CHILD_STATUS Rückruffunktion (dispmprt.h)

Die DxgkCbIndicateChildStatus-Funktion zeichnet die aktuelle status eines angegebenen untergeordneten Geräts einer Grafikkarte 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 Anzeigeminiporttreiber 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 die aktuelle status des untergeordneten Geräts beschreibt.

Rückgabewert

DxgkCbIndicateChildStatus gibt STATUS_SUCCESS zurück, wenn dies erfolgreich ist. Andernfalls wird einer der in "Ntstatus.h" definierten Fehlercodes zurückgegeben.

Hinweise

Der DPC des Anzeigeminiporttreibers für ISR ruft DxgkCbIndicateChildStatus auf, wenn der Grafikkarte aus einem der folgenden Gründe einen Interrupt generiert:

  • Ein externes Gerät (in der Regel ein Monitor) wurde mit einem der untergeordneten Geräte der Grafikkarte verbunden, das über den HPD-Bewusstseinswert HpdAwarenessInterruptible verfügt. In diesem Fall legt der Anzeigeminiporttreiber ChildStatus->Type auf StatusConnection und ChildStatus fest.HotPlug. MitTRUE verbunden.
  • Ein externes Gerät (in der Regel ein Monitor) wurde von einem der untergeordneten Geräte der Grafikkarte getrennt, das den HPD-Bewusstseinswert HpdAwarenessInterruptible aufweist. In diesem Fall legt der Anzeigeminiporttreiber ChildStatus->Type auf StatusConnection und ChildStatus fest.HotPlug. MitFALSE verbunden.
  • Das Anzeigegerät, das mit einem seiner untergeordneten Bordgeräte verbunden ist (mit dem Monitorausrichtungserkennungswert D3DKMDT_MOA_INTERRUPTIBLE) wurde gedreht. In diesem Fall legt der Anzeigeminiporttreiber ChildStatus-Typ-> 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 eines tragbaren Computers wird geöffnet. In diesem Fall legt der Anzeigeminiporttreiber ChildStatus->Type auf StatusConnection und ChildStatus fest.HotPlug. MitTRUE verbunden.
  • Der Deckel eines tragbaren Computers wird geschlossen. In diesem Fall legt der Anzeigeminiporttreiber ChildStatus->Type auf StatusConnection und ChildStatus fest.HotPlug. MitFALSE verbunden.

Beispiele

Im folgenden Codebeispiel wird gezeigt, wie sie die aktuelle status eines untergeordneten Geräts aufzeichnen.

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
Unterstützte Mindestversion (Client) Verfügbar in Windows Vista und höheren Versionen der Windows-Betriebssysteme.
Zielplattform Desktop
Kopfzeile dispmprt.h (include Dispmprt.h)
IRQL <=DISPATCH_LEVEL

Weitere Informationen

DxgkDdiQueryChildRelations

DxgkDdiQueryChildStatus