一个 32 位应用程序时出现错误消息有 64 位版本的 Windows Vista 和 Windows Server 2008,Windows 7 和 Windows Server 2008 R2 中启用了 /LARGEADDRESSAWARE 选项

适用于: Windows Vista Business 64-bit editionWindows Vista Home Basic 64-bit editionWindows Vista Home Premium 64-bit edition

症状


假定您运行的 32 位应用程序正在运行 Windows 64 位版本的计算机上启用了/LARGEADDRESSAWARE选项。然后,应用程序调用GetHostByAddress()GetAdaptersAddresses()等各种与网络相关的 Api。在此情况下,您可能会收到类似于下列之一的错误消息:
  • WSANO_DATA
  • ERROR_NO_DATA (232)
  • ERROR_NOACCESS (998)
在 64 位版本的以下操作系统的系统上出现此问题︰
  • Windows Vista
  • Windows Server 2008
  • Windows 7
  • Windows Server 2008 R2
注意:如果应用程序遇到内存使用较高,则会出现此问题。

原因


由于地址转换例程有问题,会出现此问题。与 32 位应用程序将超出标准的 2 千兆字节 (GB) 的内存地址空间分配的用户模式内存缓冲区传递通过使用GetHostByAddress()GetHostByName()等与网络相关的 API。然后转换地址从 32 位地址在内核例程中的 64 位地址。地址转换例程错误符号扩展特定的地址,以将其转换为 64 位地址。此 64 位地址是用户模式地址池的范围之外。因此,内核拒绝读取或写入访问的地址,并向应用程序返回错误。

解决方案


安装此修复程序后,转换例程正确转换为等效的 64 位地址,不带符号扩展的用户应用程序提供一个 32 位地址。

修补程序信息

可以从 Microsoft 获得受支持的修复程序。然而,此修补程序仅用于解决本文中描述的问题。此修复程序仅适用于遇到本文中描述的问题的系统。此修补程序可能会接受进一步的测试。因此,如果这个问题没有对您造成严重的影响,我们建议您等待包含此修复程序的下一个软件更新。

如果此修复程序可供下载,则在此知识库文章的顶部会出现“修补程序下载可用”部分。如果未显示此部分,请与 Microsoft 客户服务和支持部门联系以获取此修复程序。

注意:如果出现其他问题或需要任何故障诊断时,您可能需要创建单独的服务请求。对于不符合此特定的修补程序的其他支持问题和事项将照常收取费用。有关 Microsoft 客户服务和支持电话号码或创建单独的服务请求的完整列表,请访问下面的 Microsoft 网站︰注意:"提供修补程序下载"窗体显示获取此修复程序的语言。如果看不到您的语言,则修补程序没有那种语言的版本。

系统必备组件

若要应用此修补程序,您必须运行下列操作系统之一:
  • Windows Vista Service Pack 2 (SP2)
  • Windows Server 2008 Service Pack 2 (SP2)
  • Windows 7 Service Pack 1 (SP1)
  • Windows Server 2008 R2 Service Pack 1 (SP1)
有关如何获取 Windows Vista 服务包的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

935791如何获取最新的 Windows Vista 服务包

有关如何获取 Windows Server 2008 服务包的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

968849如何获取最新的 service pack 的 Windows Server 2008

有关如何获取 Windows 7 或 Windows Server 2008 R2 Service Pack 的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

976932 Service Pack 1 为 Windows 7 和 Windows Server 2008 R2 的信息

注册表信息

若要使用此程序包中的修复程序,您不必对注册表进行任何更改。

重启要求

应用此修补程序后,必须重新启动计算机。

修补程序替换信息

此修补程序不替代以前发布的修补程序。

文件信息

此修复程序的全球版本将安装具有下表所列属性的文件。这些文件的日期和时间以协调世界时 (UTC) 列出。您的本地计算机上这些文件的日期和时间以您的本地时间加上当前夏令时 (DST) 偏差显示。此外,当您对文件执行某些操作时,日期和时间可能会更改。
Windows Vista 和 Windows Server 2008 的文件信息笔记
重要:相同的软件包中包含 Windows Vista 的修复程序和 Windows Server 2008 的修复程序。但是,只有"Windows Vista" 在修复程序请求页上列出。要请求到一个或两个操作系统的系统应用此修补程序包,请选择在"Windows Vista"页上列出的此修补程序。始终参考"适用于"一节文章,以确定每个修补程序适用于实际的操作系统。
  • 通过检查下表中显示的文件版本号,可以识别应用于特定产品、 SR_Level (RTM、 SPn) 和服务 (LDR、 GDR) 的分支的文件。
    版本产品SR_Level服务分支
    6.0.600
    2.
    22xxx
    Windows Vista 和 Windows Server 2008SP2LDR
  • 为每个环境所安装的MANIFEST文件 (.manifest) 和MUM文件 (.mum) 都单独列在了Windows Server 2008 和 Windows Vista 的信息"部分中的"附加文件大文件和清单文件和关联的安全目录 (.cat) 文件,是极其重要的维护更新组件的状态。对其属性没有列出的安全目录文件已签署 Microsoft 数字签名。
