
Estoy intentando agregar soporte ToS (QoS) a un cliente SIP (tomado de Linphone de código abierto) de la siguiente manera:
retval = setsockopt(session->rtp.socket, proto, value_type, (SOCKET_OPTION_VALUE)&tos, sizeof(tos));
Pero en Windows 7, todos mis intentos de agregar ToS fallaron; continúa estableciendo ceros (como se ve en Wireshark). Alguien dijo que es una "característica" (léase error) en Windows.
leí enesta páginacómo crear una política de QoS, así que creé una manualmente usando la GUI:
Intenté los siguientes pasos:
- Ir a
HKLM\System\CurrentControlSet\Services\Tcpip\QoS
- Crea la
QoS
clave si no existe - Agregue un
REG-SZ
parámetro llamadoDo not use NLA
y asígnele el valor.1
- Reiniciar
Funciona como lo deseo, pero ahora mi pregunta es ¿cómo puedo automatizar la creación de dicha política (por ejemplo, para que pueda realizarse durante la instalación de un programa)?
[EDITAR]
Mi código es C puro y usar el código fuente de C# será un poco problemático ya que uso el minGW
entorno y las herramientas con ./configure && make && make install
.
Respuesta1
El artículoActualización programática de la política local en Windowsdescribe una biblioteca .NET que puede ayudar con este problema.
Si no desea escribir un programa .net, la solución más sencilla sería crear un AutoHotkeymacro, posiblemente compilada en un .exe, que realizará las manipulaciones de la GUI que crean esa política de grupo.
Si utiliza Windows 8 o Server 2012, la configuración de QoS es posible a través de PowerShell:
Cmdlets de calidad de servicio (QoS) de red en Windows PowerShell.