Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La fonction QueryDisplayConfig récupère des informations sur tous les chemins d’affichage possibles pour tous les appareils ou vues d’affichage dans le paramètre actuel.
Syntaxe
LONG QueryDisplayConfig(
[in] UINT32 flags,
[in, out] UINT32 *numPathArrayElements,
[out] DISPLAYCONFIG_PATH_INFO *pathArray,
[in, out] UINT32 *numModeInfoArrayElements,
[out] DISPLAYCONFIG_MODE_INFO *modeInfoArray,
[out, optional] DISPLAYCONFIG_TOPOLOGY_ID *currentTopologyId
);
Paramètres
[in] flags
Type d’informations à récupérer. La valeur du paramètre d’indicateurs doit utiliser l’une des valeurs suivantes.
Le paramètre d’indicateurs peut également être au niveau du bit OR’ed avec zéro ou plus des valeurs suivantes.
[in, out] numPathArrayElements
Pointeur vers une variable qui contient le nombre d’éléments dans pathArray. Ce paramètre ne peut pas être NULL. Si QueryDisplayConfig retourne ERROR_SUCCESS, numPathArrayElements est mis à jour avec le nombre d’entrées valides dans pathArray.
[out] pathArray
Pointeur vers une variable qui contient un tableau d’éléments DISPLAYCONFIG_PATH_INFO . Chaque élément de pathArray décrit un chemin d’accès unique d’une source à une cible. Les index d’informations en mode source et cible sont valides uniquement en combinaison avec les tables modeInfoArray retournées pour l’API en même temps. Ce paramètre ne peut pas être NULL. Le pathArray est toujours retourné dans l’ordre de priorité du chemin. Pour plus d’informations sur l’ordre de priorité du chemin d’accès, consultez Ordre de priorité de chemin.
[in, out] numModeInfoArrayElements
Pointeur vers une variable qui spécifie le nombre dans l’élément de la table d’informations en mode. Ce paramètre ne peut pas être NULL. Si QueryDisplayConfig retourne ERROR_SUCCESS, numModeInfoArrayElements est mis à jour avec le nombre d’entrées valides dans modeInfoArray.
[out] modeInfoArray
Pointeur vers une variable qui contient un tableau d’éléments DISPLAYCONFIG_MODE_INFO . Ce paramètre ne peut pas être NULL.
[out, optional] currentTopologyId
Pointeur vers une variable qui reçoit l’identificateur de la topologie actuellement active dans la base de données DUTC. Pour obtenir la liste des valeurs possibles, consultez la DISPLAYCONFIG_TOPOLOGY_ID type énuméré.
Le paramètre currentTopologyId est défini uniquement lorsque la valeur du paramètre d’indicateur est QDC_DATABASE_CURRENT.
Si la valeur du paramètre d’indicateur est définie sur QDC_DATABASE_CURRENT, le paramètre currentTopologyId ne doit pas être NULL. Si la valeur du paramètre indicateurs n’est pas définie sur QDC_DATABASE_CURRENT, la valeur du paramètre currentTopologyId doit être NULL.
Valeur renvoyée
La fonction retourne l’un des codes de retour suivants.
| Code de retour | Description |
|---|---|
|
La fonction a réussi. |
|
La combinaison de paramètres et d’indicateurs spécifiés n’est pas valide. |
|
Le système n’exécute pas de pilote graphique qui a été écrit conformément à la Windows Display Driver Model (WDDM). La fonction est uniquement prise en charge sur un système avec un pilote WDDM en cours d’exécution. |
|
L’appelant n’a pas accès à la session de console. Cette erreur se produit si le processus appelant n’a pas accès au bureau actuel ou s’exécute sur une session à distance. |
|
Une erreur non spécifiée s’est produite. |
|
Le chemin d’accès et la mémoire tampon de mode fournis sont trop petits. |
Remarques
Comme la fonction GetDisplayConfigBufferSizes ne peut déterminer que la taille de tableau requise à un moment donné dans le temps, il est possible qu’entre les appels à GetDisplayConfigBufferSizes et QueryDisplayConfig , la configuration système change et les tailles de tableau fournies ne seront plus suffisantes pour stocker les nouvelles données de chemin d’accès. Dans ce cas, QueryDisplayConfig échoue avec ERROR_INSUFFICIENT_BUFFER, et l’appelant doit appeler De nouveau GetDisplayConfigBufferSizes pour obtenir les nouvelles tailles de tableau. L’appelant doit ensuite allouer la quantité de mémoire correcte.
QueryDisplayConfig retourne des chemins dans le tableau de chemins spécifié par le paramètre pathArray et les modes source et cible dans le tableau de modes spécifiés par le paramètre modeInfoArray . QueryDisplayConfig retourne toujours les chemins d’accès dans l’ordre de priorité du chemin. Si QDC_ALL_PATHS est défini dans le paramètre d’indicateurs , QueryDisplayConfig retourne tous les chemins inactifs après les chemins actifs.
Les informations de chemin d’accès complet, de mode source et de mode cible sont disponibles pour tous les chemins actifs. Les membres ModeInfoIdx dans les structures DISPLAYCONFIG_PATH_SOURCE_INFO et DISPLAYCONFIG_PATH_TARGET_INFO pour la source et la cible sont configurés pour ces chemins actifs. Pour les chemins inactifs, les informations en mode source et cible retournées ne sont pas disponibles ; par conséquent, les informations cibles de la structure de chemin d’accès sont définies sur les valeurs par défaut, et les index du mode source et cible sont marqués comme non valides. Pour les requêtes de base de données, si les moniteurs de connexion actuels ont une entrée, QueryDisplayConfig retourne le chemin d’accès complet, le mode source et les informations en mode cible (identiques aux chemins actifs). Toutefois, si la base de données n’a pas d’entrée, QueryDisplayConfig retourne uniquement les informations de chemin d’accès avec les détails de la cible par défaut (identiques aux chemins inactifs).
Pour obtenir un exemple de relation entre les informations relatives au mode source et cible aux informations de chemin d’accès, consultez Relation des informations de mode aux informations de chemin d’accès.
L’appelant peut utiliser DisplayConfigGetDeviceInfo pour obtenir des informations supplémentaires sur l’appareil source ou cible, par exemple, les noms de moniteur et le mode préféré et le nom de l’appareil source.
Si une cible est actuellement projetée, le membre statusFlags de la structure DISPLAYCONFIG_PATH_TARGET_INFO a l’un des indicateurs DISPLAYCONFIG_TARGET_FORCED_XXX définis.
Si l’indicateur QDC_DATABASE_CURRENT est défini dans le paramètre Flags , QueryDisplayConfig retourne l’identificateur de topologie de la topologie de base de données active dans la variable vers laquelle pointe le paramètre CurrentTopologyId . Si l’indicateur QDC_ALL_PATHS ou QDC_ONLY_ACTIVE_PATHS est défini dans le paramètre Flags , le paramètre currentTopologyId doit être défini sur NULL ; sinon, QueryDisplayConfig retourne ERROR_INVALID_PARAMETER.
Si un appelant appelle QueryDisplayConfig avec l’indicateur QDC_DATABASE_CURRENT défini dans le paramètre d’indicateurs , QueryDisplayConfig initialise la structure DISPLAYCONFIG_2DREGION spécifiée dans le membre totalSize de la structure DISPLAYCONFIG_VIDEO_SIGNAL_INFO sur zéros et ne termine pas DISPLAYCONFIG_2DREGION.
La structure DEVMODE retournée par la fonction EnumDisplaySettings Win32 (décrite dans la documentation Windows SDK) contient des informations relatives aux modes source et cible. Toutefois, les API CCD séparent explicitement les composants du mode source et cible.
Moniteurs montés sur la tête et spécialisés
QueryDisplayConfig et de nombreuses autres API d’affichage Win32 ont une connaissance limitée des moniteurs montés en tête et spécialisés, car ces affichages ne participent pas à l’environnement de bureau Windows. Toutefois, il existe des scénarios où il est nécessaire de comprendre la connectivité de ces affichages (par exemple, les scénarios de protection du contenu). Pour ces scénarios limités, (QDC_INCLUDE_HMD | QDC_ONLY_ACTIVE_PATHS) vous pouvez l’utiliser pour découvrir la connectivité des affichages montés sur la tête. Ces chemins d’accès sont marqués avec l’indicateur DISPLAYCONFIG_TARGET_IS_HMD dans le champ DISPLAYCONFIG_PATH_TARGET_INFO.statusFlags . Cette prise en charge a été ajoutée dans la Windows 10 1703 Creators Update.
Virtualisation DPI
Cette API ne participe pas à la virtualisation DPI. Toutes les tailles de la structure DEVMODE sont en termes de pixels physiques et ne sont pas liées au contexte appelant.
Exemples
L’exemple suivant énumère les chemins d’affichage actifs avec QueryDisplayConfig et GetDisplayConfigBufferSizes et imprime les données pour chaque chemin à l’aide de DisplayConfigGetDeviceInfo.
#include <windows.h>
#include <vector>
#include <iostream>
#include <string>
using namespace std;
int main()
{
vector<DISPLAYCONFIG_PATH_INFO> paths;
vector<DISPLAYCONFIG_MODE_INFO> modes;
UINT32 flags = QDC_ONLY_ACTIVE_PATHS | QDC_VIRTUAL_MODE_AWARE;
LONG result = ERROR_SUCCESS;
do
{
// Determine how many path and mode structures to allocate
UINT32 pathCount, modeCount;
result = GetDisplayConfigBufferSizes(flags, &pathCount, &modeCount);
if (result != ERROR_SUCCESS)
{
return HRESULT_FROM_WIN32(result);
}
// Allocate the path and mode arrays
paths.resize(pathCount);
modes.resize(modeCount);
// Get all active paths and their modes
result = QueryDisplayConfig(flags, &pathCount, paths.data(), &modeCount, modes.data(), nullptr);
// The function may have returned fewer paths/modes than estimated
paths.resize(pathCount);
modes.resize(modeCount);
// It's possible that between the call to GetDisplayConfigBufferSizes and QueryDisplayConfig
// that the display state changed, so loop on the case of ERROR_INSUFFICIENT_BUFFER.
} while (result == ERROR_INSUFFICIENT_BUFFER);
if (result != ERROR_SUCCESS)
{
return HRESULT_FROM_WIN32(result);
}
// For each active path
for (auto& path : paths)
{
// Find the target (monitor) friendly name
DISPLAYCONFIG_TARGET_DEVICE_NAME targetName = {};
targetName.header.adapterId = path.targetInfo.adapterId;
targetName.header.id = path.targetInfo.id;
targetName.header.type = DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_NAME;
targetName.header.size = sizeof(targetName);
result = DisplayConfigGetDeviceInfo(&targetName.header);
if (result != ERROR_SUCCESS)
{
return HRESULT_FROM_WIN32(result);
}
// Find the adapter device name
DISPLAYCONFIG_ADAPTER_NAME adapterName = {};
adapterName.header.adapterId = path.targetInfo.adapterId;
adapterName.header.type = DISPLAYCONFIG_DEVICE_INFO_GET_ADAPTER_NAME;
adapterName.header.size = sizeof(adapterName);
result = DisplayConfigGetDeviceInfo(&adapterName.header);
if (result != ERROR_SUCCESS)
{
return HRESULT_FROM_WIN32(result);
}
wcout
<< L"Monitor with name "
<< (targetName.flags.friendlyNameFromEdid ? targetName.monitorFriendlyDeviceName : L"Unknown")
<< L" is connected to adapter "
<< adapterName.adapterDevicePath
<< L" on target "
<< path.targetInfo.id
<< L"\n";
}
}
Exigences
| Requirement | Valeur |
|---|---|
| Client minimum requis | Disponible dans Windows 7 et versions ultérieures des systèmes d’exploitation Windows. |
| plateforme cible | Universal |
| En-tête | winuser.h (include Windows.h) |
| Bibliothèque | User32.lib ; OneCoreUAP.lib sur Windows 10 |
| DLL | User32.dll |
| Ensemble d’API | ext-ms-win-ntuser-sysparams-ext-l1-1-1 (introduit dans Windows 10, version 10.0.14393) |
Voir aussi
DISPLAYCONFIG_PATH_SOURCE_INFO