0x000006D9: 终结点映射器中没有更多的终结点可用。 。

很早就遇到【0x000006D9: 终结点映射器中没有更多的终结点可用】这个问题,以前也没找到原因,今天又遇到这个问题,打着刨根问底的想法,又搜索了一遍网络,发现这个问题微软在http://support.microsoft.com/kb/2123653/en-us?fr=1有个原因说明,它说的是打印机共享时出现的这个现象,不过它们的原因应当是一样的。如果本机的防火墙服务【Windows Firewall/Internet Connection Sharing (ICS)】是禁用或停止状态,在建立socket连接时使用调试模式就会出现这个问题,这个并不影响程序的正常运行,只是看见异常觉得不舒服,其实只要将防火墙服务启动起来就不会出现这个异常提示了。

转自:http://hi.baidu.com/inlookme/item/e55ebc3c6250cc5981f1a796

参考:http://support.microsoft.com/kb/2123653/en-us?fr=1

http://support.microsoft.com/kb/2123653/zh-cn


ps:如果程序中进行socket编程,调用listen函数,而Windows Firewall/Internet Connection Sharing (ICS)没启动,就会报这个警告

使用f11查看windows,listen汇编源码,堆栈如下

     hnetcfg.dll!_NdrClientCall2()     
     hnetcfg.dll!_FwOpenDynamicFwPort@16()  + 0x1b    
     hnetcfg.dll!_IcfOpenDynamicFwPort@12()  + 0x6a    
     mswsock.dll!719c77d2()     
     ws2_32.dll!_listen@8()  + 0x43    

应该是listen使用NdrClientCall2检查了防火墙服务开没开,如果没开,输出了上面那句话

参考:http://msdn.microsoft.com/en-us/library/windows/desktop/aa374215%28v=vs.85%29.aspx


你可能感兴趣的:(windows,firewall,listen,终结点映射器,NdrClientCall2,0x000006D9)