Funzione CoGetInstanceFromIStorage (objbase.h)
Crea un nuovo oggetto e lo inizializza da un oggetto di archiviazione tramite una chiamata interna a IPersistFile::Load.
Sintassi
HRESULT CoGetInstanceFromIStorage(
[in, optional] COSERVERINFO *pServerInfo,
[in, optional] CLSID *pClsid,
[in, optional] IUnknown *punkOuter,
[in] DWORD dwClsCtx,
[in] IStorage *pstg,
[in] DWORD dwCount,
[in, out] MULTI_QI *pResults
);
Parametri
[in, optional] pServerInfo
Puntatore a una struttura COSERVERINFO che specifica il computer in cui creare un'istanza dell'oggetto e l'impostazione di autenticazione da usare. Questo parametro può essere NULL, nel qual caso l'oggetto viene creata un'istanza nel computer corrente, nel computer specificato nel valore del Registro di sistema RemoteServerName per la classe o nel computer in cui risiede l'oggetto di archiviazione pstg se il valore ActivateAtStorage viene specificato per la classe o non sono presenti informazioni sul Registro di sistema locali.
[in, optional] pClsid
Puntatore all'identificatore di classe dell'oggetto da creare. Questo parametro può essere NULL, nel qual caso è presente una chiamata a IStorage::Stat per trovare la classe dell'oggetto.
[in, optional] punkOuter
Quando non NULL, indica che l'istanza viene creata come parte di un'aggregazione e punkOuter deve essere usata come puntatore al controllo di IUnknown della nuova istanza. L'aggregazione non è supportata tra processi o cross-computer. Quando si crea un'istanza di un oggetto fuori processo, CLASS_E_NOAGGREGATION verrà restituito se punkOuter non è NULL.
[in] dwClsCtx
Valori dell'enumerazione CLSCTX .
[in] pstg
Puntatore all'oggetto di archiviazione usato per inizializzare l'oggetto con IPersistFile::Load. Questo parametro non può essere NULL.
[in] dwCount
Numero di strutture in pResults. Questo parametro deve essere maggiore di 0.
[in, out] pResults
Matrice di strutture MULTI_QI . Ogni struttura ha tre membri: l'identificatore per un'interfaccia richiesta (pIID), il percorso per restituire il puntatore dell'interfaccia (pItf) e il valore restituito della chiamata a QueryInterface (hr).
Valore restituito
Questa funzione può restituire il valore restituito standard E_INVALIDARG, nonché i valori seguenti.
Codice restituito | Descrizione |
---|---|
|
La funzione ha recuperato tutte le interfacce correttamente. |
|
Almeno uno, ma non tutte le interfacce richieste nella matrice pResults sono state recuperate correttamente. Il membro hr di ogni struttura MULTI_QI indica con S_OK o E_NOINTERFACE se l'interfaccia specifica è stata restituita. |
|
Nessuna delle interfacce richieste nella matrice pResults è stata recuperata correttamente. |
Commenti
CoGetInstanceFromIStorage crea un nuovo oggetto e lo inizializza da un oggetto di archiviazione usando IPersistFile::Load. Il risultato di questa funzione è simile alla creazione di un'istanza con una chiamata a CoCreateInstanceEx, seguita da una chiamata di inizializzazione a IPersistFile::Load, con le distinzione importanti seguenti:
- Meno round trip di rete sono richiesti da questa funzione quando si crea un'istanza di un oggetto in un computer remoto.
- Nel caso in cui dwClsCtx sia impostato su CLSCTX_REMOTE_SERVER e pServerInfo è NULL, se la classe viene registrata con il valore ActivateAtStorage o non dispone di informazioni del Registro di sistema associate, questa funzione crea un'istanza di un oggetto nel computer in cui si trova pstg , fornendo il traffico di rete minimo possibile.
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 | objbase.h |
Libreria | Ole32.lib |
DLL | Ole32.dll |