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


функция обратного вызова INTERNET_STATUS_CALLBACK (wininet.h)

Прототип функции обратного вызова состояния, определяемой приложением.

Тип INTERNET_STATUS_CALLBACK определяет указатель на эту функцию обратного вызова. InternetStatusCallback — это заполнитель для имени определяемой приложением функции.

Синтаксис

INTERNET_STATUS_CALLBACK InternetStatusCallback;

void InternetStatusCallback(
  [in] HINTERNET hInternet,
  [in] DWORD_PTR dwContext,
  [in] DWORD dwInternetStatus,
  [in] LPVOID lpvStatusInformation,
  [in] DWORD dwStatusInformationLength
)
{...}

Параметры

[in] hInternet

Дескриптор, для которого вызывается функция обратного вызова.

[in] dwContext

Указатель на переменную, указывающую определяемое приложением контекстное значение, связанное с hInternet.

[in] dwInternetStatus

Код состояния, указывающий, почему вызывается функция обратного вызова. Этот параметр может принимать одно из указанных ниже значений.

Значение Значение
INTERNET_STATUS_CLOSING_CONNECTION
Закрытие подключения к серверу. Параметр lpvStatusInformation имеет значение NULL.
INTERNET_STATUS_CONNECTED_TO_SERVER
Успешно подключен к адресу сокета (SOCKADDR), на который указывает lpvStatusInformation.
INTERNET_STATUS_CONNECTING_TO_SERVER
Подключение к адресу сокета (SOCKADDR), на который указывает lpvStatusInformation.
INTERNET_STATUS_CONNECTION_CLOSED
Подключение к серверу успешно закрыто. Параметр lpvStatusInformation имеет значение NULL.
INTERNET_STATUS_COOKIE_HISTORY
Получение содержимого из кэша. Содержит данные о прошлых событиях файлов cookie для URL-адреса, например о том, были ли файлы cookie приняты, отклонены, понижены или на поводке.

Параметр lpvStatusInformation является указателем на структуру InternetCookieHistory .

INTERNET_STATUS_COOKIE_RECEIVED
Указывает количество файлов cookie, которые были приняты, отклонены, понижены (изменены с постоянных файлов cookie на файлы cookie сеанса) или с привязями (будут отправляться только в контексте 1-й стороны). Параметр lpvStatusInformation — это DWORD с количеством полученных файлов cookie.
INTERNET_STATUS_COOKIE_SENT
Указывает количество файлов cookie, которые были отправлены или подавлены при отправке запроса. Параметр lpvStatusInformation — это DWORD с количеством отправленных или подавляемых файлов cookie.
INTERNET_STATUS_CTL_RESPONSE_RECEIVED
Не реализован.
INTERNET_STATUS_DETECTING_PROXY
Уведомляет клиентское приложение об обнаружении прокси-сервера.
INTERNET_STATUS_HANDLE_CLOSING
Это значение дескриптора было прервано. pvStatusInformation содержит адрес закрываемого дескриптора. Параметр lpvStatusInformation содержит адрес закрываемого дескриптора.
INTERNET_STATUS_HANDLE_CREATED
Используется InternetConnect , чтобы указать, что он создал новый дескриптор. Это позволяет приложению вызывать InternetCloseHandle из другого потока, если подключение занимает слишком много времени. Параметр lpvStatusInformation содержит адрес дескриптора HINTERNET .
INTERNET_STATUS_INTERMEDIATE_RESPONSE
Получено промежуточное сообщение с кодом состояния (100 уровня) от сервера.
INTERNET_STATUS_NAME_RESOLVED
Успешно найден IP-адрес имени, содержащегося в lpvStatusInformation. Параметр lpvStatusInformation указывает на объект PCTSTR , содержащий имя узла.
INTERNET_STATUS_P3P_HEADER
Ответ содержит заголовок P3P.
INTERNET_STATUS_P3P_POLICYREF
Не реализован.
INTERNET_STATUS_PREFETCH
Не реализован.
INTERNET_STATUS_PRIVACY_IMPACTED
Не реализован.
INTERNET_STATUS_RECEIVING_RESPONSE
Ожидание ответа сервера на запрос. Параметр lpvStatusInformation имеет значение NULL.
INTERNET_STATUS_REDIRECT
HTTP-запрос будет автоматически перенаправлять запрос. Параметр lpvStatusInformation указывает на новый URL-адрес. На этом этапе приложение может считывать любые данные, возвращенные сервером с ответом перенаправления, и может запрашивать заголовки ответа. Он также может отменить операцию, закрыв дескриптор. Этот обратный вызов не выполняется, если исходный запрос, указанный INTERNET_FLAG_NO_AUTO_REDIRECT.
INTERNET_STATUS_REQUEST_COMPLETE
Асинхронная операция завершена. Параметр lpvStatusInformation содержит адрес структуры INTERNET_ASYNC_RESULT .
INTERNET_STATUS_REQUEST_SENT
Запрос сведений успешно отправлен на сервер. Параметр lpvStatusInformation указывает на значение DWORD , содержащее количество отправленных байтов.
INTERNET_STATUS_RESOLVING_NAME
Поиск IP-адреса имени, содержащегося в lpvStatusInformation. Параметр lpvStatusInformation указывает на объект PCTSTR , содержащий имя узла.
INTERNET_STATUS_RESPONSE_RECEIVED
Успешно получен ответ от сервера.
INTERNET_STATUS_SENDING_REQUEST
Отправка запроса информации на сервер. Параметр lpvStatusInformation имеет значение NULL.
INTERNET_STATUS_STATE_CHANGE
Перемещается между защищенным (HTTPS) и небезопасным (HTTP) сайтом. Пользователь должен быть проинформирован об этом изменении; в противном случае пользователь рискует непреднамеренно разглашать конфиденциальную информацию. Если этот флаг установлен, параметр lpvStatusInformation указывает на DWORD состояния, содержащий дополнительные флаги.

