Поделиться через


Дескрипторы HINTERNET

В этом разделе содержатся сведения о дескрипторах, используемых функциями WinINet, и иерархии, в которой они работают.

Сведения о дескрипторах HINTERNET

Дескрипторы, созданные и используемые функциями WinINet, имеют тип HINTERNET. Функции WinINet возвращают дескрипторы HINTERNET , которые не являются взаимозаменяемыми с другими типами дескрипторов. Поэтому их нельзя использовать с такими функциями, как ReadFile или CloseHandle. Аналогичным образом другие типы дескрипторов нельзя использовать с функциями WinINet. Например, дескриптор, возвращенный CreateFile, не может быть передан в InternetReadFile.

Функция InternetCloseHandle закрывает дескрипторы типа HINTERNET. Обратите внимание, что значения дескрипторов быстро перезапускаются; Таким образом, если дескриптор закрывается и новый дескриптор создается немедленно, есть вероятность того, что новый дескриптор имеет то же значение, что и только что закрытый дескриптор.

Дескрипторная иерархия

Дескрипторы HINTERNET поддерживаются в древовидной иерархии. Дескриптор, возвращаемый функцией InternetOpen , является корневым узлом. Дескриптора, возвращаемые функцией InternetConnect , занимают следующий уровень. Дескрипторы, возвращаемые функциями FtpOpenFile, FtpFindFirstFile и HttpOpenRequest , являются конечными узлами.

Windows XP и Windows Server 2003 R2 и более ранние версии: Дескрипторы, возвращаемые , GopherOpenFile и GopherFindFirstFile , также являются конечными узлами.

На следующей схеме показана иерархия дескрипторов HINTERNET . Каждое поле на схеме представляет функцию, возвращающую дескриптор HINTERNET .

функции, создающие дескрипторы

На верхнем уровне находится функция InternetOpen , которая создает корневой дескриптор. Следующий уровень содержит функции InternetOpenUrl и InternetConnect . Функции, использующие дескриптор, возвращаемый InternetConnect , составляют последний уровень.

На следующей схеме показаны функции, зависящие от дескриптора, созданного InternetOpenUrl. Затеняемые поля представляют функции, возвращающие дескрипторы HINTERNET , а обычные — функции, использующие дескриптор HINTERNET , созданный связанной функцией.

функции, использующие дескриптор internetopenurl

Функции InternetQueryDataAvailable, InternetReadFile и InternetSetFilePointer используют дескриптор HINTERNET , созданный InternetOpenUrl.

Иерархия FTP

На следующей схеме показаны функции FTP, зависящие от дескриптора сеанса FTP, возвращаемого InternetConnect. Затеняемые поля представляют функции, возвращающие дескрипторы HINTERNET , а обычные — функции, использующие дескриптор HINTERNET , созданный функцией, от которой они зависят.

функции, использующие дескриптор сеанса FTP

Функции FtpCreateDirectory, FtpDeleteFile, FtpGetCurrentDirectory, FtpGetFile, FtpPutFile, FtpRemoveDirectory, FtpRenameFile и FtpSetCurrentDirectory используют дескриптор HINTERNET , созданный InternetConnect.

На следующей схеме показаны две функции FTP, возвращающие дескрипторы, и зависимые от них функции. Затеняемые поля представляют функции, возвращающие дескрипторы HINTERNET , а обычные — функции, использующие дескриптор HINTERNET , созданный функцией, от которой они зависят.

функции, использующие дескриптор из ftpopen и ftpfindfirstfile

Функция InternetFindNextFile зависит от дескриптора, созданного с помощью FtpFindFirstFile, в то время как InternetReadFile и InternetWriteFile используют дескриптор , созданный ftpOpenFile.

Иерархия HTTP

На следующей схеме показаны связи функций, используемых для протокола HTTP. Затеняемые поля представляют функции, возвращающие дескрипторы HINTERNET , а обычные — функции, использующие дескриптор HINTERNET , созданный функцией, от которой они зависят.

функции, использующие дескриптор из httpopenrequest

Функции HttpAddRequestHeaders, HttpQueryInfo, HttpSendRequest, HttpSendRequestEx и InternetErrorDlg зависят от дескриптора, созданного HttpOpenRequest.

На следующей схеме показаны функции, использующие дескриптор HINTERNET , созданный HttpOpenRequest после его отправки HttpSendRequest. Затеняемые поля представляют функции, возвращающие дескрипторы HINTERNET , а обычные — функции, использующие дескриптор HINTERNET , созданный функцией, от которой они зависят.

функции, использующие дескриптор после httpsendrequest

После того как HttpSendRequest использовал дескриптор, возвращенный HttpOpenRequest, его могут использовать InternetQueryDataAvailable, InternetReadFile и InternetSetFilePointer.

функции, использующие дескриптор после httpsendrequestex

После того как HttpSendRequestEx использовал дескриптор, возвращенный HttpOpenRequest, этот дескриптор может использоваться httpEndRequest, InternetReadFileEx и InternetWriteFile. После вызова HttpEndRequest дескриптор может использоваться InternetReadFile, InternetSetFilePointer и InternetQueryDataAvailable.

Примечание

WinINet не поддерживает реализации сервера. Кроме того, его не следует использовать из службы. Для серверных реализаций или служб используйте службы Microsoft Windows HTTP (WinHTTP).