Handles HINTERNET
Cette section contient des informations sur les handles utilisés par les fonctions WinINet et la hiérarchie dans laquelle elles fonctionnent.
À propos des handles HINTERNET
Les descripteurs créés et utilisés par les fonctions WinINet sont de type HINTERNET. Les fonctions WinINet retournent des handles HINTERNET qui ne sont pas interchangeables avec d’autres types de handles. Par conséquent, elles ne peuvent pas être utilisées avec des fonctions telles que ReadFile ou CloseHandle. De même, les autres types de handle ne peuvent pas être utilisés avec les fonctions WinINet. Par exemple, un handle retourné par CreateFile ne peut pas être passé à InternetReadFile.
La fonction InternetCloseHandle ferme les handles de type HINTERNET. Notez que les valeurs de handle sont recyclées rapidement ; par conséquent, si un handle est fermé et qu’un nouveau descripteur est généré immédiatement, il y a de bonnes chances que le nouveau handle ait la même valeur que celle qui vient d’être fermée.
Hiérarchie des handles
Les handles HINTERNET sont conservés dans une hiérarchie d’arborescence. Le handle retourné par la fonction InternetOpen est le nœud racine. Les handles retournés par la fonction internetconnect occupent le niveau suivant. Les handles retournés par les fonctions FtpOpenFile, FtpFindFirstFileet HttpOpenRequest sont les nœuds terminaux.
Windows XP et Windows Server 2003 R2 et versions antérieures : Les handles retournés par, GopherOpenFileet GopherFindFirstFile sont également des nœuds terminaux.
Le diagramme suivant illustre la hiérarchie des handles HINTERNET . Chaque zone du diagramme représente une fonction qui retourne un handle HINTERNET .

Au niveau supérieur se trouve la fonction InternetOpen , qui crée le handle racine. Le niveau suivant contient les fonctions InternetOpenUrl et internetconnect . Les fonctions qui utilisent le handle retourné par internetconnect constituent le dernier niveau.
Le diagramme suivant montre les fonctions qui dépendent du handle créé par InternetOpenUrl. Les zones grisées représentent des fonctions qui retournent des handles HINTERNET , tandis que les zones simples représentent des fonctions qui utilisent le descripteur HINTERNET créé par la fonction associée.

Les fonctions InternetQueryDataAvailable, InternetReadFileet InternetSetFilePointer utilisent le descripteur HINTERNET créé par InternetOpenUrl.
Hiérarchie FTP
Le diagramme suivant montre les fonctions FTP qui dépendent du descripteur de session FTP retourné par internetconnect. Les zones grisées représentent des fonctions qui retournent des handles HINTERNET , tandis que les zones simples représentent des fonctions qui utilisent le descripteur HINTERNET créé par la fonction sur laquelle ils dépendent.

Les fonctions FtpCreateDirectory, FtpDeleteFile, FtpGetCurrentDirectory, FtpGetFile, FtpPutFile, FtpRemoveDirectory, FtpRenameFileet FtpSetCurrentDirectory utilisent toutes le handle HINTERNET créé par internetconnect.
Le diagramme suivant montre les deux fonctions FTP qui retournent des handles et les fonctions qui en dépendent. Les zones grisées représentent des fonctions qui retournent des handles HINTERNET , tandis que les zones simples représentent des fonctions qui utilisent le descripteur HINTERNET créé par la fonction sur laquelle ils dépendent.

La fonction InternetFindNextFile est dépendante du descripteur créé par FtpFindFirstFile, tandis que InternetReadFile et InternetWriteFile utilisent le descripteur créé par FtpOpenFile.
Hiérarchie HTTP
Le diagramme suivant montre les relations des fonctions utilisées pour le protocole HTTP. Les zones grisées représentent des fonctions qui retournent des handles HINTERNET , tandis que les zones simples représentent des fonctions qui utilisent le descripteur HINTERNET créé par la fonction sur laquelle ils dépendent.

Les fonctions HttpAddRequestHeaders, HttpQueryInfo, HTTPSendRequest, HttpSendRequestExet InternetErrorDlg dépendent du handle créé par HttpOpenRequest.
Le diagramme suivant montre les fonctions qui utilisent le handle HINTERNET créé par HttpOpenRequest une fois qu’il a été envoyé par HTTPSendRequest. Les zones grisées représentent des fonctions qui retournent des handles HINTERNET , tandis que les zones simples représentent des fonctions qui utilisent le descripteur HINTERNET créé par la fonction sur laquelle ils dépendent.

Une fois que HTTPSendRequest a utilisé le handle retourné par HttpOpenRequest, il peut être utilisé par InternetQueryDataAvailable, InternetReadFileet InternetSetFilePointer.

Une fois que HttpSendRequestEx a utilisé le handle retourné par HttpOpenRequest, le handle peut être utilisé par HttpEndRequest, InternetReadFileExet InternetWriteFile. Une fois HttpEndRequest appelé, le handle peut être utilisé par InternetReadFile, InternetSetFilePointeret InternetQueryDataAvailable.
Notes
WinINet ne prend pas en charge les implémentations de serveur. En outre, il ne doit pas être utilisé à partir d’un service. pour les implémentations de serveur ou les services , utilisez Microsoft Windows HTTP services (WinHTTP).