[in] lpvStatusInformation

Указатель на дополнительные сведения о состоянии. Если флаг INTERNET_STATUS_STATE_CHANGE установлен, lpvStatusInformation указывает на DWORD , содержащий один или несколько следующих флагов:

Значение Значение
INTERNET_STATE_CONNECTED
Подключенное состояние. Взаимоисключающий с отключенным состоянием.
INTERNET_STATE_DISCONNECTED
Состояние "Отключено". Сетевое подключение установить не удалось.
INTERNET_STATE_DISCONNECTED_BY_USER
Отключено по запросу пользователя.
INTERNET_STATE_IDLE
Интернет Windows не выполняет сетевые запросы.
INTERNET_STATE_BUSY
Сетевые запросы выполняются Через Интернет Windows.
INTERNET_STATUS_USER_INPUT_REQUIRED
Запрос требует ввода данных пользователем.

[in] dwStatusInformationLength

Размер (в байтах) данных, на которые указывает lpvStatusInformation.

Возвращаемое значение

None

Remarks

Так как обратные вызовы выполняются во время обработки запроса, приложение должно тратить мало времени на функцию обратного вызова, чтобы избежать снижения пропускной способности данных в сети. Например, отображение диалогового окна в функции обратного вызова может быть такой длительной операцией, что сервер завершает запрос.

Функция обратного вызова может вызываться в контексте потока, отличном от потока, который инициировал запрос.

Осторожностью Всегда уведомляйте пользователя при изменении состояния с безопасного (HTTPS) сайта на небезопасный (HTTP) сайт, чтобы защититься от недобровольных раскрытия информации.
 
Как и все другие аспекты API WinINet, эту функцию нельзя безопасно вызывать из библиотеки DllMain или из конструкторов и деструкторов глобальных объектов.
Примечание WinINet не поддерживает реализации сервера. Кроме того, его не следует использовать из службы. Для серверных реализаций или служб используйте службы Microsoft Windows HTTP (WinHTTP).
 

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header wininet.h

См. также раздел

Асинхронная операция

Создание функций обратного вызова состояния

INTERNET_ASYNC_RESULT

Функции WinINet