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
S_OK
La funzione ha recuperato tutte le interfacce correttamente.
CO_S_NOTALLINTERFACES
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.
E_NOINTERFACE
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

Vedi anche

CLSCTX

CoCreateInstanceEx

CoGetInstanceFromFile