AccessViolationException sur le D3D11_CREATE_DEVICE en Debug
Si vous utilisiez DirectX dans une application Windows 8.1, peut-être avez-vous eu affaire à une AccessViolationException lorsque vous avez voulu recompiler ce même projet sur Windows 10. Si votre code référençait un D3D11_CREATE_DEVICE_DEBUG alors vous êtes sur le bon post.
Si vous ne touchez à rien, le code compilera sans problème en Release avec D3D11_CREATE_DEVICE_BGRA_SUPPORT mais si vous passez en Release avec D3D11_CREATE_DEVICE_DEBUG, alors là le code ne fonctionnera pas. Le problème vient du fait qu'il vous faut installer les Graphics Diagnostics Tools pour activer le DirectX Debug Layer sur votre machine : Start > Settings > System > Optional Features > Add a feature > Graphics Tools.
Cependant, si vous êtes sur Windows Enterprise vous pourriez n'avoir aucune feature listée dans la page. Pour remédier au problème, il faudra passer par le registre et changer la clé UseWUServer à 0 :
Regedit > HKEY_LOCAL_MACHINE > SOFTWARE > POLICIES > MICROSOFT > WINDOWS > WindowsUpdate > AU > UseWUServer.
Normalement après avoir redémarré votre PC vous devriez obtenir la liste de toutes les features disponibles pour votre machine et ainsi installer les Graphics Tools.
Relancez votre application, et hop ça refonctionne !
Eventuellement, si vous ne voulez pas installer les Graphics Tools et juste lancer l'application en Debug, vous pouvez rajouter une condition en debug permettant d’utiliser D3D11_CREATE_DEVICE_BGRA_SUPPORT dans le cas où D3D11_CREATE_DEVICE_DEBUG renvoie une valeur incorrecte.
Commentaires