Condividi tramite


DXGKDDI_STOP_DEVICE_AND_RELEASE_POST_DISPLAY_OWNERSHIP funzione di callback (dispmprt.h)

Chiamato dal sistema operativo per richiedere al driver miniport visualizzato di reimpostare il dispositivo visualizzato e rilasciare la proprietà del dispositivo auto-test corrente (POST).

A partire da Windows 8, 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 funzione DxgkDdiQueryAdapterInfo .

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 a un blocco di contesto associato a una scheda di visualizzazione. La funzione DxgkDdiAddDevice del driver di visualizzazione ha precedentemente fornito questo handle al sottosistema kernel della grafica Microsoft DirectX.

[in] TargetId

Valore D3DDDI_VIDEO_PRESENT_TARGET_ID che specifica l'identificatore del video presente nella scheda di visualizzazione a cui è connesso il dispositivo visualizzato. Questo identificatore potrebbe essere per la destinazione che è stata lasciata nello stato corrente della rete video presente (VidPN) durante la chiamata precedente a DxgkDdiCommitVidPn.

Per altre informazioni sull'uso del parametro TargetId , vedere la sezione Osservazioni seguenti.

[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 ulteriori informazioni, vedere la sezione Osservazioni successiva.

Commenti

Formati di colore consentiti

Il driver miniport visualizzato deve segnalare solo un formato di colore a 32 bit. Pertanto, il membro DisplayInfo->ColorFormat deve includere solo uno dei due formati seguenti:
  • D3DDDIFMT_X8R8G8B8
  • D3DDDIFMT_A8R8G8B8

Video presenta l'inizializzazione di destinazione

Il driver miniport visualizzato deve impostare il membro DisplayInfo->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 driver miniport visualizzato deve impostare il membro DisplayInfo-AcpiId> sull'identificatore ACPI della visualizzazione che rimane attiva.

Passaggi necessari per visualizzare il driver miniport

Il driver miniport visualizzato deve seguire questa procedura quando viene chiamata la funzione DxgkDdiStopDeviceAndReleasePostDisplayOwnership :
  1. Il driver deve arrestare il dispositivo di visualizzazione associato alla destinazione del video presente indicato dal parametro TargetId , ma deve mantenere lo schermo associato a questa destinazione attivata e visibile.
  2. Il driver deve controllare la connettività del display associato a questa destinazione. Se la destinazione non ha una visualizzazione connessa, il driver deve completare la chiamata a questa funzione e restituire il codice di errore STATUS_NOT_SUPPORTED .
  3. Il driver deve disabilitare il segnale a tutti gli altri display connessi alla scheda di visualizzazione. Se non è possibile, il driver deve tentare di inserire un'immagine vuota in tutte le altre visualizzazioni. Se non è possibile, il driver deve lasciare invariata l'ultima immagine sullo schermo.
  4. Il driver deve mantenere la modalità di visualizzazione corrente nella destinazione indicata e fornire questa modalità al sistema operativo come parte di questa chiamata di funzione.
  5. 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 non è possibile, il driver deve tentare di impostare la visualizzazione sulla relativa risoluzione nativa o su una modalità a risoluzione elevata. In questo caso, la risoluzione dello schermo deve essere impostata su almeno 800 x 600 pixel in D3DDDIFMT_R8G8B8 (24 bit per pixel) o D3DDDIFMT_X8R8G8B8 (32 bpp) dei formati di colore dell'enumerazione D3DDDIFORMAT.
  6. Se non è attiva alcuna destinazione, il driver deve tentare di abilitare una destinazione, preferibilmente il pannello interno, se disponibile.
  7. Se possibile, il driver deve cancellare il buffer del frame corrente e disabilitare il cursore hardware e tutte le sovrapposizioni di visualizzazione.
  8. Se possibile, il driver deve impostare la rampa gamma del dispositivo sui relativi valori predefiniti.
  9. Il driver deve impostare il buffer del frame corrente in modo lineare. Il driver esegue questa operazione usando l'intervallo swizzle predefinito o disabilitando la modalità swizzle.
  10. Il driver deve rendere accessibile il buffer di frame corrente alla CPU eseguendo il mapping lineare del buffer di frame corrente nello spazio degli indirizzi della CPU.
  11. Il driver deve assicurarsi che la visibilità della destinazione indicata sia impostata su "abilitato".
Dopo aver eseguito questi passaggi, il driver miniport visualizzato 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 .
Nota 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 l'interfaccia UEFI (Unified Extensible Firmware Interface), non esiste un sistema di input/output VGA (BIOS). Per supportare operazioni di arresto PnP su questi sistemi, Windows Display Driver Model (WDDM) 1.2 e versioni successive fornisce il supporto per il sistema operativo per reimpostare il dispositivo POST e ottenere le relative informazioni di visualizzazione durante un'operazione di arresto PnP. Il sistema operativo esegue questa operazione chiamando la funzione DxgkDdiStopDeviceAndReleasePostDisplayOwnership del driver di visualizzazione.

Un'operazione di arresto PnP può verificarsi in risposta alle richieste da processi come la Gestione dispositivi o durante un processo di aggiornamento del driver.

A partire da Windows 8, il sistema operativo chiama la funzione DxgkDdiStopDeviceAndReleasePostDisplayOwnership solo nel dispositivo POST durante un'operazione di arresto PnP.

Nota È facoltativo per il driver miniport visualizzato chiamare DxgkCbAcquirePostDisplayOwnership. Tuttavia, il sistema operativo potrebbe comunque chiamare la funzione DxgkDdiStopDeviceAndReleasePostDisplayOwnership del driver di dispositivo se il driver non ha chiamato in precedenza DxgkCbAcquirePostDisplayOwnership.
 
Se il driver completa correttamente una chiamata a questa funzione, il sistema operativo non chiamerà la funzione DxgkDdiStopDevice . Se il driver non riesce a completare una chiamata a questa funzione, il sistema operativo chiamerà la funzione DxgkDdiStopDevice e il comportamento del dispositivo sarà uguale a in Windows 7.

Nei sistemi di solo UEFI, se il driver miniport visualizzato non riesce una chiamata a questa funzione, viene visualizzata una schermata nera e il driver IHV non è installato. La soluzione alternativa a questo scenario è per l'utente di riavviare il computer.

Per altre informazioni su come questa funzione viene usata negli scenari PnP, vedere Plug and Play (PnP) in WDDM 1.2 e versioni successive.

Requisiti

Requisito Valore
Client minimo supportato Windows 8
Server minimo supportato Windows Server 2012
Piattaforma di destinazione Desktop
Intestazione dispmprt.h
IRQL PASSIVE_LEVEL

Vedi anche

DXGKRNL_INTERFACE

DXGK_DISPLAY_INFORMATION

DXGK_DRIVERCAPS

DxgkCbAcquirePostDisplayOwnership

DxgkDdiAddDevice

DxgkDdiQueryAdapterInfo

DxgkDdiStartDevice

DxgkDdiStopDevice