如何从HINTERNET句柄获取URL

时间:2017-12-01 01:43:53

标签: c++ windows winapi hook wininet

我使用wininet库并将其挂钩以监控互联网请求。

挂钩功能是“InternetConnectW”,“HttpOpenRequestW”和“InternetReadFile”。

首先,我从“InternetConnectW”获得一个HINTERNET句柄。

我从第一个句柄“HttpOpenRequestW”获得第二个HINTERNET句柄。

当我挂钩“InternetReadFile”时,IN参数包含第二个句柄。

这是InternetReadFile挂钩功能。

BOOL
STDAPICALLTYPE
Hook_InternetReadFile(
__in HINTERNET hFile,
__out LPVOID lpBuffer,
__in DWORD dwNumberOfBytesToRead,
__out LPDWORD lpdwNumberOfBytesRead
)
{
    // i want to get Internet http URL here!!!!!

    return Origin_InternetReadFile(hFile, lpBuffer, dwNumberOfBytesToRead, lpdwNumberOfBytesRead);
}

如何从HINTERNET手柄获取URL?

1 个答案:

答案 0 :(得分:1)

尝试将INTERNET_OPTION_URLInternetQueryOption一起使用。

示例:

TCHAR *szUrl = new TCHAR[INTERNET_MAX_URL_LENGTH];
DWORD dwLen = sizeof(TCHAR)*INTERNET_MAX_URL_LENGTH;
BOOL bRet = InternetQueryOption(hFile, INTERNET_OPTION_URL, szUrl, &dwLen);