J'écris une bibliothèque de classes qui fournit des interfaces orientées objet à l'API C qui est le Registre Windows. Je suis curieux, cependant, quel est le meilleur plan d'action pour gérer HREG
s, pour les cas où ma classe key
est copiée.Le prix de DuplicateHandle
je peux soit
- Allouer un nombre entier de segments de mémoire et l'utiliser comme un compte de référence. Appelez RegCloseKey() sur le descripteur et libérez l'entier lorsque le nombre de réfrences est égal à zéro.
- Utilisez la fonctionnalité des poignées builtin, et plutôt que de maintenir un compte de référence, appelez
DuplicateHandle()
sur le HREG lorsque l'objet clé de Registre est copié. Ensuite, appelez toujours RegCloseKey dans les destructeurs.
La conception de DuplicateHandle()
est beaucoup plus simple, mais je suis préoccupé si la conception de cette façon va gravement entraver les performances de l'application. Parce que mon application récursive à travers des centaines de milliers de clés, la vitesse de copie de cet objet est un problème sensible.
Quels sont les frais généraux inhérents à la fonction DuplicateHandle()
?
http://blogs.technet.com/markrussinovich/archive/2009/09/29/3283844.aspx <- Je ne vais pas utiliser plus de 16 millions de poignées, donc je devrais être bon :) –