【问题标题】:SetPerTcpConnectionEStats and GetPerTcpConnectionEStats is returning error code 1214 (invalid NETNAME)SetPerTcpConnectionEStats 和 GetPerTcpConnectionEStats 返回错误代码 1214(无效的 NETNAME)
【发布时间】:2020-12-16 15:25:39
【问题描述】:

我正在尝试在我的 c++ 服务中获取类似于 Windows 中“资源监视器”中显示的统计信息。为此,我使用了https://docs.microsoft.com/en-gb/windows/win32/api/iphlpapi/nf-iphlpapi-getpertcp6connectionestats?redirectedfrom=MSDN 中显示的示例。但我被卡住了,因为 SetPerTcpConnectionEStats 和 GetPerTcpConnectionEStats 返回错误代码 1214。唯一的区别 btn。上面提到的链接和我的示例中的代码是我不是在特定的本地和远程端口上工作,而是在 tcp 表中的所有条目上工作,但我认为这不会有任何区别。

有人可以帮帮我吗?

【问题讨论】:

    标签: windows winapi tcp tcpdump


    【解决方案1】:

    如果我使用所有条目,我可以重现此错误。根据您链接的示例,除了本地和远程端口之外,GetTcpRow 还有一个搜索参数MIB_TCP_STATE_ESTAB。该状态是 TCP 连接数据传输阶段的正常状态。

    以下示例适用于我。

    DWORD RunEstatsTest(bool v6) //set as IPv4(FALSE)
    {
        PMIB_TCPTABLE tcpTable = NULL;
    
        DWORD status, size = 0;
    
        status = GetTcpTable(tcpTable, &size, TRUE);
        if (status != ERROR_INSUFFICIENT_BUFFER) {
            return status;
        }
        tcpTable = (PMIB_TCPTABLE)malloc(size);
        if (tcpTable == NULL) {
            return ERROR_OUTOFMEMORY;
        }
        status = GetTcpTable(tcpTable, &size, TRUE);
        if (status != ERROR_SUCCESS) {
            free(tcpTable);
            return status;
        }
    
        for (int i = 0; i < tcpTable->dwNumEntries; i++) {
            if (MIB_TCP_STATE_ESTAB == tcpTable->table[i].State)
            {
                ToggleAllEstats(&tcpTable->table[i], TRUE, v6);
    
                GetAllEstats(&tcpTable->table[i], v6);
    
                ToggleAllEstats(&tcpTable->table[i], FALSE, v6);
            }
        }
        free(tcpTable);
        return ERROR_SUCCESS;
    }
    

    【讨论】:

    • 感谢您的回复,这解决了问题。我正在浏览该表,可以看到所有状态不等于 MIB_TCP_STATE_ESTAB 且 remoteAddr 和 remoteSocket 为 0 的条目。关于在此表中使用此类条目的任何想法?
    猜你喜欢
    • 2020-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-13
    • 2011-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多