HINTERNET-Handles
Dieser Abschnitt enthält Informationen zu den Handles, die von den WinINet-Funktionen verwendet werden, und zu der Hierarchie, in der sie arbeiten.
Informationen zu HINTERNET-Handles
Die Handles, die von den WinINet-Funktionen erstellt und verwendet werden, sind vom Typ HINTERNET. Die WinINet-Funktionen geben HINTERNET-Handles zurück, die nicht mit anderen Handletypen austauschbar sind. Daher können sie nicht mit Funktionen wie ReadFile oder CloseHandle verwendet werden. Ebenso können andere Handle-Typen nicht mit den WinINet-Funktionen verwendet werden. Beispielsweise kann ein von CreateFile zurückgegebenes Handle nicht an InternetReadFile übergeben werden.
Die InternetCloseHandle-Funktion schließt Handles vom Typ HINTERNET. Beachten Sie, dass Handle-Werte schnell wiederverwendet werden. Wenn also ein Handle geschlossen und sofort ein neues Handle generiert wird, besteht eine gute Chance, dass das neue Handle den gleichen Wert wie das gerade geschlossene Handle hat.
Behandeln der Hierarchie
Die HINTERNET-Handles werden in einer Strukturhierarchie verwaltet. Das von der InternetOpen-Funktion zurückgegebene Handle ist der Stammknoten. Von der InternetConnect-Funktion zurückgegebene Handles belegen die nächste Ebene. Von den Funktionen FtpOpenFile, FtpFindFirstFile und HttpOpenRequest zurückgegebene Handles sind die Blattknoten.
Windows XP und Windows Server 2003 R2 und früher: Von zurückgegebene Handles, GopherOpenFile und GopherFindFirstFile sind ebenfalls Blattknoten.
Das folgende Diagramm veranschaulicht die Hierarchie der HINTERNET-Handles . Jedes Feld im Diagramm stellt eine Funktion dar, die ein HINTERNET-Handle zurückgibt.
Auf der obersten Ebene befindet sich die InternetOpen-Funktion , die das Stammhandle erstellt. Die nächste Ebene enthält die Funktionen InternetOpenUrl und InternetConnect . Die Funktionen, die das von InternetConnect zurückgegebene Handle verwenden, bilden die letzte Ebene.
Das folgende Diagramm zeigt die Funktionen, die von dem von InternetOpenUrl erstellten Handle abhängig sind. Die schattierten Felder stellen Funktionen dar, die HINTERNET-Handles zurückgeben, während die einfachen Felder Funktionen darstellen, die das von der zugeordneten Funktion erstellte HINTERNET-Handle verwenden.
Die Funktionen InternetQueryDataAvailable, InternetReadFile und InternetSetFilePointer verwenden das von InternetOpenUrl erstellte HINTERNET-Handle.
FTP-Hierarchie
Das folgende Diagramm zeigt die FTP-Funktionen, die vom von InternetConnect zurückgegebenen FTP-Sitzungshandle abhängen. Die schattierten Felder stellen Funktionen dar, die HINTERNET-Handles zurückgeben, während die einfachen Felder Funktionen darstellen, die das HINTERNET-Handle verwenden, das von der Funktion erstellt wurde, von der sie abhängen.
Die Funktionen FtpCreateDirectory, FtpDeleteFile, FtpGetCurrentDirectory, FtpGetFile, FtpPutFile, FtpRemoveDirectory, FtpRenameFile und FtpSetCurrentDirectory verwenden alle das von InternetConnect erstellte HINTERNET-Handle.
Das folgende Diagramm zeigt die beiden FTP-Funktionen, die Handles zurückgeben, und die Funktionen, die davon abhängig sind. Die schattierten Felder stellen Funktionen dar, die HINTERNET-Handles zurückgeben, während die einfachen Felder Funktionen darstellen, die das HINTERNET-Handle verwenden, das von der Funktion erstellt wurde, von der sie abhängen.
Die InternetFindNextFile-Funktion ist von dem von FtpFindFirstFile erstellten Handle abhängig, während InternetReadFile und InternetWriteFile das von FtpOpenFile erstellte Handle verwenden.
HTTP-Hierarchie
Das folgende Diagramm zeigt die Beziehungen der Funktionen, die für das HTTP-Protokoll verwendet werden. Die schattierten Felder stellen Funktionen dar, die HINTERNET-Handles zurückgeben, während die einfachen Felder Funktionen darstellen, die das HINTERNET-Handle verwenden, das von der Funktion erstellt wurde, von der sie abhängen.
Die Funktionen HttpAddRequestHeaders, HttpQueryInfo, HttpSendRequest, HttpSendRequestEx und InternetErrorDlg sind von dem von HttpOpenRequest erstellten Handle abhängig.
Das folgende Diagramm zeigt die Funktionen, die das von HttpOpenRequest erstellte HINTERNET-Handle verwenden, nachdem es von HttpSendRequest gesendet wurde. Die schattierten Felder stellen Funktionen dar, die HINTERNET-Handles zurückgeben, während die einfachen Felder Funktionen darstellen, die das HINTERNET-Handle verwenden, das von der Funktion erstellt wurde, von der sie abhängen.
Nachdem HttpSendRequest das von HttpOpenRequest zurückgegebene Handle verwendet hat, kann es von InternetQueryDataAvailable, InternetReadFile und InternetSetFilePointer verwendet werden.
Nachdem HttpSendRequestEx das von HttpOpenRequest zurückgegebene Handle verwendet hat, kann das Handle von HttpEndRequest, InternetReadFileEx und InternetWriteFile verwendet werden. Nachdem HttpEndRequest aufgerufen wurde, kann das Handle von InternetReadFile, InternetSetFilePointer und InternetQueryDataAvailable verwendet werden.
Hinweis
WinINet unterstützt keine Serverimplementierungen. Darüber hinaus sollte es nicht von einem Dienst verwendet werden. Verwenden Sie für Serverimplementierungen oder Dienste Microsoft Windows HTTP Services (WinHTTP).