DirectPlay 玩家连接可能未建立而且可能不出现错误消息

针对 Windows XP 的支持已终止

Microsoft 已于 2014 年 4 月 8 日终止了针对 Windows XP 的支持。该更改已影响到您的软件更新和安全选项。 了解这一措施对于您的含义以及如何继续保持受保护状态。

本文已归档。它按“原样”提供,并且不再更新。
症状
如果一个对等玩家(在对等模式中)调用 IDirectPlay8Peer::Connect 或者如果一个客户机(在客户机/服务器模式中)调用 IDirectPlay8Client::Connect 以连接 DirectPlay8 会话,会话不建立,而且您也收不到错误消息。
原因
对于对等玩家,连接目标是主玩家,以便建立对等会话。对于客户机玩家,连接目标是服务器玩家,以便建立“客户机/服务器”会话。连接过程涉及在对等/客户机玩家和主/服务器玩家之间建立一个链路,接着通过此链路进行多阶段握手以对加入者进入会话加以验证。如果在连接过程仍在进行中时到主玩家或服务器玩家的连接丢失,则连接过程将不会成功。这会导致下面的情况:
  • 如果同时调用了 IDirectPlay8Peer::ConnectIDirectPlay8Client::Connect,它将返回一个错误消息。
  • 如果异步调用了 IDirectPlay8Peer::ConnectIDirectPlay8Client::Connect,它将向程序的消息处理器发送一个 DPN_MSGID_CONNECT_COMPLETE 通知并附带一个错误消息。
  • 在丢失连接前创建的 DPN_MSGID_CREATE_PLAYER 通知应与匹配的 DPN_MSGID_DESTROY_PLAYER 通知一起展现。
在某些情况下,Microsoft DirectX 8.1 和用于 Windows XP 客户机的 DirectPlay 8.0 版本(不能在 Windows XP 客户机上安装 DirectX 8.1)不使用这一行为,而是让到主(或服务器)玩家的连接悄然断开,并且发生以下现象:
  • 如果同步调用了 IDirectPlay8Peer::ConnectIDirectPlay8Client::Connect,它将成功返回 (DPN_OK)。
  • 如果异步调用了 IDirectPlay8Peer::ConnectIDirectPlay8Client::Connect,它将向程序的消息处理器 (DPN_OK) 发送一个表明成功完成的 (DPN_MSGID_CONNECT_COMPLETE) 通知。
  • 将不向程序的消息处理器发送 DPN_MSGID_DESTROY_PLAYER 消息。
解决方案
要解决此问题,请获取最新的 Windows XP Service Pack。有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
322389 How to Obtain the Latest Windows XP Service Pack
该修复程序的英文版应具有如下文件属性或更新的属性:
Date         Time   Version      Size     File name   ---------------------------------------------------18-Apr-2002  17:05  5.1.2600.43  156,672  Dpnet.dll				

状态
Microsoft 已经确认这是在本文开头列出的 Microsoft 产品中存在的问题。 这个问题已在 Windows XP Service Pack 1 中得到纠正。
属性

文章 ID:321463 - 上次审阅时间:01/12/2015 20:11:02 - 修订版本: 1.1

  • Microsoft Windows XP Home Edition
  • Microsoft Windows XP Professional Edition
  • kbnosurvey kbarchive kbbug kbfix kbqfe kbmm kbwinxpsp1fix kbhotfixserver KB321463
反馈