Condividi tramite


Moniker puntatore

Un moniker puntatore identifica un oggetto che può esistere solo nello stato attivo o in esecuzione. Ciò differisce da altre classi di moniker, che identificano gli oggetti che possono esistere nello stato passivo o attivo.

Si supponga, ad esempio, che un'applicazione abbia un oggetto senza rappresentazione permanente. In genere, se un client dell'applicazione deve accedere a tale oggetto, è sufficiente passare il client un puntatore all'oggetto . Si supponga tuttavia che il client si aspetti un moniker. L'oggetto non può essere identificato con un moniker di file, perché non è archiviato in un file né con un moniker di elemento, perché non è contenuto in un altro oggetto.

L'applicazione può invece creare un moniker puntatore, ovvero un moniker che contiene semplicemente un puntatore internamente e passarlo al client. Il client può trattare questo moniker come qualsiasi altro. Tuttavia, quando il client chiama IMoniker::BindToObject nel moniker del puntatore, il codice del moniker non controlla la tabella di oggetti in esecuzione (ROT) o carica nulla dalla risorsa di archiviazione. Al contrario, il codice del moniker chiama semplicemente QueryInterface sul puntatore archiviato all'interno del moniker.

I moniker puntatore consentono agli oggetti esistenti solo nello stato attivo o in esecuzione di partecipare alle operazioni del moniker e di essere usati dai client moniker. Una differenza importante tra moniker puntatore e altre classi di moniker è che i moniker puntatore non possono essere salvati nell'archiviazione permanente. In questo caso, la chiamata al metodo IMoniker::Save restituisce un errore. Ciò significa che i moniker puntatore sono utili solo in situazioni specializzate. È possibile usare la funzione CreatePointerMoniker se è necessario usare un moniker puntatore.

Anti-moniker

Moniker di classe

Moniker compositi

Moniker di file

Moniker elemento