0

我正在尝试查询连接的 RasStatus。当我调用 RasGetConnectStatus 方法时,它返回 6。我在我阅读过的任何文档中都没有找到那个特定的返回值。

以下是我看过的一些页面:

http://www.cs.scranton.edu/~beidler/Ada/win32/win32-raserror.html

http://msdn.microsoft.com/en-us/library/aa920162.aspx

http://msdn.microsoft.com/en-us/library/bb530704(v=vs.85).aspx

我正在使用 C# 和 .net 4.0

编辑:实际调用的代码如下:

uint result;
RASCONNSTATUS rasconnstatus; // http://pinvoke.net/default.aspx/Structures/RASCONNSTATUS.html
// _handle is previously set to the hwnd of the ras connection
result = RASAPI.RasGetConnectStatus(_handle, out rasconnstatus);

return rasconnstatus;

返回时,结果 == 6 和 rasconnstatus.rasconnstate == 0

我需要找出结果 == 6 的原因。

4

2 回答 2

1

查找 Win32 错误代码的最简单方法是直接查看 Windows SDK 中的头文件。它们中的大多数都位于您安装 Windows SDK 的包含文件夹中的 WinError.h 文件中。对于 RAS 特定错误(结果将在 600 到 900 之间),这些错误位于 RasError.h 文件中。

如果您的结果为 6,则表示 ERROR_INVALID_HANDLE;这在 RAS 中意味着它不喜欢您传递给函数的连接句柄。在您的代码示例中,这将是 _handle。

顺便说一句,您可能想看看在 CodePlex 上使用 DotRas 项目,它是 RAS API 周围的 .NET 包装器。您感兴趣的特定方法是 RasConnection.GetConnectionStatus,它从该结构返回数据。

foreach (RasConnection conn in RasConnection.GetActiveConnections())
{
    RasConnectionStatus status = conn.GetConnectionStatus();
    // Do something useful.
}

WinError.h 文件也可在此处在线获取:http: //msdn.microsoft.com/en-us/library/ms819772.aspx

希望有帮助!

于 2011-07-25T16:09:54.007 回答
-1

在这里你应该找到你的答案http://msdn.microsoft.com/en-us/library/aa920538.aspx这是 RasGetConnectStatus 返回的 RASCONNSTATE 的枚举值。值 6 应该等于 RASCS_AuthNotify,你会发现这个描述:

发生了身份验证事件。如果 dwError 为零,则此事件之后将立即跟随更具体的身份验证状态之一。如果 dwError 不为零,则验证失败,错误值指示原因。

也许与一些阻止连接的防火墙规则有关。

更新链接来自 windows mobile 6.5 文档。对于 Windows 1 这个链接

于 2011-03-22T09:16:19.980 回答