Monikers de pointeur
Un moniker de pointeur identifie un objet qui peut exister uniquement dans l’état actif ou en cours d’exécution. Cela diffère des autres classes de monikers, qui identifient les objets qui peuvent exister dans l’état passif ou actif.
Supposons, par exemple, qu’une application possède un objet qui n’a aucune représentation persistante. Normalement, si un client de votre application a besoin d’accéder à cet objet, vous pouvez simplement transmettre au client un pointeur vers l’objet. Toutefois, supposons que votre client attend un moniker. L’objet ne peut pas être identifié avec un moniker de fichier, car il n’est pas stocké dans un fichier, ni avec un moniker d’élément, car il n’est pas contenu dans un autre objet.
Au lieu de cela, votre application peut créer un moniker de pointeur, qui est un moniker qui contient simplement un pointeur en interne, et le transmettre au client. Le client peut traiter ce moniker comme n’importe quel autre. Toutefois, lorsque le client appelle IMoniker ::BindToObject sur le moniker de pointeur, le code moniker ne vérifie pas la table d’objets en cours d’exécution (ROT) ou ne charge rien du stockage. Au lieu de cela, le code moniker appelle simplement QueryInterface sur le pointeur stocké dans le moniker.
Les monikers de pointeur autorisent les objets qui existent uniquement dans l’état actif ou en cours d’exécution pour participer aux opérations moniker et être utilisés par les clients moniker. Une différence importante entre les monikers de pointeur et d’autres classes de monikers est que les monikers de pointeur ne peuvent pas être enregistrés dans un stockage persistant. Si vous le faites, l’appel de la méthode IMoniker ::Save retourne une erreur. Cela signifie que les monikers de pointeur sont utiles uniquement dans des situations spécialisées. Vous pouvez utiliser la fonction CreatePointerMoniker si vous devez utiliser un moniker de pointeur.
Rubriques connexes