DeleteIPAddress 功能有效,但会触发断开连接
Posted
技术标签:
【中文标题】DeleteIPAddress 功能有效,但会触发断开连接【英文标题】:DeleteIPAddress function works, but triggers a disconnection 【发布时间】:2019-05-22 09:27:56 【问题描述】:我有一个小应用程序,它使用 IP Helper 中的 AddIPAddress 函数临时添加几个 (3-4) IP 地址。几秒钟后 (2-3),它使用 DeleteIPAddress 函数删除这些地址。
DeleteIPAddress 函数有效,不返回错误,但有时(每 3 或 4 轮添加和删除一次)会触发接口上的断开事件(就像断开和连接电缆一样)。
我想避免这些断开连接,因为它们会切断在同一界面中进行的任何通信,但我在文档中看不到有关此行为的任何内容。
这是我添加每个 IP 地址的方式:
auto dwRetVal = AddIPAddress(iaIPAddress, iaIPMask, _idx, &NTEContext, &NTEInstance);
if (dwRetVal == ERROR)
std::cout << "Error on AddIPAddress" << std::endl;
这就是我删除它们的方式:
auto dwRetVal = DeleteIPAddress(ipContext);
if (dwRetVal != NO_ERROR)
std::cout << "Error on DeleteIPAddress" << std::endl;
我错过了什么吗?
【问题讨论】:
【参考方案1】:你没有正确检查AddIPAddress
的返回值,你应该测试!= ERROR_SUCCESS
。
如果AddIPAddress
失败,您不应调用 delete。
【讨论】:
谢谢。但我认为情况并非如此,因为如果我从 GetAdaptersInfo 获取上下文也会发生这种情况。此外,使用 AddIPAddress 后,我可以看到接口已正确添加了地址。而且,如果我使用无效的上下文(如果 AddIPAddress 失败),我会收到来自 DeleteIPAddress 的错误。无论如何,谢谢你的提示,我也会改变它。 我不知道这是否也能解决问题,但由于您发布的代码有问题,我不得不添加这个答案。 ipContext 是表中的偏移量或类似的东西,理论上堆栈中的随机值可能会意外删除某些内容。以上是关于DeleteIPAddress 功能有效,但会触发断开连接的主要内容,如果未能解决你的问题,请参考以下文章
Dash Plotly中的烛台图和折线图,它会随着回调而更新,但会消失