DXGKDDI_STOP_DEVICE_AND_RELEASE_POST_DISPLAY_OWNERSHIP funzione di callback (dispmprt.h)
Il sistema operativo chiama la funzione del driver di visualizzazione in modalità kernel (KMD) DxgkddiStopDeviceAndReleasePostDisplayOwnership funzione per richiedere che kmD reimposta il dispositivo di visualizzazione e rilascia la proprietà del dispositivo di auto-test corrente (POST).
Sintassi
DXGKDDI_STOP_DEVICE_AND_RELEASE_POST_DISPLAY_OWNERSHIP DxgkddiStopDeviceAndReleasePostDisplayOwnership;
NTSTATUS DxgkddiStopDeviceAndReleasePostDisplayOwnership(
[in] PVOID MiniportDeviceContext,
[in] D3DDDI_VIDEO_PRESENT_TARGET_ID TargetId,
[out] PDXGK_DISPLAY_INFORMATION DisplayInfo
)
{...}
Parametri
[in] MiniportDeviceContext
Handle di un blocco di contesto associato a una scheda di visualizzazione. La funzione DxgkDdiAddDevice del KMD ha fornito in precedenza questo handle al sottosistema del kernel grafico DirectX (Dxgkrnl).
[in] TargetId
Valore D3DDDI_VIDEO_PRESENT_TARGET_ID che specifica l'identificatore della destinazione del video presente nella scheda di visualizzazione a cui è connesso il dispositivo di visualizzazione. Questo identificatore potrebbe essere per la destinazione che è stata lasciata nello stato corrente della rete video corrente (VidPN) durante la chiamata precedente a DxgkDdiCommitVidPn.
Per altre informazioni sull'uso del parametro TargetId
[out] DisplayInfo
Puntatore a una struttura DXGK_DISPLAY_INFORMATION allocata dal sistema operativo.
Valore restituito
Restituisce STATUS_SUCCESS se ha esito positivo. In caso contrario, restituisce uno dei codici di errore definiti in Ntstatus.h. Per altre informazioni, vedere la sezione Osservazioni.
Osservazioni
A partire da Windows 8 (WDDM 1.2), il sistema operativo chiama questa funzione durante un'operazione di arresto Plug and Play (PnP).
Per indicare al sistema operativo che questa funzione è supportata, il driver deve impostare il membro nonVGASupport della struttura DXGK_DRIVERCAPS quando viene chiamata la relativa funzione DxgkDdiQueryAdapterInfo.
Formati di colore consentiti
Il KMD deve segnalare solo un formato di colore a 32 bit. Di conseguenza, il membro
- D3DDDIFMT_X8R8G8B8
- D3DDDIFMT_A8R8G8B8
Video presenta l'inizializzazione di destinazione
Il KMD deve impostare il DisplayInfo->membro TargetId sull'identificatore di destinazione della visualizzazione che rimane attiva. In genere, questo identificatore sarà il valore del parametro TargetId passato al driver.
Analogamente, il KMD deve impostare il DisplayInfo->membro AcpiId sull'identificatore ACPI della visualizzazione che rimane attiva.
Passaggi richiesti dal KmD
Il KMD deve seguire questi passaggi quando viene chiamata la funzione DxgkDdiStopDeviceAndReleasePostDisplayOwnership:
Arrestare il dispositivo di visualizzazione associato alla destinazione del video indicato dal parametro TargetId, ma deve mantenere lo schermo associato a questa destinazione acceso e visibile.
Controllare la connettività della visualizzazione associata a questa destinazione. Se la destinazione non dispone di una visualizzazione connessa, il KMD deve completare la chiamata a questa funzione e restituire il codice di errore STATUS_NOT_SUPPORTED.
Disabilitare il segnale a tutti gli altri schermi connessi alla scheda di visualizzazione. Se non è possibile, il driver deve tentare di inserire un'immagine vuota in tutti gli altri schermi. Se non è possibile, il driver deve lasciare invariata l'ultima immagine sullo schermo.
Mantenere la modalità di visualizzazione corrente sulla destinazione indicata e restituire questa modalità al sistema operativo come parte di questa chiamata di funzione.
Se il driver non riesce a mantenere la modalità di visualizzazione corrente o se la destinazione non fa parte della topologia attiva, il driver deve selezionare una destinazione attiva alternativa e tentare di mantenere la risoluzione corrente di tale destinazione. Se ciò non è possibile, il driver deve tentare di impostare la visualizzazione sulla risoluzione nativa o su una modalità ad alta risoluzione. In questo caso, la risoluzione dello schermo deve essere impostata su almeno 800 x 600 pixel in formati di colore D3DDDIFMT_R8G8B8 (24 bit per pixel) o D3DDDIFMT_X8R8G8B8 (32 bpp).
Se non è attiva alcuna destinazione, il driver deve tentare di abilitare una destinazione, preferibilmente il pannello interno, se disponibile.
Se possibile, il driver deve cancellare il buffer dei fotogrammi corrente e disabilitare il cursore hardware e tutte le sovrimpressioni di visualizzazione.
Se possibile, il driver deve impostare la gamma di rampe del dispositivo sui valori predefiniti.
Il driver deve impostare il buffer frame corrente in modo che sia in modalità lineare. Il driver esegue questa operazione usando l'intervallo swizzle predefinito o disabilitando la modalità swizzle.
Il driver deve rendere il buffer del frame corrente accessibile alla CPU eseguendo il mapping lineare del buffer di frame corrente nello spazio degli indirizzi della CPU.
Il driver deve garantire che la visibilità della destinazione indicata sia impostata su "enabled".
Dopo che il KMD esegue questi passaggi, deve restituire le impostazioni di visualizzazione correnti per il dispositivo. Il driver restituisce queste informazioni impostando i membri della struttura DXGK_DISPLAY_INFORMATION a cui fa riferimento il parametro DisplayInfo.
Dopo che il dispositivo è stato arrestato, queste informazioni di visualizzazione potrebbero essere usate dal driver di visualizzazione generico di Windows per gestire il dispositivo di visualizzazione.
Altri requisiti
Nei sistemi che supportano un'interfaccia UEFI (Unified Extensible Firmware Interface), non esiste un sistema di input/output (BIOS) di base VGA. Per supportare le operazioni di arresto PnP in questi sistemi, WDDM 1.2 e versioni successive fornisce il supporto per il sistema operativo per reimpostare il dispositivo POST e ottenere le informazioni di visualizzazione durante un'operazione di arresto PnP. Il sistema operativo esegue questa operazione chiamando la funzione dxgkDdiStopDeviceAndReleasePostDisplayOwnership del KMD.
Un'operazione di arresto PnP può verificarsi in risposta alle richieste da processi come Gestione dispositivi o durante un processo di aggiornamento del driver.
A partire da Windows 8, il sistema operativo chiama il driver DxgkDdiStopDeviceAndReleasePostDisplayOwnership funzione solo nel dispositivo POST durante un'operazione di arresto PnP.
È facoltativo chiamare DxgkCbAcquirePostDisplayOwnership. Tuttavia, il sistema operativo potrebbe comunque chiamare dxgkDdiStopDeviceAndReleasePostDisplayOwnership funzione indipendentemente dal fatto che il driver abbia effettuato una chiamata precedente a DxgkCbAcquirePostDisplayOwnership.
Se il driver completa correttamente una chiamata a questa funzione, il sistema operativo non chiamerà la funzione DxgkDdiStopDevice del KMD. Se il driver non riesce a completare una chiamata a questa funzione, il sistema operativo chiamerà DxgkDdiStopDevicee il comportamento del dispositivo sarà uguale a in Windows 7.
Nei sistemi solo UEFI, se il KMD non riesce una chiamata a questa funzione, viene visualizzata una schermata nera e il driver IHV non è installato. La soluzione alternativa a questo scenario è che l'utente riavvii il computer.
Per altre informazioni sull'uso di questa funzione negli scenari PnP, vedere Plug and Play (PnP) in WDDM 1.2 e versioni successive.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows 8 (WDDM 1.2) |
server minimo supportato | Windows Server 2012 |
piattaforma di destinazione | Desktop |
intestazione |
dispmprt.h |
IRQL | PASSIVE_LEVEL |