
我正在嘗試向 SIP 用戶端添加 ToS (QoS) 支援(取自開源 Linphone),如下所示:
retval = setsockopt(session->rtp.socket, proto, value_type, (SOCKET_OPTION_VALUE)&tos, sizeof(tos));
但在Windows 7中,我所有新增ToS的嘗試都失敗了;它繼續設定零(如 Wireshark 中所示)。有人說這是 Windows 中的一個「功能」(讀取錯誤)。
我讀到這一頁如何建立 QoS 策略,因此我使用 GUI 手動建立了一個策略:
我嘗試了以下步驟:
- 去
HKLM\System\CurrentControlSet\Services\Tcpip\QoS
QoS
如果密鑰不存在則創建- 新增一個
REG-SZ
名為的參數Do not use NLA
並為其賦予值1
- 重啟
它按預期工作,但現在我的問題是如何自動建立這樣的策略(例如,以便可以在程式安裝期間完成)?
[編輯]
我的程式碼是純 C 的,使用 C# 原始碼會有點問題,因為我minGW
使用./configure && make && make install
.
答案1
文章以程式設計方式更新 Windows 中的本機策略描述了一個可以幫助解決此問題的 .NET 程式庫。
如果您不想編寫 .net 程序,最簡單的解決方案是建立一個 自動熱鍵宏,可能編譯為 .exe,它將執行建立該群組原則的 GUI 操作。
如果您使用的是 Windows 8 或 Server 2012,則可以透過 PowerShell 設定 QoS:
Windows PowerShell 中的網路服務品質 (QoS) Cmdlet。