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.
- 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 |