Skip to main content

Depuração de pilhas HTTP personalizadas

Use este artigo quando seu título usar uma pilha HTTP personalizada diretamente em vez do xCurl e você precisar depurar o tráfego por meio de um proxy, como a XBOX Multiplayer Analysis Tool (XMAT). Para obter as instruções e os downloads originais, consulte a documentação do projeto XMAT e as versões da XMAT. O Fiddler também é compatível.

Quando usar estas diretrizes

Estas diretrizes são mais úteis quando uma ou mais das seguintes condições se aplicam:
  • Seu título precisa inspecionar ou aplicar as configurações de proxy diretamente.
  • Seu fluxo de trabalho de depuração depende da XMAT, do Fiddler ou de outro proxy de desenvolvimento.
  • Sua pilha HTTP não usa o Schannel como provedor de segurança e precisa carregar os certificados do proxy explicitamente.
Para obter diretrizes gerais de segurança, consulte Práticas recomendadas para solicitações da Web e WebSockets seguros para títulos do Microsoft Game Development Kit.

Configurações de proxy no XBOX e no PC

Ao lidar com as configurações de proxy no XBOX, prefira WinHttpGetProxySettingsEx com WinHttpProxySettingsTypeXBox quando esse caminho estiver disponível no seu build e no ambiente de destino. No XBOX, essa API é a API voltada para o futuro para ler as configurações de proxy a partir do Microsoft Game Development Kit (GDK) de abril de 2026. Se o seu título for destinado a um GDK anterior no XBOX, o caminho de configurações de proxy específico do XBOX não estará disponível. Nesse caso, defina manualmente o endereço e a porta do proxy na sua pilha HTTP. O caminho de carregamento de certificados descrito mais adiante neste artigo ainda se aplica a esses GDKs mais antigos, mesmo que a API de endereço de proxy específica do XBOX não esteja disponível. Os títulos para PC também podem consultar as configurações de proxy por meio do WinHTTP, mas não copie o fluxo do XBOX diretamente. No PC, WinHttpGetProxySettingsEx é assíncrona, portanto, aguarde a conclusão da operação antes de chamar WinHttpGetProxySettingsResultEx e copiar os valores de proxy retornados para a sua pilha HTTP. Um exemplo usando a libcurl é resolver o endereço do proxy com a API de configurações de proxy do XBOX e, em seguida, passá-lo diretamente para a pilha. O exemplo abre a sessão com WINHTTP_FLAG_ASYNC e registra um retorno de chamada de status para que o código trate tanto a conclusão síncrona quanto um retorno ERROR_IO_PENDING. O exemplo a seguir mostra o fluxo de chamadas:

Comportamento do provedor TLS

Pilhas baseadas em Schannel

Se a sua pilha depender do comportamento de TLS baseado em Schannel, o console aplicará automaticamente o certificado de proxy que você configurar. Esse comportamento também se aplica a builds da libcurl que usam o Schannel como provedor TLS.

Pilhas que não usam Schannel

Se a sua pilha depender do OpenSSL ou de outro provedor TLS que não seja o Schannel, seu título será responsável por carregar explicitamente o certificado exigido pela ferramenta de depuração ativa. Mantenha esse caminho de carregamento de certificados no seu código de versão de lançamento. No console, os títulos também devem manter o caminho de depuração de proxy relacionado disponível em builds RETAIL para que você ainda possa diagnosticar o tráfego que passa pelo proxy quando necessário. Para obter diretrizes sobre confiança, proxy e padrões seguros, consulte Práticas recomendadas para solicitações da Web e WebSockets seguros para títulos do Microsoft Game Development Kit.

Localizar o certificado raiz do proxy

Para pilhas que não usam Schannel, carregue explicitamente o certificado que corresponde à ferramenta de depuração e mantenha esse caminho no seu código de versão de lançamento. O local e o assunto do certificado dependem da ferramenta. Por exemplo, a XBOX Multiplayer Analysis Tool (XMAT) usa o certificado Xbox Multiplayer Analysis Tool Root Cert Authority em CurrentUser\Root. Este exemplo procura esse certificado e copia os bytes do certificado codificado em DER para um buffer pertencente ao título.
Após essa etapa, passe encodedCertificate para o caminho de carregamento de certificados usado pelo seu provedor TLS.

Fluxo de trabalho de depuração sugerido

  1. Configure o console para o proxy de depuração:
  2. Se o seu destino for o XBOX com o GDK de abril de 2026 ou posterior e o seu título precisar inspecionar as configurações de proxy diretamente, use WinHttpGetProxySettingsEx com WinHttpProxySettingsTypeXBox.
  3. Se o caminho de código do PC consultar as configurações de proxy por meio do WinHTTP, aguarde o resultado assíncrono antes de chamar WinHttpGetProxySettingsResultEx e aplicar os valores de proxy retornados.
  4. Se o seu destino for um GDK anterior no XBOX ou se você usar uma pilha que não consome o caminho de configurações de proxy específico do XBOX, defina o endereço e a porta do proxy manualmente no seu título.
  5. Se você usar o Schannel, conte com o certificado aplicado pelo console. Se você usar o OpenSSL ou outra pilha, recupere o certificado da ferramenta de depuração que está usando no repositório de certificados e carregue-o explicitamente.

Páginas relacionadas

Last modified on October 6, 2026