WinHTTP 中的错误处理

并非所有 WinHTTP API 函数都以相同的方式报告错误。

某些函数(如 WinHttpSetTimeouts)返回一个 BOOL ,指示 在 FALSE 时失败。 如果返回 FALSE ,则对错误感兴趣的调用方应调用 GetLastError。 如果在函数成功 (返回除 FALSE) 之外的任何内容时调用 GetLastError,则返回的值是不可预测的,并且可能会在 Windows 版本、Service Pack 之间或在调用同一函数之间更改。

某些函数(如 WinHttpConnect)返回 HINTERNET 伪句柄。 这些函数完全相同,只是通过返回 NULL 来指示失败。 如果返回 NULL ,则对错误感兴趣的调用方应调用 GetLastError。 如果在函数成功 (返回除 NULL) 之外的任何内容时调用 GetLastError,则返回的值是不可预测的,并且可能会在 Windows 版本、Service Pack 之间更改,甚至在调用同一函数之间更改。

某些函数(如 WinHttpGetProxyResult)返回 DWORD 错误代码,无需调用任何其他函数来获取更多错误信息。 对于这些函数,不应调用 GetLastError 。 如果调用 GetLastError ,无论函数是成功还是失败,返回的值都是不可预知的,并且可能会在 Windows 版本、Service Pack 之间或在调用同一函数之间更改。