Gestion de plusieurs verrous
Avec le runtime Direct3D, vous pouvez autoriser les tampons de vertex et d’index à avoir plusieurs verrous en attente. Les pilotes d’affichage en mode utilisateur doivent gérer plusieurs verrous de la même façon que le runtime dans le modèle de pilote d’affichage Windows 2000.
Un pilote d’affichage en mode utilisateur ne doit pas faire échouer un appel à sa fonction LockAsync pour une ressource déjà verrouillée. Autrement dit, le pilote ne peut échouer aucun appel à sa fonction LockAsync pour une ressource particulière après que le premier appel à sa fonction LockAsync a réussi à verrouiller cette ressource. De même, le pilote ne peut pas échouer à tout appel à sa fonction Lock pour une ressource particulière après que le premier appel à sa fonction Lock a réussi à verrouiller cette ressource. Le runtime met en correspondance chaque appel qu’il effectue à la fonction LockAsync du pilote avec un appel à la fonction UnlockAsync du pilote. Le runtime correspond également à chaque appel qu’il effectue à la fonction Lock du pilote avec un appel à la fonction Unlock du pilote.
Le pilote d’affichage en mode utilisateur ne peut pas échouer un appel à sa fonction UnlockAsync , sauf si la ressource décrite par la structure D3DDDIARG_UNLOCKASYNC n’a pas été réellement verrouillée par un appel précédent à la fonction LockAsync du pilote. De même, le pilote ne peut pas échouer un appel à sa fonction Unlock , sauf si la ressource décrite par la structure D3DDDIARG_UNLOCK n’a pas été réellement verrouillée par un appel précédent à la fonction Lock du pilote. Dans les situations où les ressources n’étaient pas précédemment verrouillées, UnlockAsync et Unlock retournent E_INVALIDARG.