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 功能有效,但会触发断开连接的主要内容,如果未能解决你的问题,请参考以下文章

具有模态按钮类型问题的 AngularJs 函数

Core Data 不会触发实体属性的错误,但会触发关系

ASP.Net 按钮不会触发,但会在第二个触发

Dash Plotly中的烛台图和折线图,它会随着回调而更新,但会消失

didSelectRowAt indexPath 在点击时不会(但会在单元格向任一方向滑动时触发)

PendingIntents / AlarmManager不会添加延迟但会立即触发警报