Share via


Puntero Monikers

Un moniker de puntero identifica un objeto que solo puede existir en el estado activo o en ejecución. Esto difiere de otras clases de monikers, que identifican objetos que pueden existir en el estado pasivo o activo.

Supongamos, por ejemplo, que una aplicación tiene un objeto que no tiene representación persistente. Normalmente, si un cliente de la aplicación necesita acceso a ese objeto, simplemente podría pasar al cliente un puntero al objeto . Sin embargo, supongamos que el cliente espera un moniker. El objeto no se puede identificar con un moniker de archivo, porque no está almacenado en un archivo ni con un moniker de elemento, porque no está incluido en otro objeto.

En su lugar, la aplicación puede crear un moniker de puntero, que es un moniker que simplemente contiene un puntero internamente y pasarlo al cliente. El cliente puede tratar este moniker como cualquier otro. Sin embargo, cuando el cliente llama a IMoniker::BindToObject en el moniker de puntero, el código de moniker no comprueba la tabla de objetos en ejecución (ROT) ni carga nada desde el almacenamiento. En su lugar, el código de moniker simplemente llama a QueryInterface en el puntero almacenado dentro del moniker.

Los monikers de puntero permiten que los objetos que solo existen en el estado activo o en ejecución participen en las operaciones de moniker y los usen los clientes de moniker. Una diferencia importante entre los monikers de puntero y otras clases de monikers es que los monikers de puntero no se pueden guardar en el almacenamiento persistente. Si lo hace, llamar al método IMoniker::Save devuelve un error. Esto significa que los monikers de puntero solo son útiles en situaciones especializadas. Puede usar la función CreatePointerMoniker si necesita usar un moniker de puntero.

Anti-Monikers

Monikers de clase

Monikers compuestos

Monikers de archivo

Monikers de elementos