Partager via


SetDisplayConfig, fonction (winuser.h)

La fonction SetDisplayConfig modifie la topologie d’affichage, les modes source et cible en activant exclusivement les chemins d’accès spécifiés dans la session active.

Syntaxe

LONG SetDisplayConfig(
  [in]           UINT32                  numPathArrayElements,
  [in, optional] DISPLAYCONFIG_PATH_INFO *pathArray,
  [in]           UINT32                  numModeInfoArrayElements,
  [in, optional] DISPLAYCONFIG_MODE_INFO *modeInfoArray,
  [in]           UINT32                  flags
);

Paramètres

[in] numPathArrayElements

Nombre d’éléments dans pathArray.

[in, optional] pathArray

Tableau de tous les chemins d’affichage à définir. Seuls les chemins d’accès de ce tableau dont l’indicateur DISPLAYCONFIG_PATH_ACTIVE est défini dans le membre des indicateursde DISPLAYCONFIG_PATH_INFO sont définis. Ce paramètre peut être NULL. L’ordre dans lequel les chemins d’accès actifs apparaissent dans ce tableau détermine la priorité du chemin. Pour plus d’informations sur l’ordre de priorité des chemins d’accès, consultez Ordre de priorité du chemin.

[in] numModeInfoArrayElements

Nombre d’éléments en modeInfoArray.

[in, optional] modeInfoArray

Tableau d’informations sur les modes source et cible d’affichage (DISPLAYCONFIG_MODE_INFO) référencées par le membre modeInfoIdx de DISPLAYCONFIG_PATH_SOURCE_INFO et DISPLAYCONFIG_PATH_TARGET_INFO élément des informations de chemin d’accès de pathArray. Ce paramètre peut être NULL.

[in] flags

Or au niveau du bit des valeurs d’indicateur qui indique le comportement de cette fonction. Ce paramètre peut être l’une des valeurs suivantes ou une combinaison des valeurs suivantes : 0 n’est pas valide. Pour obtenir une description des combinaisons d’indicateurs valides, voir ci-dessous.

Valeur Signification
SDC_APPLY
0x00000080
La topologie, la source et le mode cible résultants sont définis.
SDC_NO_OPTIMIZATION
0x00000100
Modificateur de l’indicateur SDC_APPLY. Le mode de modification est alors forcé jusqu’au pilote pour chaque affichage actif.
SDC_USE_SUPPLIED_DISPLAY_CONFIG
0x00000020
Les informations de topologie, de source et de mode cible fournies dans les paramètres pathArray et modeInfoArray sont utilisées, au lieu de rechercher la configuration dans la base de données.
SDC_SAVE_TO_DATABASE
0x00000200
La topologie, le mode source et le mode cible résultants sont enregistrés dans la base de données.
SDC_VALIDATE
0x00000040
Le système teste les informations de topologie, de source et de mode cible demandées pour déterminer si elles peuvent être définies.
SDC_ALLOW_CHANGES
0x00000400
Si nécessaire, la fonction peut modifier les informations de mode source et cible spécifiées afin de créer un ensemble de chemins d’affichage fonctionnels.
SDC_TOPOLOGY_CLONE
0x00000002
L’appelant demande la dernière configuration de clone à partir de la base de données de persistance.
SDC_TOPOLOGY_EXTEND
0x00000004
L’appelant demande la dernière configuration étendue à partir de la base de données de persistance.
SDC_TOPOLOGY_INTERNAL
0x00000001
L’appelant demande la dernière configuration interne à partir de la base de données de persistance.
SDC_TOPOLOGY_EXTERNAL
0x00000008
L’appelant demande la dernière configuration externe de la base de données de persistance.
SDC_TOPOLOGY_SUPPLIED
0x00000010
L’appelant fournit les données de chemin d’accès afin que la fonction interroge uniquement la base de données de persistance pour rechercher et utiliser le mode source et cible.
SDC_USE_DATABASE_CURRENT
(SDC_TOPOLOGY_INTERNAL | SDC_TOPOLOGY_CLONE | SDC_TOPOLOGY_EXTEND | SDC_TOPOLOGY_EXTERNAL)
L’appelant demande une combinaison des quatre configurations SDC_TOPOLOGY_XXX. Cette valeur indique à l’API de définir la dernière configuration d’affichage connue pour les moniteurs connectés actuels.
SDC_PATH_PERSIST_IF_REQUIRED
0x00000800
Lorsque la fonction traite une requête SDC_TOPOLOGY_XXX, elle peut forcer la persistance du chemin sur une cible pour satisfaire la demande si nécessaire. Pour plus d’informations sur les autres indicateurs auxquels cet indicateur peut être combiné, consultez la liste suivante.
SDC_FORCE_MODE_ENUMERATION
0x00001000
L’appelant demande que le pilote ait la possibilité de mettre à jour la liste des modes GDI tandis que SetDisplayConfig définit la nouvelle configuration d’affichage. Cette valeur d’indicateur n’est valide que lorsque les valeurs d’indicateur SDC_USE_SUPPLIED_DISPLAY_CONFIG et SDC_APPLY sont également spécifiées.
SDC_ALLOW_PATH_ORDER_CHANGES
0x00002000
Modificateur de l’indicateur SDC_TOPOLOGY_SUPPLIED qui indique que SetDisplayConfig doit ignorer l’ordre de chemin de la topologie fournie lors de la recherche dans la base de données. Lorsque cet indicateur est défini, le jeu de topologies est la topologie la plus récente qui contient tous les chemins d’accès, quel que soit l’ordre du chemin.
SDC_VIRTUAL_MODE_AWARE
0x00008000
Modificateur de la SDC_USE_SUPPLIED_DISPLAY_CONFIG et SDC_TOPOLOGY_SUPPLIED indique que l’appelant a connaissance des modes virtuels. Prise en charge à partir de Windows 10.
SDC_VIRTUAL_REFRESH_RATE_AWARE
0x00020000
Modificateur de l’SDC_USE_SUPPLIED_DISPLAY_CONFIG et SDC_TOPOLOGY_SUPPLIED indique que l’appelant a connaissance des taux d’actualisation virtuelle. Prise en charge à partir de Windows 11.

