Bibliothèques génériques Windows

Important

Les informations contenues dans cette rubrique s’appliquent à toutes les versions de Windows 10 et ultérieures. Nous allons faire référence à ces versions ici en tant que « Windows », en appelant toutes les exceptions si nécessaire.

Une bibliothèque parapluie est une bibliothèque unique que vous liez, qui couvre un sous-ensemble sélectionné d’API Win32. Par exemple, une bibliothèque parapluie nommée OneCore.lib couvre le sous-ensemble d’API Win32 communes à tous les appareils Windows.

Les API d’une bibliothèque parapluie peuvent être implémentées sur une plage de modules (où un module est un ensemble d’API ou une DLL). Toutefois, la bibliothèque parapluie extrait ces détails, ce qui rend votre application plus portable dans les versions du système d’exploitation. Dans votre application de bureau ou pilote, liez la bibliothèque parapluie qui couvre l’ensemble d’API qui vous intéressent, et c’est tout ce que vous devez faire.

Présentation d’une bibliothèque parapluie

Une bibliothèque parapluie couvre un sous-ensemble d’API sélectionné . Il ne s’agit pas d’un index complet de chaque API de chaque module à partir duquel elle est extraite, et une API donnée n’est pas nécessairement présente dans chaque bibliothèque parapluie.

L’ensemble des API prises en charge par une bibliothèque dépend également de la version du SDK Windows avec laquelle vous compilez. Un sdk ultérieur peut ajouter une couverture qu’une version antérieure n’a pas.

Pour ces deux raisons, traitez la page de référence d’une API individuelle comme l’autorité sur laquelle la bibliothèque doit lier. La table Configuration requise de cette page nomme la bibliothèque pour cette API.

Bibliothèques disponibles

Bibliothèque Description
OneCore.lib Couvre le sous-ensemble des API Win32 communes à tous les appareils Windows. Liez OneCore.lib (et aucune autre bibliothèque parapluie Win32) pour accéder à ces API. Si vous liezOneCore.lib, et que vous appelez uniquement des API Win32 qu’il couvre, votre application de bureau ou votre pilote se charge correctement sur tous les appareils Windows.
OneCore_apiset.lib Variante de l’ensemble d’API de OneCore.lib. Lorsqu’un nom d’ensemble d’API est disponible pour une API, il se résout par le biais d’une importation directe d’un jeu d’API. Par conséquent, aucun module de redirecteur intermédiaire n’est impliqué au moment du chargement. Un binaire qui y est lié n'est pas garanti de fonctionner tel quel sur des versions de Windows antérieures aux versions qui incluent les ensembles d’API qu’il importe.
OneCoreUAP.lib Couvre le sous-ensemble des API Win32 communes à tous les appareils Windows qui prennent en charge le Windows Runtime (WinRT). Liez OneCoreUAP.lib (et aucune autre bibliothèque parapluie Win32) pour accéder à ces API. Si vous liezOneCoreUAP.lib, et que vous appelez uniquement des API Win32 qu’il couvre, votre application de bureau ou pilote se charge correctement sur tous les appareils Windows qui prennent en charge WinRT.
OneCoreUAP_apiset.lib Variante de l’ensemble d’API de OneCoreUAP.lib. Lorsqu’un nom d’ensemble d’API est disponible pour une API, il se résout par le biais d’une importation directe d’un jeu d’API. Par conséquent, aucun module de redirecteur intermédiaire n’est impliqué au moment du chargement. Un binaire qui y est lié n’est pas garanti de fonctionner tel quel sur les versions de Windows publiées avant les ensembles d’API qu’il importe.

Ne combinez pas deux de ces bibliothèques dans un fichier binaire. Chacun d’eux existe pour limiter votre binaire à une surface d’API particulière, et la liaison d’une deuxième bibliothèque peut vous lier aux API en dehors de cette surface.

Choix entre une bibliothèque et sa variante d’ensemble d’API

Pour une API couvrant les deux variantes, les deux atteignent la même implémentation au moment de l’exécution. Ce qui diffère, c’est le nom qui se retrouve dans la table d’importation de votre binaire, et donc l’éventail des versions de Windows avec lesquelles le binaire peut s’exécuter.

  • Liez la bibliothèque simple (OneCore.lib, OneCoreUAP.lib) lorsque vous avez besoin d’un binaire unique qui s’exécute également sur des versions de Windows publiées avant que les ensembles d’API pertinents n’existaient. Il importe les noms de modules hérités Windows et le transfert inverse redirige ces importations sur les éditions qui ne contiennent plus les modules d’origine.
  • Liez la variante de l'ensemble d’API (OneCore_apiset.lib, OneCoreUAP_apiset.lib) si votre binaire cible les versions actuelles de Windows. Il préfère un nom d’ensemble d’API où qu’il soit disponible pour l’API, afin que l’importation soit résolue directement vers le binaire qui héberge l’implémentation, sans transfert entre deux. C’est la forme la plus efficace. Lorsqu’aucun nom d’ensemble d’API n’est applicable, il utilise le nom du module, comme le fait la bibliothèque standard.

Aucun des choix ne modifie les API que vous pouvez appeler. Il modifie la façon dont vos importations sont nommées, et jusqu’à quel point votre fichier binaire peut s’exécuter.

Voir aussi