Metodo IMoniker::IsRunning (objidl.h)
Determina se l'oggetto identificato da questo moniker è attualmente caricato ed in esecuzione.
Sintassi
HRESULT IsRunning(
[in] IBindCtx *pbc,
[in] IMoniker *pmkToLeft,
[in] IMoniker *pmkNewlyRunning
);
Parametri
[in] pbc
Puntatore all'interfaccia IBindCtx nel contesto di associazione da usare 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 usando il contesto di associazione e fornisce i mezzi in base al quale l'implementazione del moniker deve recuperare informazioni sull'ambiente.
[in] pmkToLeft
Puntatore all'interfaccia IMoniker sul moniker a sinistra di questo moniker se questo moniker fa parte di un moniker composito. Questo parametro viene usato principalmente dagli implementatori moniker per consentire la cooperazione tra i vari componenti di un moniker composito; i client moniker possono in genere passare NULL.
[in] pmkNewlyRunning
Puntatore all'interfaccia IMoniker nel moniker aggiunto più di recente alla tabella degli oggetti in esecuzione (ROT). Questo può essere NULL. Se non null, l'implementazione può restituire i risultati della chiamata a IMoniker::IsEqual nel parametro pmkNewlyRunning , passando il moniker corrente. Questo parametro è destinato a abilitare le implementazioni di IsRunning che sono più efficienti di una semplice ricerca del ROT, ma l'implementazione può scegliere di ignorare pmkNewlyRunning senza causare alcun danno.
Valore restituito
Questo metodo può restituire i valori restituiti standard E_UNEXPECTED, nonché i valori seguenti.
Codice restituito | Descrizione |
---|---|
|
Il moniker è in esecuzione. |
|
Il moniker non è in esecuzione. |
Commenti
Note ai chiamanti
Se la velocità è importante quando si richiedono servizi dall'oggetto identificato dal moniker, è possibile che tali servizi vengano eseguiti solo se l'oggetto è già in esecuzione (perché il caricamento di un oggetto nello stato in esecuzione potrebbe richiedere tempo). In tale situazione, è necessario chiamare IsRunning per determinare se l'oggetto è in esecuzione.Per i monikers archiviati all'interno di oggetti collegati, IsRunning viene chiamato principalmente dall'implementazione del gestore predefinito di IOleLink::BindIfRunning.
Note per gli implementatori
Per ottenere un puntatore al ROT, l'implementazione deve chiamare IBindCtx::GetRunningObjectTable nel parametro pbc . L'implementazione può quindi chiamare IRunningObjectTable::IsRunning per determinare se l'oggetto identificato dal moniker è in esecuzione. L'oggetto identificato dal moniker deve avere registrato se stesso con il ROT quando ha iniziato prima l'esecuzione.Note specifiche dell'implementazione
Implementazione | Note |
---|---|
Anti-moniker | Questo metodo controlla il ROT per verificare se l'oggetto è in esecuzione. |
Moniker classe | Questo metodo restituisce E_NOTIMPL. |
Moniker file | Se pmkNewlyRunning non è NULL, questo metodo restituisce TRUE se tale moniker è uguale a questo moniker. In caso contrario, il metodo chiede al rot se questo moniker è in esecuzione. Il metodo ignora pmkToLeft. |
Moniker composito generico |
Se pmkToLeft non è NULL, questo metodo compone pmkToLeft con questo moniker e chiama IsRunning nel risultato.
Se pmkToLeft è NULL, questo metodo restituisce TRUE se pmkNewlyRunning non è NULL ed è uguale a questo moniker. Se pmkToLeft e pmkNewlyRunning sono entrambi NULL, questo metodo controlla il rot per verificare se il moniker è in esecuzione. In tal caso, il metodo restituisce S_OK; in caso contrario, chiama in modo ricorsivo IsRunning nel componente più a destra del composito, passando il resto del composito come parametro pmkToLeft per tale chiamata. Questo gestisce il caso in cui il moniker identifica uno pseudo-oggetto che non è registrato come in esecuzione; per altre informazioni, vedere l'implementazione del moniker dell'elemento. |
Moniker elemento |
Se pmkToLeft è NULL, questo metodo restituisce TRUE se pmkNewlyRunning non è NULL ed è uguale a questo moniker. In caso contrario, il metodo controlla il rot per verificare se questo moniker è in esecuzione.
Se pmkToLeft non è NULL, il metodo chiama IMoniker::BindToObject nel parametro pmkToLeft , richiedendo un puntatore dell'interfaccia IOleItemContainer . Il metodo chiama quindi IOleItemContainer::IsRunning, passando la stringa contenuta all'interno di questo moniker. |
Moniker OBJREF | Poiché i moniker OBJREF rappresentano un'istanza dell'oggetto in esecuzione, questo metodo restituisce TRUE a meno che l'oggetto non sia più in esecuzione perché una chiamata recente non è riuscita. Il metodo ignora pmkToLeft. |
Moniker puntatore | Questo metodo restituisce sempre S_OK, perché l'oggetto identificato da un moniker puntatore deve essere sempre in esecuzione. |
Moniker URL | Restituisce S_OK se questo moniker è attualmente in esecuzione. In caso contrario, restituisce S_FALSE. Il moniker URL determina se è in esecuzione controllando prima se è uguale al moniker appena in esecuzione, eseguendo la chiamata seguente: pmkNewlyRunning-IsEqual>. In genere, questa chiamata è un'operazione economica. Se questa operazione non riesce, il moniker verifica successivamente se è registrato con rot del contesto di associazione passato. |
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 | objidl.h |