La liste suivante contient des combinaisons de valeurs valides pour le paramètre Flags :

  • Vous devez définir SDC_APPLY ou SDC_VALIDATE, mais pas les deux.
  • Vous devez définir des SDC_USE_SUPPLIED_DISPLAY_CONFIG ou des combinaisons de SDC_TOPOLOGY_XXX. SDC_USE_SUPPLIED_DISPLAY_CONFIG ne peut pas être défini avec un indicateur de SDC_TOPOLOGY_XXX.
  • SDC_NO_OPTIMIZATION ne peut être défini qu’avec SDC_APPLY.
  • SDC_ALLOW_CHANGES est autorisé avec toute autre combinaison valide.
  • SDC_SAVE_TO_DATABASE ne peut être défini qu’avec SDC_USE_SUPPLIED_DISPLAY_CONFIG.
  • SDC_PATH_PERSIST_IF_REQUIRED ne peut pas être utilisé avec SDC_USE_SUPPLIED_DISPLAY_CONFIG ou SDC_TOPOLOGY_SUPPLIED.
  • SDC_FORCE_MODE_ENUMERATION est valide uniquement lorsque SDC_APPLY et SDC_USE_SUPPLIED_DISPLAY_CONFIG sont spécifiés.
  • SDC_ALLOW_PATH_ORDER_CHANGES est autorisé uniquement lorsque SDC_TOPOLOGY_SUPPLIED est spécifié.
  • SDC_TOPOLOGY_SUPPLIED ne peut pas être utilisé avec un autre indicateur de SDC_TOPOLOGY_XXX. En raison d’un problème de validation, si un appelant enfreint cette règle, SetDisplayConfig n’échoue pas. Toutefois, SetDisplayConfig ignore l’indicateur SDC_TOPOLOGY_SUPPLIED.
SDC_TOPOLOGY_XXX indicateurs peuvent être utilisés dans des combinaisons. Par exemple, si SDC_TOPOLOGY_CLONE et SDC_TOPOLOGY_EXTEND sont définis, l’API utilise la topologie de clonage ou d’extension la plus récente, avec laquelle chaque topologie a été définie le plus récemment pour les moniteurs connectés actuels.

Valeur retournée

La fonction retourne l’un des codes de retour suivants.

