Monikers de pointeur

Un moniker de pointeur identifie un objet qui ne peut exister qu’à l’état actif ou en cours d’exécution. Cela diffère des autres classes de monikers, qui identifient les objets qui peuvent exister à l’état passif ou actif.

Supposons, par exemple, qu’une application ait un objet qui n’a pas de représentation persistante. Normalement, si un client de votre application a besoin d’accéder à cet objet, vous pouvez simplement passer 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 case activée pas la table d’objets en cours d’exécution (ROT) ni ne charge quoi que ce soit à partir du stockage. Au lieu de cela, le code moniker appelle simplement QueryInterface sur le pointeur stocké à l’intérieur du moniker.

Les monikers de pointeur permettent aux objets qui existent uniquement à l’état actif ou en cours d’exécution de participer aux opérations de moniker et d’ê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 c’est le cas, l’appel de la méthode IMoniker::Save renvoie 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 avez besoin d’utiliser un moniker de pointeur.

Anti-monikers

Monikers de classe

Monikers composites

Monikers de fichiers

Monikers d’élément