对于所有受支持的基于 x64 版本的 Windows Vista 和 Windows Server 2008
文件名称文件版本文件大小日期时间平台
Nsi.dll6.0.6002.2268811,26402-Aug-201115:27x64
Nsiproxy.sys6.0.6002.2268824,06402-Aug-201113:55x64
Nsisvc.dll6.0.6002.2268824,57602-Aug-201115:27x64
Winnsi.dll6.0.6002.2268822,01602-Aug-201115:28x64
Nsi.dll6.0.6002.22688819202-Aug-201115:17x86
Winnsi.dll6.0.6002.2268814,84802-Aug-201115:18x86
对于所有受支持的基于 IA64 的 Windows Server 2008 版本
文件名称文件版本文件大小日期时间平台
Nsi.dll6.0.6002.2268817,92002-Aug-201115:25IA-64
Nsiproxy.sys6.0.6002.2268849,66402-Aug-201114:04IA-64
Nsisvc.dll6.0.6002.2268853,24802-Aug-201115:25IA-64
Winnsi.dll6.0.6002.2268837,37602-Aug-201115:27IA-64
Nsi.dll6.0.6002.22688819202-Aug-201115:17x86
Winnsi.dll6.0.6002.2268814,84802-Aug-201115:18x86
Windows 7 和 Windows Server 2008 R2 文件信息备注
  • 通过检查下表中显示的文件版本号,可以识别应用于特定产品、 里程碑 (RTM、 SPn) 和服务分支 (LDR、 GDR) 的文件:
    版本产品里程碑服务分支
    6.1.760
    1.17xxx
    Windows 7 和 Windows Server 2008 R2SP1GDR
    6.1.760
    1.22xxx
    Windows 7 和 Windows Server 2008 R2SP1LDR
  • GDR 服务分支包含那些广泛发布以解决广泛分布的至关重要问题的修复。LDR 服务分支包含除了广泛发布的修补程序的修补程序。
  • 为每个环境安装的 MANIFEST 文件 (.manifest) 和 MUM 文件 (.mum) 在“Windows Server 2008 R2 和 Windows 7 的其他文件信息”部分单独列出。MUM 和 MANIFEST 文件以及关联的安全目录 (.cat) 文件对维护更新组件的状态极其重要。对其属性没有列出的安全目录文件已签署 Microsoft 数字签名。
对于所有受支持的基于 x64 版本的 Windows 7 以及 Windows Server 2008 R2
文件名称文件版本文件大小日期时间平台
Nsiproxy.sys6.1.7601.1785624,57602-Jun-201202:50x64
Nsiproxy.sys6.1.7601.2200924,57601-Jun-201202:35x64
Nsi.dll6.1.7601.178568,70402-Jun-201204:39x86
Winnsi.dll6.1.7601.1785616,89602-Jun-201204:41x86
Nsi.dll6.1.7601.220098,70401-Jun-201204:50x86
Winnsi.dll6.1.7601.2200916,89601-Jun-201204:52x86
对于所有受支持的基于 IA-64 的 Windows Server 2008 R2 版本
文件名称文件版本文件大小日期时间平台
Nsiproxy.sys6.1.7601.1785653,76002-Jun-201201:52IA-64
Nsiproxy.sys6.1.7601.2200953,76001-Jun-201201:53IA-64
Nsi.dll6.1.7601.178568,70402-Jun-201204:39x86
Winnsi.dll6.1.7601.1785616,89602-Jun-201204:41x86
Nsi.dll6.1.7601.220098,70401-Jun-201204:50x86
Winnsi.dll6.1.7601.2200916,89601-Jun-201204:52x86

状态


Microsoft 已经确认这是“适用于”一节中列出的 Microsoft 产品中的问题。

详细信息


有关/LARGEADDRESSAWARE选项的详细信息,请访问下面的 Microsoft 网站︰有关软件更新术语的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

用于描述 Microsoft 软件更新的标准术语的824684说明

其他文件信息

对于 Windows Vista 和 Windows Server 2008 的附加文件信息

