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