Metodo IOleItemContainer::GetObject (oleidl.h)

Recupera un puntatore all'oggetto specificato.

Sintassi

HRESULT GetObject(
  [in]  LPOLESTR pszItem,
  [in]  DWORD    dwSpeedNeeded,
  [in]  IBindCtx *pbc,
  [in]  REFIID   riid,
  [out] void     **ppvObject
);

Parametri

[in] pszItem

Nome del contenitore per l'oggetto richiesto.

[in] dwSpeedNeeded

Indica approssimativamente per quanto tempo il chiamante attenderà di ottenere l'oggetto. I valori possibili vengono ricavati dall'enumerazione BINDSPEED.

[in] pbc

Puntatore all'interfaccia IBindCtx nell'oggetto contesto di associazione da utilizzare in questa operazione di associazione. Il contesto di associazione memorizza nella cache gli oggetti associati durante il processo di associazione, contiene parametri che si applicano a tutte le operazioni che usano il contesto di associazione e fornisce i mezzi tramite cui l'implementazione dell'associazione deve recuperare informazioni sull'ambiente.

[in] riid

Riferimento all'identificatore del puntatore di interfaccia richiesto.

[out] ppvObject

Indirizzo della variabile del puntatore che riceve il puntatore dell'interfaccia richiesto in riid. Al termine della restituzione, *ppvObject contiene il puntatore di interfaccia richiesto all'oggetto denominato da pszItem. In caso di esito positivo, l'implementazione deve chiamare AddRef in *ppvObject; è responsabilità del chiamante chiamare Release. Se si verifica un errore, l'implementazione imposta *ppvObject su NULL.

Valore restituito

Questo metodo può restituire il valore restituito standard E_OUTOFMEMORY, nonché i valori seguenti.

Codice restituito Descrizione
S_OK
Metodo completato correttamente.
MK_E_EXCEEDEDDEADLINE
Impossibile completare l'operazione di associazione entro il limite di tempo specificato dalla struttura di BIND_OPTS del contesto di associazione o con la velocità indicata dal parametro dwSpeedNeeded .
MK_E_NOOBJECT
Il parametro pszItem non identifica un oggetto in questo contenitore.
E_NOINTERFACE
L'interfaccia richiesta non era disponibile.

Commenti

L'implementazione del moniker dell'elemento di IMoniker::BindToObject chiama questo metodo, passando il nome archiviato all'interno del moniker dell'elemento come parametro pszItem .

Note per gli implementatori

L'implementazione di IOleItemContainer::GetObject deve innanzitutto determinare se pszItem è un nome valido per uno degli oggetti del contenitore. In caso contrario, è necessario restituire MK_E_NOOBJECT.

Se pszItem assegna un nome a un oggetto incorporato o collegato, l'implementazione deve controllare il valore del parametro dwSpeedNeeded . Se il valore è BINDSPEED_IMMEDIATE e l'oggetto non è ancora caricato, è necessario restituire MK_E_EXCEEDEDDEADLINE. Se l'oggetto viene caricato, l'implementazione deve determinare se l'oggetto è in esecuzione, ad esempio chiamando la funzione OleIsRunning . Se non è in esecuzione e il valore dwSpeedNeeded è BINDSPEED_MODERATE, l'implementazione deve restituire MK_E_EXCEEDEDDEADLINE. Se l'oggetto non è in esecuzione e dwSpeedNeeded è BINDSPEED_INDEFINITE, l'implementazione deve chiamare la funzione OleRun per inserire l'oggetto nello stato di esecuzione. Può quindi eseguire una query sull'oggetto per l'interfaccia richiesta. Si noti che è importante che l'oggetto sia in esecuzione prima di eseguire una query per l'interfaccia.

Se pszItem assegna un nome pseudooggetto, l'implementazione può ignorare il parametro dwSpeedNeeded perché uno pseudooggetto viene eseguito ogni volta che il contenitore è in esecuzione. In questo caso, l'implementazione può semplicemente eseguire query per l'interfaccia richiesta.

Se sono necessarie informazioni più specifiche sul limite di tempo specificato da dwSpeedNeeded, è possibile chiamare IBindCtx::GetBindOptions nel parametro pbc per ottenere il parametro di scadenza effettivo.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione oleidl.h

Vedi anche

IOleItemContainer