Code de retour Description
ERROR_SUCCESS
La fonction a réussi.
ERROR_INVALID_PARAMETER
La combinaison de paramètres et d’indicateurs spécifiée n’est pas valide.
ERROR_NOT_SUPPORTED
Le système n’exécute pas de pilote graphique qui a été écrit selon le modèle WDDM (Windows Display Driver Model). La fonction est uniquement prise en charge sur un système sur lequel un pilote WDDM est en cours d’exécution.
ERROR_ACCESS_DENIED
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.
ERROR_GEN_FAILURE
Une erreur non spécifiée s'est produite.
ERROR_BAD_CONFIGURATION
La fonction n’a pas pu trouver de solution utilisable pour les modes source et cible que l’appelant n’a pas spécifiés.

Remarques

La fonction SetDisplayConfig prend les chemins d’affichage actifs avec toutes les informations de mode source et cible spécifiées, et utilise la logique de mode optimale pour générer les informations manquantes en mode source et cible. Cette fonction définit ensuite le chemin d’affichage complet.

Les membres ModeInfoIdx dans les structures DISPLAYCONFIG_PATH_SOURCE_INFO et DISPLAYCONFIG_PATH_TARGET_INFO sont utilisés pour indiquer si le mode source et le mode cible sont fournis pour un chemin actif donné. Si la valeur d’index est DISPLAYCONFIG_PATH_MODE_IDX_INVALID pour l’une ou l’autre, cela indique que les informations de mode ne sont pas spécifiées. Il est valide pour le chemin d’accès plus le mode source ou le chemin plus les informations de mode source et cible à spécifier pour un chemin d’accès donné. Toutefois, il n’est pas valide que le chemin d’accès et le mode cible soient spécifiés sans le mode source.

Les modes source et cible pour chaque identificateur source et cible ne peuvent apparaître dans le tableau modeInfoArray qu’une seule fois. Par exemple, un mode source pour l’identificateur source S1 ne peut apparaître dans la table qu’une seule fois ; si plusieurs chemins font référence à la même source, ils doivent utiliser le même ModeInfoIdx.

La plupart des appelants utilisent QueryDisplayConfig pour obtenir la configuration actuelle ainsi que d’autres possibilités valides, puis utilisent SetDisplayConfig pour tester et définir la configuration.

L’ordre dans lequel les chemins actifs apparaissent dans le tableau PathArray détermine la priorité du chemin.

Par défaut, SetDisplayConfig ne modifie jamais les informations fournies sur le chemin d’accès, le mode source ou le mode cible. Si la logique du mode optimal ne peut pas trouver de solution sans modifier les informations de chemin d’affichage spécifiées, SetDisplayConfig échoue avec ERROR_BAD_CONFIGURATION. Dans ce cas, l’appelant doit spécifier l’indicateur SDC_ALLOW_CHANGES pour permettre à la fonction d’ajuster certains des détails de la source et du mode spécifiés pour permettre au changement de chemin d’affichage de réussir.

Si les modes source et cible spécifiés ou calculés ont les mêmes dimensions, SetDisplayConfig définit automatiquement la mise à l’échelle du chemin sur DISPLAYCONFIG_PPR_IDENTITY avant de définir le chemin d’affichage et de l’enregistrer dans la base de données. Pour plus d’informations sur la façon dont SetDisplayConfig gère la mise à l’échelle, consultez Mise à l’échelle de l’image de bureau.

Lorsque l’appelant spécifie l’indicateur SDC_USE_SUPPLIED_DISPLAY_CONFIG pour définir un chemin d’accès au clone et si des index en mode source ne sont pas valides dans le tableau de chemins, SetDisplayConfig détermine que tous les index du mode source de cette source ne sont pas valides. SetDisplayConfig utilise la logique de mode optimale pour déterminer les informations sur le mode source.

À l’exception de l’indicateur SDC_TOPOLOGY_SUPPLIED (pour plus d’informations sur SDC_TOPOLOGY_SUPPLIED, voir le paragraphe suivant), les indicateurs SDC_TOPOLOGY_XXX définissent les derniers paramètres de chemin d’affichage, y compris les informations de mode source et cible pour ce type de topologie. Pour plus d’informations sur les combinaisons d’indicateurs de SDC_TOPOLOGY_XXX valides, consultez la description du paramètre Indicateurs . Les paramètres pathArray et modeInfoArray doivent être NULL et leurs tailles associées doivent être égales à zéro. Par exemple, si SDC_TOPOLOGY_CLONE et SDC_TOPOLOGY_EXTEND sont définis, cette fonction utilise la configuration de clone ou d’extension de chemin d’affichage la plus récente. Si un type de topologie unique est demandé, la dernière configuration de ce type est utilisée. Si cette topologie n’avait jamais été définie auparavant, SetDisplayConfig utilise la meilleure logique de topologie pour trouver la meilleure topologie, puis la meilleure logique de mode pour trouver le meilleur mode source et cible à utiliser. Si une combinaison des indicateurs de topologie avait été définie et qu’aucun d’entre eux n’avait d’entrées de base de données, la priorité suivante est utilisée. Pour les ordinateurs portables : cloner, étendre, interne, puis externe ; pour les bureaux, la priorité est d’étendre, puis de cloner.

