DXGKDDI_QUERY_DEVICE_DESCRIPTOR funzione di callback (dispmprt.h)
La funzione DxgkDdiQueryDeviceDescriptor restituisce un descrittore per un dispositivo figlio di una scheda di visualizzazione o per un dispositivo esterno (in genere un monitor) connesso a un dispositivo figlio di una scheda di visualizzazione.
Sintassi
DXGKDDI_QUERY_DEVICE_DESCRIPTOR DxgkddiQueryDeviceDescriptor;
NTSTATUS DxgkddiQueryDeviceDescriptor(
[in] IN_CONST_PVOID MiniportDeviceContext,
[in] IN_ULONG ChildUid,
[in, out] INOUT_PDXGK_DEVICE_DESCRIPTOR DeviceDescriptor
)
{...}
Parametri
[in] MiniportDeviceContext
Handle per un blocco di contesto associato a una scheda di visualizzazione. La funzione DxgkDdiAddDevice del driver miniport di visualizzazione ha fornito in precedenza questo handle al sottosistema del kernel grafico DirectX.
[in] ChildUid
Intero che identifica in modo univoco il dispositivo figlio. Il driver miniport di visualizzazione DxgkDdiQueryChildRelations funzione precedentemente fornito questo identificatore al driver della porta di visualizzazione.
[in, out] DeviceDescriptor
Puntatore a una struttura DXGK_DEVICE_DESCRIPTOR. Il chiamante inizializza i membri DescriptorLength e DescriptorBuffer. Se il dispositivo figlio ha un tipo di TypeVideoOutput, il chiamante inizializza anche il membro DescriptorOffset. In caso di restituzione, il buffer allocato dal chiamante a cui punta il DescrittoreBuffer membro riceve il descrittore.
Valore restituito
DxgkDdiQueryDeviceDescriptor restituisce uno dei valori seguenti:
codice restituito | Descrizione |
---|---|
STATUS_SUCCESS | La funzione ha restituito correttamente il descrittore del dispositivo. |
STATUS_GRAPHICS_CHILD_DESCRIPTOR_NOT_SUPPORTED | Il dispositivo figlio (onboarding) identificato da ChildUid non supporta un descrittore. |
STATUS_MONITOR_NO_DESCRIPTOR | Il dispositivo figlio identificato da ChildUid è connesso a un monitor che non supporta un descrittore EDID. |
STATUS_MONITOR_NO_MORE_DESCRIPTOR_DATA | Il dispositivo figlio identificato da ChildUid è connesso a un monitor che supporta un descrittore EDID, ma il descrittore non dispone del blocco di estensione EDID specificato dal descrittoreOffset e DescriptorLengthmembers di DeviceDescriptor. |
Osservazioni
DxgkDdiQueryDeviceDescriptor non deve mai scrivere più del numero di byte specificato da DeviceDescriptor ->DescriptorLength.
Se il dispositivo figlio identificato da ChildUid ha un tipo di TypeVideoOutput, DxgkDdiQueryDeviceDescriptor restituisce una parte dei dati EDID (Extended Display Identification Data) per il monitor connesso all'output. DeviceDescriptor->DescriptorOffset specifica l'offset dei byte nell'EDID dell'inizio dei dati da restituire.
Se il dispositivo figlio identificato da childUid non è un output video, DxgkDdiQueryDeviceDescriptor restituisce un descrittore di dispositivo generico; ovvero riempie i membri di una struttura DXGK_GENERIC_DESCRIPTOR.
La funzione dxgkDdiQueryDeviceDescriptor può essere chiamata più volte per un dispositivo figlio. Per un dispositivo figlio con un monitor connesso, il driver della porta di visualizzazione chiama DxgkDdiQueryDeviceDescriptor durante l'inizializzazione per ottenere il primo blocco a 128 byte dell'EDID di un monitor. Successivamente, il driver della funzione di classe monitor (Monitor.sys) chiama DxgkDdiQueryDeviceDescriptor per ottenere parti selezionate (incluso il primo blocco a 128 byte) dell'EDID dello stesso monitor.
dxgkDdiQueryDeviceDescriptor deve essere reso pageable.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows Vista |
piattaforma di destinazione | Desktop |
intestazione | dispmprt.h |
IRQL | PASSIVE_LEVEL |