RetrieveUrlCacheEntryStreamW 函数 (wininet.h)

提供最高效且与实现无关的方式来访问缓存数据。

语法

HANDLE RetrieveUrlCacheEntryStreamW(
  [in]      LPCWSTR                      lpszUrlName,
  [out]     LPINTERNET_CACHE_ENTRY_INFOW lpCacheEntryInfo,
  [in, out] LPDWORD                      lpcbCacheEntryInfo,
  [in]      BOOL                         fRandomRead,
  [in]      DWORD                        dwReserved
);

参数

[in] lpszUrlName

指向以 null 结尾的字符串的指针,该字符串包含缓存项的源名称。 此名称必须独一无二。 名称字符串不应包含任何转义字符。

[out] lpCacheEntryInfo

指向 INTERNET_CACHE_ENTRY_INFO 结构的指针,该结构接收有关缓存项的信息。

[in, out] lpcbCacheEntryInfo

指向变量的指针,该变量指定 lpCacheEntryInfo 缓冲区的大小(以字节为单位)。 当函数返回时,变量接收复制到缓冲区的字节数或缓冲区的所需大小(以字节为单位)。 请注意,此缓冲区大小必须同时容纳 INTERNET_CACHE_ENTRY_INFO 结构和紧随其后存储的关联字符串。

[in] fRandomRead

流是否为随机访问打开。 将 标志设置为 TRUE 以打开流进行随机访问。

[in] dwReserved

此参数是保留的,必须为 0。

返回值

如果函数成功,该函数将返回一个有效的句柄,以便在 ReadUrlCacheEntryStreamUnlockUrlCacheEntryStream 函数中使用。

如果函数失败,它将返回 NULL。 要获得更多的错误信息,请调用 GetLastError。

可能的错误值包括以下内容。

返回代码 说明
ERROR_FILE_NOT_FOUND
在缓存存储中找不到源名称指定的缓存项。
ERROR_INSUFFICIENT_BUFFER
lpdwCacheEntryInfoBufferSize 指定的 lpCacheEntryInfo 的大小不足以包含所有信息。 lpdwCacheEntryInfoBufferSize 中返回的值指示包含所有信息所需的缓冲区大小。

注解

RetrieveUrlCacheEntryStream 不执行任何 URL 分析,因此即使缓存了资源,也不会在缓存中找到包含定位点 (#) 的 URL。 例如,如果传递了 URL http://adatum.com/example.htm#sample ,则函数将返回ERROR_FILE_NOT_FOUND,即使 http://adatum.com/example.htm 位于缓存中。

不需要文件形式的 URL 数据的缓存客户端应使用此函数访问特定 URL 的数据。

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

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

注意

wininet.h 标头将 RetrieveUrlCacheEntryStream 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定

要求

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

另请参阅

缓存

WinINet 函数