L’appelant peut spécifier l’indicateur de SDC_TOPOLOGY_SUPPLIED pour indiquer qu’il définit uniquement les informations de chemin d’accès (topologie) et demande que SetDisplayConfig obtient, puis utilise les informations de mode source et cible de la base de données de persistance. Si les chemins d’accès actifs que l’appelant fournit n’ont pas d’entrée dans la base de données de persistance, SetDisplayConfig échoue. Dans ce cas, si l’appelant appelle à nouveau SetDisplayConfig avec les mêmes données de chemin d’accès, mais avec l’indicateur SDC_USE_SUPPLIED_DISPLAY_CONFIG défini, SetDisplayConfig utilise la logique de mode optimale pour créer les informations de mode source et cible. Lorsque l’appelant spécifie SDC_TOPOLOGY_SUPPLIED, l’appelant doit définir le paramètre numModeInfoArrayElements sur zéro et le paramètre modeInfoArray sur NULL ; Toutefois, l’appelant doit définir les paramètres pathArray et numPathArrayElements pour les informations de chemin dont l’appelant a besoin. L’appelant doit marquer tous les index du mode source et cible comme non valides (DISPLAYCONFIG_PATH_MODE_IDX_INVALID) dans ces données de chemin d’accès.

Le tableau suivant fournit quelques scénarios courants où SetDisplayConfig est appelé avec les combinaisons d’indicateurs que l’appelant transmet au paramètre Flags pour réaliser les scénarios.

Scénario Combinaison d’indicateurs
Tester si une configuration d’affichage spécifiée est prise en charge sur l’ordinateur SDC_VALIDATE | SDC_USE_SUPPLIED_DISPLAY_CONFIG
Définir une configuration d’affichage spécifiée et enregistrer dans la base de données SDC_APPLY | SDC_USE_SUPPLIED_DISPLAY_CONFIG | SDC_SAVE_TO_DATABASE
Définir une configuration d’affichage temporaire (autrement dit, la configuration d’affichage ne sera pas enregistrée) SDC_APPLY | SDC_USE_SUPPLIED_DISPLAY_CONFIG
Tester si le clonage est pris en charge sur l’ordinateur SDC_VALIDATE | SDC_TOPOLOGY_CLONE
Définir la topologie de clonage SDC_APPLY | SDC_TOPOLOGY_CLONE
Définir la topologie de clonage et autoriser l’activation de la persistance du chemin d’accès si nécessaire pour répondre à la demande SDC_APPLY | SDC_TOPOLOGY_CLONE | SDC_PATH_PERSIST_IF_REQUIRED
Revenir d’un mode temporaire à la dernière configuration d’affichage enregistrée SDC_APPLY| SDC_USE_DATABASE_CURRENT
Étant donné uniquement les informations de chemin d’accès, définissez la configuration d’affichage avec les informations source et cible de la base de données pour les chemins et ignorez l’ordre du chemin d’accès SDC_APPLY | SDC_TOPOLOGY_SUPPLIED | SDC_ALLOW_PATH_ORDER_CHANGES
 

Virtualisation PPP

Cette API ne participe pas à la virtualisation PPP. Toutes les tailles de la structure DEVMODE sont en termes de pixels physiques et ne sont pas liées au contexte appelant.

Spécifications

   
Client minimal pris en charge Disponible dans Windows 7 et versions ultérieures des systèmes d’exploitation Windows.
Plateforme cible Universal
En-tête winuser.h (inclure Windows.h)
Bibliothèque User32.lib
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_MODE_INFO

DISPLAYCONFIG_PATH_INFO

DISPLAYCONFIG_PATH_SOURCE_INFO

DISPLAYCONFIG_PATH_TARGET_INFO

QueryDisplayConfig