InternetErrorDlg 函数 (wininet.h)

如果存在相应的对话框,则显示传递给 InternetErrorDlg 的错误对话框。 如果使用 FLAGS_ERROR_UI_FILTER_FOR_ERRORS 标志,该函数还会检查标头中是否存在任何隐藏的错误,并在需要时显示一个对话框。

语法

DWORD InternetErrorDlg(
  [in]      HWND      hWnd,
  [in, out] HINTERNET hRequest,
  [in]      DWORD     dwError,
  [in]      DWORD     dwFlags,
  [in, out] LPVOID    *lppvData
);

参数

[in] hWnd

任何所需对话框的父窗口的句柄。 如果不需要对话框并将 FLAGS_ERROR_UI_FLAGS_NO_UI 传递给 dwFlags,则此参数可以为 NULL

[in, out] hRequest

调用 HttpSendRequest 时使用的 Internet 连接的句柄。

[in] dwError

要为其显示对话框的错误值。 此参数的取值可为下列值之一:

含义
ERROR_HTTP_REDIRECT_NEEDS_CONFIRMATION
允许用户确认重定向。
ERROR_INTERNET_BAD_AUTO_PROXY_SCRIPT
显示一个对话框,指示自动代理脚本无效。
ERROR_INTERNET_CHG_POST_IS_NON_SECURE
显示一个对话框,询问用户是否在非安全通道上发布给定数据。
ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED
服务器正在请求客户端证书。

无论用户是否选择了证书,此错误的返回值始终ERROR_SUCCESS。 如果用户尚未选择证书,则将在后续请求中尝试匿名客户端身份验证。

ERROR_INTERNET_HTTP_TO_HTTPS_ON_REDIR
通知用户通过区域进入安全站点。
ERROR_INTERNET_HTTPS_TO_HTTP_ON_REDIR
通知用户从安全站点跨越区域。
ERROR_INTERNET_HTTPS_HTTP_SUBMIT_REDIR
通知用户,要发布的数据现在被重定向到不安全的站点。
ERROR_INTERNET_INCORRECT_PASSWORD
显示请求用户名和密码的对话框。
ERROR_INTERNET_INVALID_CA
指示 SSL 证书公用名 (主机名字段) 不正确。 显示“SSL 公用名无效”对话框,并允许用户查看不正确的证书。
ERROR_INTERNET_MIXED_SECURITY
向用户显示有关混合安全和非安全内容的警告。
ERROR_INTERNET_POST_IS_NON_SECURE
显示一个对话框,询问用户是否在非安全通道上发布给定数据。
ERROR_INTERNET_SEC_CERT_CN_INVALID
指示 SSL 证书公用名 (主机名字段) 不正确。 显示“SSL 公用名无效”对话框,并允许用户查看不正确的证书。 还允许用户选择证书以响应服务器请求。
ERROR_INTERNET_SEC_CERT_ERRORS
向用户显示一条警告,显示服务器证书的问题。
ERROR_INTERNET_SEC_CERT_DATE_INVALID
告知用户 SSL 证书已过期。
ERROR_INTERNET_SEC_CERT_REV_FAILED
向用户显示一条警告,显示服务器证书的吊销检查失败。
ERROR_INTERNET_SEC_CERT_REVOKED
显示一个对话框,指示已吊销服务器证书。
ERROR_INTERNET_UNABLE_TO_DOWNLOAD_SCRIPT
显示一个对话框,指示无法下载自动代理脚本。

[in] dwFlags

操作。 此参数可使用以下一个或多个值。

含义
FLAGS_ERROR_UI_FILTER_FOR_ERRORS
扫描返回的标头以查找错误。 调用 HttpSendRequest 后,使用此标志设置调用 InternetErrorDlg,以便检测隐藏的错误。 例如,身份验证错误通常是隐藏的,因为对 HttpSendRequest 的调用成功完成,但通过扫描状态代码, InternetErrorDlg 可以确定代理或服务器需要身份验证。
FLAGS_ERROR_UI_FLAGS_CHANGE_OPTIONS
如果函数成功, 将对话框的结果存储在 Internet 句柄中。
FLAGS_ERROR_UI_FLAGS_GENERATE_DATA
查询 Internet 句柄以获取所需的信息。 函数为错误构造适当的数据结构。 (例如,对于证书 CN 失败,函数会获取 certificate.)
FLAGS_ERROR_UI_SERIALIZE_DIALOGS
序列化密码缓存条目上并发请求的身份验证对话框。 lppvData 参数应包含指向INTERNET_AUTH_NOTIFY_DATA结构的指针的地址,并且客户端应实现线程安全的非阻塞回调函数。
FLAGS_ERROR_UI_FLAGS_NO_UI
允许调用方将 NULL 传递给 hWnd 参数,而不会出错。 在不需要用户界面的情况下使用。

[in, out] lppvData

指向数据结构地址的指针。 对于需要处理的每个错误,结构可能不同。

返回值

返回以下值之一,否则返回错误值。

返回代码 说明
ERROR_SUCCESS
函数已成功完成。

有关详细信息,请参阅 dwError 参数中的ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED

ERROR_CANCELLED
该函数已被用户取消。
ERROR_INTERNET_FORCE_RETRY
这表示函数需要重做其请求。 在身份验证的情况下,这表示用户单击了 “确定 ”按钮。
ERROR_INVALID_HANDLE
父窗口的句柄无效。

备注

发生以下任何事件时,始终通知用户:

  • ERROR_INTERNET_HTTP_TO_HTTPS_ON_REDIR
  • ERROR_INTERNET_INVALID_CA
  • ERROR_INTERNET_POST_IS_NON_SECURE
  • ERROR_INTERNET_SEC_CERT_CN_INVALID
  • ERROR_INTERNET_SEC_CERT_DATE_INVALID
除非用户明确选择不通知这些事件,否则否则会不由自主地使用户面临重大安全风险。

与 WinINet API 的所有其他方面一样,无法从 DllMain 或全局对象的构造函数和析构函数中安全地调用此函数。

注意 WinINet 不支持服务器实现。 此外,不应从服务使用它。 对于服务器实现或服务,请使用 Microsoft Windows HTTP Services (WinHTTP)
 

要求

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

另请参阅

启用 Internet 功能

WinINet 函数