Windows API

Un article de Wikipédia, l'encyclopédie libre.

Windows API ou WinAPI est le nom donné par Microsoft à l'Interface de programmation (API) sur les systèmes d'exploitation Microsoft Windows. Elle est conçue pour les langages de programmation C et C++ et est la manière la plus directe pour une application d'interagir avec le système d'exploitation Windows.

Un kit de développement (SDK) est disponible pour Windows qui fournit la documentation et les outils pour permettre aux developpeurs de créér des logiciels en utilisant cette API et les technologies associées.

Sommaire

[modifier] Composant de Windows API

Les fonctionnalités fournies par Windows API peuvent être rangées dans sept catégories :

[modifier] Services de base

Donne accès aux ressources fondamentales du système disponibles sous Windows. Exemples : Système de fichiers, périphériques, processus, processus léger, accès au registre système et au Système de gestion d'exceptions. Ces fonctions sont stockées dans les fichiers kernel.exe, krnl286.exe ou krnl386.exe pour les systèmes 16-bits et kernel32.dll et advapi32.dll sur les systèmes 32 bits.

[modifier] Interface graphique

Permet d'accéder aux ressources pour l'affichage sur les moniteurs, imprimantes, ... Elle est stockée dans le fichier gdi.exe sur les systèmes 16-bits et gdi32.dll sur les systèmes 32-bits.

[modifier] Interface utilisateur

Permet d'afficher et de gérer les contrôles de base comme les boutons et barres de défilement, de recevoir les informations du clavier et de la souris et des fonctionnalités associées comme l'Environnement graphique. Ces fonctionnalités sont stockées dans le fichier user.exe sur les systèmes 16-bits et user32.dll sur les systèmes 32-bits. Depuis Windows XP, le fichier a été renommé comctl32.dll, elle a été regroupée avec les commandes communes.

[modifier] Contrôle des boîtes de dialogue

Permet d'afficher les Boîtes de dialogue pour ouvrir et enregistrer des fichiers, choisir la couleur et la police, ... Elle réside dans le fichier comdlg.dll sur les systèmes 16-bits et comdlg32.dll sur les systèmes 32-bits. Elle a été groupée avec la partie Interface utilisateur.

[modifier] Bibliothèques communes de commande

Donne accès à des fonctions avancées du système d'exploitation comme des barres de statut (situées au bas des fenêtres), barres de progression, barres d'outils et onglets. Ces commandes résident dans la bibliothèque logicielle commctrl.dll sur les systèmes 16-bits et comctl32.dll. Elle est groupée avec l'interface utilisateur.

[modifier] Shell Windows

Le composant de Windows API qui permet à des applications d'accéder aux fonctionnalités fournies par le shell du système d'exploitation. Elle réside dans le fichier shell.dll sur les systèmes 16-bits et shell32.dll sur les systèmes 32-bits, et depuis Windows 95 dans le fichier shlwapi.dll. Elle a été groupée avec la partie Interface utilisateur.

[modifier] Services réseau

Donne accès aux diverses possibilités de gestion de réseau du système d'exploitation. Ses sous-composants incluent NetBIOS, Winsock, RPC... Sur les anciennes versions de Windows, cela incluait NetDDE.

[modifier] Autres API liées

Internet explorer offre quelques API qui sont souvent utilisées par les programmes et peut donc être considéré comme une partie de Windows API. Internet explorer est fourni d'office depuis Windows 98. Il est prévu d'arrêter cette prise en charge avec Vista.

Depuis Windows 95, il y aussi des API pour les affichages graphiques qui permettent d'avoir accès aux ressources de DirectX.

Il y a aussi d'autres API pour les relations entre les applications comme DDE (Dynamic Data Exchange, Echange dynamique de données), OLE (Object Linking and Embedding) (voir (en) Object Linking and Embedding) et COM (Component Object Model).

[modifier] Versions

Chaque version de Windows a apporté son lot de modifications de l'API. Malgré cela, le nom de l'API reste le même sauf pour les modification majeures. Microsoft a quand même changé le nom Win32 en Windows API pour les contenir dans une seule famille même pour une prochaine modification de celle-ci.

  • Win16 était la première API pour les versions 16-bits du système. Elle était au départ simplement nommé Windows API mais a été renommé en Win16 pour permettre le passage au 32-bits de Windows API. Les fonctionnalités étaient principalement dans le noyau du système : kernel.exe (ou krnl286.exe ou krnl386.exe), user.exe et gdi.exe. Malgré l'extension exe, ces fichiers sont des bibliothèques de liens dynamiques.
  • Win32 est la version 32-bits de l'API pour les systèmes plus récents. L'api se compose d'implémentations, comme avec Win16, dans le système bibliothèques de liens dynamiques. Le noyau de Win32 réside dans les fichiers kernel32.dll, user32.dll, et gdi32.dll. Win32 a été présenté avec Windows NT. La version embarquée avec Windows 95 était appelée Win32c, avec "c" pour compatibilité (compatibility en anglais) mais ce nom a été abandonné pour Win32. Dans la version Windows NT 4.0 et suivantes, les appels de Win32 sont exécutés par deux modules, csrss.exe (Client/Server Runtime Server Subsystem) en mode utilisateur et win32k.sys en mode noyau.
  • Win32s est une extension de Win32 pour les systèmes Windows 3.x qui a été introduite comme sous-ensemble de Win32. Le "s" est pour sous-ensemble (subset en anglais).
  • Win32 pour les éditions 64bits précédemment appelée Win64 est la version pour les ordinateurs 64-bits, avec les versions Windows XP Professional x64 Edition pour les processeurs x86-64 ainsi que Windows XP 64-bit Edition et Windows Server 2003 pour les processeurs Itanium. Cette version apporte juste le support pour ces deux nouvelles plateformes.

[modifier] Autres implémentations

Bien que Windows API soit soumise aux droits d'auteurs et malgré les précédents légaux aux États-Unis, il est permis d'émuler cette API sur d'autres plateformes.

C'est le cas par exemple de WINE qui émule une API compatible avec Win32 pour les systèmes d'exploitation à base UNIX.

[modifier] Liens externes

Windows API Reference sur MSDN : la référence à la source.

Spy Studio Surveiller l'activité.

news://fr.comp.os.ms-windows.programmation Newsgroup français dédié à la programmation des API Win32

http://www.charlespetzold.com/pw5/ Livre de référence indispensable pour acquérir les bases