对于所有支持基于 x64 版本的 Windows Vista 和 Windows Server 2008 的其他文件
文件名称Amd64_c6d4eaed9183d43ed82b76b624c52c50_31bf3856ad364e35_6.0.6002.22688_none_e05796d1cf0f86a5.manifest
文件版本不适用
文件大小1048
日期(UTC)04-Aug-2011
时间 (UTC)10:15
平台不适用
文件名称Amd64_microsoft-windows-usermodensi_31bf3856ad364e35_6.0.6002.22688_none_d0a25f36964eda3e.manifest
文件版本不适用
文件大小11,833
日期(UTC)02-Aug-2011
时间 (UTC)15:47
平台不适用
文件名称Update.mum
文件版本不适用
文件大小2,608
日期(UTC)04-Aug-2011
时间 (UTC)10:15
平台不适用
文件名称Wow64_microsoft-windows-usermodensi_31bf3856ad364e35_6.0.6002.22688_none_daf70988caaf9c39.manifest
文件版本不适用
文件大小7,616
日期(UTC)02-Aug-2011
时间 (UTC)15:22
平台不适用
其他文件的所有受支持的 Windows Server 2008 的基于 IA-64 的版本
文件名称Ia64_8f4e884ba8a1e575211d5b9921c9bb36_31bf3856ad364e35_6.0.6002.22688_none_e4216fea51c8ead4.manifest
文件版本不适用
文件大小1,046
日期(UTC)04-Aug-2011
时间 (UTC)10:15
平台不适用
文件名称Ia64_microsoft-windows-usermodensi_31bf3856ad364e35_6.0.6002.22688_none_748567a8ddef7204.manifest
文件版本不适用
文件大小11,824
日期(UTC)02-Aug-2011
时间 (UTC)15:36
平台不适用
文件名称Update.mum
文件版本不适用
文件大小1,930
日期(UTC)04-Aug-2011
时间 (UTC)10:15
平台不适用
文件名称Wow64_microsoft-windows-usermodensi_31bf3856ad364e35_6.0.6002.22688_none_daf70988caaf9c39.manifest
文件版本不适用
文件大小7,616
日期(UTC)02-Aug-2011
时间 (UTC)15:22
平台不适用

Windows 7 和 Windows Server 2008 R2 的附加文件信息

对于所有支持基于 x64 版本的 Windows 7 和 Windows Server 2008 R2 中的其他文件
文件名称Amd64_microsoft-windows-usermodensi_31bf3856ad364e35_6.1.7601.17856_none_d05eeee4de3204ca.manifest
文件版本不适用
文件大小8,305
日期(UTC)04-Jun-2012
时间 (UTC)08:26
平台不适用
文件名称Amd64_microsoft-windows-usermodensi_31bf3856ad364e35_6.1.7601.22009_none_d121744bf7249826.manifest
文件版本不适用
文件大小8,305
日期(UTC)04-Jun-2012
时间 (UTC)08:26
平台不适用
文件名称Update-bf.mum
文件版本不适用
文件大小2,719
日期(UTC)04-Jun-2012
时间 (UTC)08:15
平台不适用
文件名称Update.mum
文件版本不适用
文件大小2,774
日期(UTC)04-Jun-2012
时间 (UTC)08:14
平台不适用
文件名称Wow64_microsoft-windows-usermodensi_31bf3856ad364e35_6.1.7601.17856_none_dab399371292c6c5.manifest
文件版本不适用
文件大小4,690
日期(UTC)02-Jun-2012
时间 (UTC)05:01
平台不适用
文件名称Wow64_microsoft-windows-usermodensi_31bf3856ad364e35_6.1.7601.22009_none_db761e9e2b855a21.manifest
文件版本不适用
文件大小4,690
日期(UTC)01-Jun-2012
时间 (UTC)05:07
平台不适用
对于所有受支持基于 IA-64 的版本的 Windows Server 2008 R2 的附加文件
文件名称Ia64_microsoft-windows-usermodensi_31bf3856ad364e35_6.1.7601.17856_none_7441f75725d29c90.manifest
文件版本不适用
文件大小8,303
日期(UTC)04-Jun-2012
时间 (UTC)08:15
平台不适用
文件名称Ia64_microsoft-windows-usermodensi_31bf3856ad364e35_6.1.7601.22009_none_75047cbe3ec52fec.manifest
文件版本不适用
文件大小8,303
日期(UTC)04-Jun-2012
时间 (UTC)08:15
平台不适用
文件名称Update-bf.mum
文件版本不适用
文件大小1,425
日期(UTC)04-Jun-2012
时间 (UTC)08:14
平台不适用
文件名称Update.mum
文件版本不适用
文件大小1,447
日期(UTC)04-Jun-2012
时间 (UTC)08:14
平台不适用
文件名称Wow64_microsoft-windows-usermodensi_31bf3856ad364e35_6.1.7601.17856_none_dab399371292c6c5.manifest
文件版本不适用
文件大小4,690
日期(UTC)02-Jun-2012
时间 (UTC)05:01
平台不适用
文件名称Wow64_microsoft-windows-usermodensi_31bf3856ad364e35_6.1.7601.22009_none_db761e9e2b855a21.manifest
文件版本不适用
文件大小4,690
日期(UTC)01-Jun-2012
时间 (UTC)05:07
平台不适用