Winapi QOSAddSocketToFlow返回错误-未找到元素

Winapi QOSAddSocketToFlow返回错误-未找到元素,winapi,networking,packets,Winapi,Networking,Packets,我正在使用QWAVE API设置数据包中的DSCP值 我尝试在服务器和客户端之间使用设置为46的DSCP位进行多个调用 对于每个调用,我必须将套接字添加到QOS流中,这是由QOSAddSocketToFlow完成的 当某些调用的DSCP位设置不正确时,就会出现问题 此外,我发现对于那些调用QOSAddSocketToFlowAPI返回了一个错误代码: 未找到元素 如果在上指定为可能的返回代码,则此错误不存在 我正在使用QOS\u非自适应\u流量和流量类型作为Qostraffictypesteff

我正在使用QWAVE API设置数据包中的DSCP值

我尝试在服务器和客户端之间使用设置为46的DSCP位进行多个调用

对于每个调用,我必须将套接字添加到QOS流中,这是由
QOSAddSocketToFlow
完成的

当某些调用的DSCP位设置不正确时,就会出现问题

此外,我发现对于那些调用
QOSAddSocketToFlow
API返回了一个错误代码:

未找到元素

如果在上指定为可能的返回代码,则此错误不存在

我正在使用
QOS\u非自适应\u流量
和流量类型作为
Qostraffictypestefforce

QoSResult = QOSAddSocketToFlow(
     QoSHandle,
     ConnectSocket,
     sockaddr,
     QOSTrafficTypeExcellentEffort, 
      QOS_NON_ADAPTIVE_FLOW, 
     &FlowId);

我想了解在什么情况下
QOSAddSocketToFlow
会抛出此错误代码。而且,并非所有电话都会出现这种情况,一些随机电话会出现这种错误。

我想我的团队已经解决了这个问题

我们正在使用C#中的QWave API和自定义编写的pinvoke库,以便在单播udp、单播tcp和多播udp套接字上测试DSCP样式的QOS,并且我们也开始从Qosaddsockettolow中看到元素未发现错误

Qosadsockettoflow在大多数情况下都能工作,但在某些情况下,我们会出错

事实证明,QosAddSocketToFlow要求首先将套接字绑定到实际的源地址或INADDR_ANY

在我们的错误代码中,我们首先添加了qos:

if( this.dscpCodePoint != null && this.dscpCodePoint > 0 )
{
    ApplyQosCodePoint( this.dscpCodePoint.Value );
}

this.socket.Bind( new IPEndPoint( this.sourceAddress, this.sourcePort ) );
虽然这通常是有效的,但它经常会导致多播套接字抛出元素\u NOT \u FOUND错误。我们只需切换语句的顺序,错误就消失了:

this.socket.Bind( new IPEndPoint( this.sourceAddress, this.sourcePort ) );

if( this.dscpCodePoint != null && this.dscpCodePoint > 0 )
{
    ApplyQosCodePoint( this.dscpCodePoint.Value );
}

我想我的团队已经解决了这个问题

我们正在使用C#中的QWave API和自定义编写的pinvoke库,以便在单播udp、单播tcp和多播udp套接字上测试DSCP样式的QOS,并且我们也开始从Qosaddsockettolow中看到元素未发现错误

Qosadsockettoflow在大多数情况下都能工作,但在某些情况下,我们会出错

事实证明,QosAddSocketToFlow要求首先将套接字绑定到实际的源地址或INADDR_ANY

在我们的错误代码中,我们首先添加了qos:

if( this.dscpCodePoint != null && this.dscpCodePoint > 0 )
{
    ApplyQosCodePoint( this.dscpCodePoint.Value );
}

this.socket.Bind( new IPEndPoint( this.sourceAddress, this.sourcePort ) );
虽然这通常是有效的,但它经常会导致多播套接字抛出元素\u NOT \u FOUND错误。我们只需切换语句的顺序,错误就消失了:

this.socket.Bind( new IPEndPoint( this.sourceAddress, this.sourcePort ) );

if( this.dscpCodePoint != null && this.dscpCodePoint > 0 )
{
    ApplyQosCodePoint( this.dscpCodePoint.Value );
}

欢迎来到SO。请添加一些代码以帮助其他人重现您的问题。我们无法看到您的代码。发布一个帖子,这样我们就不用猜了。此外,如果您仔细阅读文档,您将看到它明确指出,该表显示了“一些可能的错误代码”。您的代码还需要准备好处理其他错误代码。使用更多信息更新了问题@IInspectable“并非所有调用都会发生这种情况,一些随机调用会出现此错误”-这是一个很好的迹象,表明代码中存在错误。代码,我们看不见。除非您提供答案,否则此问题将无效,并将作为非主题关闭。欢迎使用。请添加一些代码以帮助其他人重现您的问题。我们无法看到您的代码。发布一个帖子,这样我们就不用猜了。此外,如果您仔细阅读文档,您将看到它明确指出,该表显示了“一些可能的错误代码”。您的代码还需要准备好处理其他错误代码。使用更多信息更新了问题@IInspectable“并非所有调用都会发生这种情况,一些随机调用会出现此错误”-这是一个很好的迹象,表明代码中存在错误。代码,我们看不见。除非您提供,否则此问题将无效,并将作为非主题关闭。您能否共享ApplyQosCodePoint中使用的pinvoke代码?:)您能否共享ApplyQosCodePoint中使用的pinvoke代码?:)