Compartilhar via


Monikers de ponteiro

Um moniker de ponteiro identifica um objeto que só pode existir no estado ativo ou em execução. Isso difere de outras classes de monikers, que identificam objetos que podem existir no estado passivo ou ativo.

Suponha, por exemplo, que um aplicativo tenha um objeto que não tenha representação persistente. Normalmente, se um cliente do seu aplicativo precisar de acesso a esse objeto, você poderá simplesmente passar um ponteiro para o cliente para o objeto. No entanto, suponha que seu cliente esteja esperando um moniker. O objeto não pode ser identificado com um moniker de arquivo, porque ele não é armazenado em um arquivo nem com um moniker de item, porque ele não está contido em outro objeto.

Em vez disso, seu aplicativo pode criar um moniker de ponteiro, que é um moniker que simplesmente contém um ponteiro internamente e passá-lo para o cliente. O cliente pode tratar esse moniker como qualquer outro. No entanto, quando o cliente chama IMoniker::BindToObject no moniker de ponteiro, o código do moniker não verifica a ROT (tabela de objeto em execução) nem carrega nada do armazenamento. Em vez disso, o código moniker simplesmente chama queryInterface no ponteiro armazenado dentro do moniker.

Os monikers de ponteiro permitem que objetos que existem somente no estado ativo ou em execução participem de operações de moniker e sejam usados por clientes moniker. Uma diferença importante entre os monikers de ponteiro e outras classes de apelidos é que os monikers de ponteiro não podem ser salvos no armazenamento persistente. Se você fizer isso, chamar o método IMoniker::Save retornará um erro. Isso significa que os monikers de ponteiro são úteis apenas em situações especializadas. Você pode usar a funçãoCreatePointerMoniker se precisar usar um moniker de ponteiro.

anti-monikers

monikers de classe

monikers compostos

monikers de arquivo

monikers de item