gethostbyname显示“没有此服务已知”。在指定的命名空间中找不到该服务。

10
在Windows中,这段简单的代码会导致gethostbyname输出一个令人讨厌的调试信息。
#include <stdio.h>
#include <winsock.h>
int main()
{
    WSADATA wsaData;
    WSAStartup(MAKEWORD(2, 2), &wsaData);
    hostent* he = gethostbyname("www.stackoverflow.com");
    char* ip = inet_ntoa(*(struct in_addr*)he->h_addr_list[0]);
    printf(ip);
}

翻译:

onecore\net\netprofiles\service\src\nsp\dll\namespaceserviceprovider.cpp(550)\nlansp_c.dll!00007FFCFC1FC759: (caller: 00007FFD2856388E) LogHr(1) tid(6e14) 8007277C No such service is known. The service cannot be found in the specified name space.

我在使用Windows操作系统,并使用Visual Studio 2019。如何省略此信息?目前我正在调试,由于我的日志完全被这个消息填满,很难找到所需的日志。

你碰巧在使用Windows 11吗? - J...
@J... 是的,我是! - s4eed
@s4eed 谢谢。我没有解决方案,但最近在Win11中测试构建的一个大型项目的调试输出中也注意到了类似的污染 - 一套COM错误,像这个错误一样,大多与对AD/LDAP的WinAPI调用以及命名空间服务提供程序(如您所示)有关。该项目是用Delphi构建的,但具有约二十年的依赖关系,底层某些东西正在生成数百个这些调试输出错误。奇怪的是,我们在应用程序本身中看不到任何损坏,但我还没有找到原因。在Win11中有些变化... - J...
@J...跟我一模一样。在Windows 10中我没有这个日志,但在Windows 11中有了。有人在评论中说它已经被弃用了。 - s4eed
当我调用ADsGetObject时,我会得到类似的调试输出,而这个函数并没有被弃用... - J...
显示剩余7条评论
1个回答

8
"The behaviour you're seeing seems to be due to 分层服务提供程序在Win11(以及可能的即将推出的Win10更新)中被弃用GetHostByName被列为已弃用,但是GetHostName没有被弃用,并且也显示相同的行为。在这两种情况下,该方法首先查询任何可用的命名空间服务提供程序,然后如果找不到,则回退到查询NetBIOS名称。从Win11开始,枚举命名空间服务提供程序的调用会在内部失败,生成您看到的调试输出。"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接