Partilhar via


Como: desativar o diagnóstico de gráficos no seu aplicativo

Você pode impedir diagnósticos de elementos gráficos e outras ferramentas para inspecionar seu app para ajudar a evitar a exploração por um usuário mal-intencionado.

Usando os Diagnósticos Gráficos do Visual Studio conforme desenvolve seu aplicativo, você pode capturar informações detalhadas e analisá-las de modo a melhorar o aplicativo antes de publicar.No entanto, se você não evita que os Diagnósticos Gráficos capture estas informações antes de publicar o aplicativo, um usuário mal-intencionado pode usar estas ferramentas para extrair os recursos de arte, código do sombreador, e outras informações, e então usa-os para explorar o aplicativo.Por exemplo, um usuário mal-intencionado pode modificar o código de recursos e do sombreador para obter uma vantagem injusta em um jogo online.

Platform e suporte SDK

Em Windows SDK para Windows 8, o Direct3D 10 inclui suporte de sinalizadores adicionais para a criação do dispositivo.Em particular, ele inclui D3D11_CREATE_DEVICE_PREVENT_ALTERING_LAYER_SETTINGS_FROM_REGISTRY, que é usado para evitar ferramentas de criação de perfil dos gráficos como Diagnósticos dos Gráficos a partir de ganchos em um aplicativo.Os aplicativos que referenciam arquivos de cabeçalho do Direct3D incluídos no Windows SDK para Windows 8 podem usar esses novos sinalizadores, mas aplicativos que referenciam arquivos de cabeçalho do Direct3D no DirectX SDK de junho de 2010 não podem.Isso se aplica a aplicativos executados em Windows 8 e Windows 7.

No Direct3D 11.1, você pode usar ID3DUserDefinedAnnotation::GetStatus para evitar que ferramentas de criação de perfil de gráficos capture informações sobre seu aplicativo.Como essa interface não está disponível para Windows 7, mesmo quando referenciando o Windows SDK para Windows 8, isso se aplica somente aos aplicativos executados no Windows 8.

Para os aplicativos que não fazem referência aos cabeçalhos atualizados do Direct3D no Windows SDK para Windows 8, você pode impedir que as ferramentas de elementos gráficos capturem informações compilando o aplicativo contra o Direct3D 9Ex e usando o API D3DPerf_SetOptions.

O Direct3D 11.1 fornece duas maneiras de evitar que ferramentas de perfil de gráficos, como os Diagnóstico Gráficos, sejam anexadas a um aplicativo.A primeira técnica é usar ID3DUserDefinedAnnotation::GetStatus para detectar se o aplicativo está sendo observado por uma ferramenta de criação de perfil e, se estiver, saia do aplicativo imediatamente.Use essa técnica quando você deseja executar uma ação antes que o app seja fechado.A segunda técnica é definir o sinalizador apropriado quando você cria seu dispositivo Direct3D.

Para evitar gráficos de perfil usando o Direct3D 11 e o Windows SDK para Windows 8

  • No código-fonte do seu aplicativo, antes que quaisquer chamadas do Direct3D confidenciais sejam feitas, chamar o método ID3DUserDefinedAnnotation::GetStatus e escrever o código que faz com que o aplicativo feche imediatamente se o valor de retorno é diferente de zero.

    - ou -

    Quando você cria o dispositivo Direct3D 11 no código-fonte do seu app, passe um o sinalizador D3D11_CREATE_DEVICE_PREVENT_ALTERING_LAYER_SETTINGS_FROM_REGISTRY .Para obter informações sobre como criar um dispositivo Direct3D 11, consulte D3D11CreateDevice e D3D11CreateDeviceAndSwapChain.Para obter informações sobre o sinalizador D3D11_CREATE_DEVICE_PREVENT_ALTERING_LAYER_SETTINGS_FROM_REGISTRY, consulte Enumeração D3D11_CREATE_DEVICE_FLAG.

O Direct3D 10 fornece uma técnica que se assemelha à segunda técnica do Direct3D 11 quando você está referenciando o Windows SDK para arquivos de cabeçalho do Windows 8.

Para evitar gráficos de perfil usando o Direct3D 10 e o Windows SDK para Windows 8

  • Quando você cria o dispositivo de Direct3D 10 no código-fonte do seu aplicativo, passe um sinalizador de D3D10_CREATE_DEVICE_PREVENT_ALTERING_LAYER_SETTINGS_FROM_REGISTRY.Para obter informações sobre como criar um dispositivo Direct3D 10 ou 10.1, consulte Direct3D 10. Funções principaisPara obter informações sobre o sinalizador D3D10_CREATE_DEVICE_PREVENT_ALTERING_LAYER_SETTINGS_FROM_REGISTRY, consulte Enumeração D3D10_CREATE_DEVICE_FLAG.

Você também pode impedir que as ferramentas de perfilamento dos elementos gráficos como Graphics Diagnostics prendam seu app usando SDK do DirectX de junho de 2010 em vez de Windows SDK para Windows 8.

Para evitar que elementos gráficos criem perfis usando o DirectX SDK de junho de 2010

  1. Configure seu aplicativo para compilar com os arquivos de cabeçalho do DirectX 9Ex.

  2. Antes de criar o dispositivo Direct3D no código-fonte do seu aplicativo, chame o API D3DPERF_SetOptions e use um parâmetro 1.Para mais informações, consulte a documentação para junho de 2010 do DirectX SDK.