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
已成功连接到 lpvStatusInformation 指向 (SOCKADDR) 的套接字地址。
INTERNET_STATUS_CONNECTING_TO_SERVER
连接到 lpvStatusInformation (SOCKADDR) 指向的套接字地址。
INTERNET_STATUS_CONNECTION_CLOSED
已成功关闭与服务器的连接。 lpvStatusInformation 参数为 NULL
INTERNET_STATUS_COOKIE_HISTORY
从缓存中检索内容。 包含有关 URL 的过去 Cookie 事件的数据,例如 Cookie 是否被接受、拒绝、降级或被限制。

lpvStatusInformation 参数是指向 InternetCookieHistory 结构的指针。

INTERNET_STATUS_COOKIE_RECEIVED
指示已接受、拒绝、降级 (从永久性 cookie 更改为会话 cookie) 或 (仅在第一方上下文) 发送。 lpvStatusInformation 参数是包含接收的 Cookie 数的 DWORD
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 用来指示它已创建新句柄。 这样,如果连接时间过长,则应用程序可以从另一个线程调用 InternetCloseHandlelpvStatusInformation 参数包含 HINTERNET 句柄的地址。
INTERNET_STATUS_INTERMEDIATE_RESPONSE
从服务器收到中间 (100 级别) 状态代码消息。
INTERNET_STATUS_NAME_RESOLVED
已成功找到 lpvStatusInformation 中包含的名称的 IP 地址。 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
查找 lpvStatusInformation 中包含的名称的 IP 地址。 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 未发出任何网络请求。
INTERNET_STATE_BUSY
Windows Internet 正在发出网络请求。
INTERNET_STATUS_USER_INPUT_REQUIRED
请求要求完成用户输入。

[in] dwStatusInformationLength

lpvStatusInformation 指向的数据的大小(以字节为单位)。

返回值

备注

由于回调是在处理请求期间进行的,因此应用程序应在回调函数中花费很少的时间,以避免降低网络上的数据吞吐量。 例如,在回调函数中显示对话框可能是一个冗长的操作,服务器会终止请求。

可以在与启动请求的线程不同的线程上下文中调用回调函数。

谨慎 当状态从安全 (HTTPS) 站点更改为不安全 (HTTP) 站点时,始终通知用户,以防止非自愿信息泄露。
 
与 WinINet API 的所有其他方面一样,无法从 DllMain 或全局对象的构造函数和析构函数中安全地调用此函数。
注意 WinINet 不支持服务器实现。 此外,不应从服务使用它。 对于服务器实现或服务,请使用 Microsoft Windows HTTP Services (WinHTTP)
 

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 wininet.h

另请参阅

异步操作

创建状态回调函数

INTERNET_ASYNC_RESULT

WinINet 函数