Share via


Metodo IBindCtx::RegisterObjectParam (objidl.h)

Associa un oggetto a una chiave stringa nella tabella con chiave stringa del contesto di associazione dei puntatori.

Sintassi

HRESULT RegisterObjectParam(
  [in] LPOLESTR pszKey,
  [in] IUnknown *punk
);

Parametri

[in] pszKey

Chiave stringa di contesto di associazione in cui viene registrato l'oggetto. Il confronto tra stringhe chiave è distinzione tra maiuscole e minuscole.

[in] punk

Puntatore all'interfaccia IUnknown nell'oggetto da registrare.

Il metodo chiama AddRef sul puntatore.

Valore restituito

Questo metodo può restituire i valori restituiti standard E_OUTOFMEMORY e S_OK.

Commenti

Un contesto di associazione gestisce una tabella di puntatori di interfaccia, ognuno associato a una chiave stringa. Ciò consente la comunicazione tra un'implementazione moniker e il chiamante che ha avviato l'operazione di associazione. Una parte può archiviare un puntatore dell'interfaccia in una stringa nota a entrambe le parti in modo che l'altra parte possa recuperarla successivamente dal contesto di associazione.

Le operazioni di associazione successive all'uso di questo metodo possono usare IBindCtx::GetObjectParam per recuperare il puntatore archiviato.

Note ai chiamanti

RegisterObjectParam è utile per coloro che implementano una nuova classe moniker (tramite un'implementazione di IMoniker) e per i client moniker (quelli che usano moniker per associare agli oggetti).

Nell'implementazione di una nuova classe moniker, si chiama questo metodo quando si verifica un errore durante l'associazione moniker per informare il chiamante della causa dell'errore. La chiave ottenuta con una chiamata a questo metodo dipende dalla condizione di errore. Di seguito è riportato un elenco di errori comuni di associazione moniker, che descrivono per ogni chiave appropriata:

  • MK_E_EXCEEDEDDEADLINE: se un'operazione di associazione supera la scadenza perché un determinato oggetto non è in esecuzione, è necessario registrare il moniker dell'oggetto usando la prima chiave inutilizzata dall'elenco: "ExceededDeadline", "ExceededDeadline1", "ExceededDeadline2" e così via. Se il chiamante trova più tardi il moniker nella tabella degli oggetti in esecuzione, il chiamante può riprovare l'operazione di associazione.
  • MK_E_CONNECTMANUALLY: la chiave "ConnectManually" indica un moniker il cui binding richiede assistenza dall'utente finale. Per richiedere che l'utente finale si connetta manualmente all'oggetto, il chiamante può ripetere l'operazione di associazione dopo aver visualizzato il nome visualizzato del moniker. Motivi comuni per questo errore sono che è necessaria una password o che deve essere montato un floppy.
  • E_CLASSNOTFOUND: la chiave "ClassNotFound" indica un moniker la cui classe non è stata trovata. Impossibile individuare il server per l'oggetto identificato da questo moniker. Se questa chiave viene usata per un oggetto documento composto OLE, il chiamante può usare IMoniker::BindToStorage per associare all'oggetto e quindi provare a eseguire un'operazione Treat As... o Convert To... per associare l'oggetto a un server diverso. In caso di esito positivo, il chiamante può ripetere l'operazione di associazione.
Un client moniker con conoscenza dettagliata dell'implementazione del moniker può anche chiamare questo metodo per passare informazioni private a tale implementazione.

È possibile definire nuove stringhe come chiavi per l'archiviazione dei puntatori. Per convenzione, è necessario usare i nomi delle chiavi che iniziano con il formato stringa della classe CLSID della classe moniker. Vedere la funzione StringFromCLSID .

Se il parametro pszKey corrisponde al nome di una chiave esistente nella tabella del contesto di associazione, il nuovo oggetto sostituisce l'oggetto esistente nella tabella.

Quando si registra un oggetto usando questo metodo, l'oggetto non viene rilasciato finché non si verifica una delle operazioni seguenti:

  • Viene sostituito nella tabella da un altro oggetto con la stessa chiave.
  • Viene rimosso dalla tabella da una chiamata a IBindCtx::RevokeObjectParam.
  • Il contesto di associazione viene rilasciato. Tutti gli oggetti registrati vengono rilasciati quando viene rilasciato il contesto di associazione.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [app desktop | App UWP]
Server minimo supportato Windows 2000 Server [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione objidl.h

Vedi anche

Ibindctx