Skip to main content

偵錯自訂 HTTP 堆疊

當您的遊戲直接使用自訂 HTTP 堆疊而非 xCurl,且您需要透過 XBOX Multiplayer Analysis Tool (XMAT) 等 Proxy 偵錯流量時,請使用本文。如需上游指示和下載,請參閱 XMAT 專案文件和 XMAT 版本。也支援 Fiddler。

使用此指引的時機

當下列一或多項情況適用時,此指引最為實用:
  • 您的遊戲需要直接檢查或套用 Proxy 設定。
  • 您的偵錯工作流程依賴 XMAT、Fiddler 或其他開發用 Proxy。
  • 您的 HTTP 堆疊不使用 Schannel 作為安全性提供者,且必須明確載入 Proxy 憑證。
如需一般安全性指引,請參閱 Microsoft Game Development Kit 遊戲的安全 Web 要求與 WebSocket 最佳做法。

XBOX 與 PC 上的 Proxy 設定

在 XBOX 上處理 Proxy 設定時,如果您的組建和目標環境中可使用該路徑,請優先搭配 WinHttpProxySettingsTypeXBox 使用 WinHttpGetProxySettingsEx。在 XBOX 上,從 2026 年 4 月版 Microsoft Game Development Kit (GDK) 開始,此 API 是讀取 Proxy 設定的前瞻性 API。 如果您的遊戲在 XBOX 上以較早的 GDK 為目標,則無法使用 XBOX 專用的 Proxy 設定路徑。在此情況下,請在您的 HTTP 堆疊中手動設定 Proxy 位址和連接埠。即使無法使用 XBOX 專用的 Proxy 位址 API,本文稍後所述的憑證載入路徑仍適用於這些較舊的 GDK。 PC 遊戲也可以透過 WinHTTP 查詢 Proxy 設定,但請勿直接複製 XBOX 的流程。在 PC 上,WinHttpGetProxySettingsEx 是非同步的,因此請等候作業完成,再呼叫 WinHttpGetProxySettingsResultEx 並將傳回的 Proxy 值複製到您的 HTTP 堆疊中。 以 libcurl 為例,可以使用 XBOX Proxy 設定 API 解析 Proxy 位址,然後直接將其傳入堆疊。此範例使用 WINHTTP_FLAG_ASYNC 開啟工作階段並註冊狀態回呼,讓程式碼同時處理同步完成和 ERROR_IO_PENDING 傳回值。下列範例顯示呼叫流程:

TLS 提供者行為

以 Schannel 為基礎的堆疊

如果您的堆疊依賴 Schannel 支援的 TLS 行為,主機會自動套用您設定的 Proxy 憑證。此行為也適用於使用 Schannel 作為 TLS 提供者的 libcurl 組建。

非 Schannel 堆疊

如果您的堆疊依賴 OpenSSL 或其他非 Schannel 的 TLS 提供者,您的遊戲必須負責明確載入作用中偵錯工具所需的憑證。請在發行程式碼中保留此憑證載入路徑。在主機上,遊戲也應在 RETAIL 組建中保留相關的 Proxy 偵錯路徑,以便在需要時仍能診斷經由 Proxy 的流量。 如需信任、Proxy 及安全預設值的指引,請參閱 Microsoft Game Development Kit 遊戲的安全 Web 要求與 WebSocket 最佳做法。

尋找 Proxy 根憑證

對於非 Schannel 堆疊,請明確載入對應於偵錯工具的憑證,並在發行程式碼中保留此路徑。憑證位置和主體取決於工具。例如,XBOX Multiplayer Analysis Tool (XMAT) 使用 CurrentUser\Root 中的憑證 Xbox Multiplayer Analysis Tool Root Cert Authority。此範例會查詢該憑證,並將 DER 編碼的憑證位元組複製到遊戲擁有的緩衝區中。
完成此步驟後,請將 encodedCertificate 傳入您的 TLS 提供者所使用的任何憑證載入路徑。

建議的偵錯工作流程

  1. 針對偵錯 Proxy 設定主機:
  2. 如果您以 2026 年 4 月版或更新版本的 GDK 為 XBOX 目標,且您的遊戲需要直接檢查 Proxy 設定,請搭配 WinHttpProxySettingsTypeXBox 使用 WinHttpGetProxySettingsEx。
  3. 如果您的 PC 程式碼路徑透過 WinHTTP 查詢 Proxy 設定,請等候非同步結果,再呼叫 WinHttpGetProxySettingsResultEx 並套用傳回的 Proxy 值。
  4. 如果您在 XBOX 上以較早的 GDK 為目標,或使用不採用 XBOX 專用 Proxy 設定路徑的堆疊,請在遊戲內手動設定 Proxy 位址和連接埠。
  5. 如果您使用 Schannel,請依賴主機套用的憑證。如果您使用 OpenSSL 或其他堆疊,請從憑證存放區擷取您所使用偵錯工具的憑證,並明確載入。

相關頁面

Last modified on October 6, 2026