CoGetInstanceFromIStorage-Funktion (objbase.h)
Erstellt ein neues -Objekt und initialisiert es aus einem Speicherobjekt über einen internen Aufruf von IPersistFile::Load.
Syntax
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
);
Parameter
[in, optional] pServerInfo
Ein Zeiger auf eine COSERVERINFO-Struktur , die den Computer angibt, auf dem das Objekt instanziieren soll, und die zu verwendende Authentifizierungseinstellung. Dieser Parameter kann NULL sein. In diesem Fall wird das Objekt auf dem aktuellen Computer instanziiert, auf dem Computer, der unter dem Registrierungswert RemoteServerName für die Klasse angegeben ist, oder auf dem Computer, auf dem sich das pstg-Speicherobjekt befindet, wenn der ActivateAtStorage-Wert für die Klasse angegeben ist oder keine lokalen Registrierungsinformationen vorhanden sind.
[in, optional] pClsid
Ein Zeiger auf den Klassenbezeichner des zu erstellenden Objekts. Dieser Parameter kann NULL sein. In diesem Fall wird IStorage::Stat aufgerufen, um die Klasse des Objekts zu finden.
[in, optional] punkOuter
Wenn nicht NULL, gibt an, dass die instance als Teil eines Aggregats erstellt wird, und punkOuter als Zeiger auf die neue instance, die IUnknown steuert. Die Aggregation wird nicht prozess- oder computerübergreifend unterstützt. Beim Instanziieren eines Objekts aus dem Prozess wird CLASS_E_NOAGGREGATION zurückgegeben, wenn punkOuter nicht NULL ist.
[in] dwClsCtx
Werte aus der CLSCTX-Enumeration .
[in] pstg
Ein Zeiger auf das Speicherobjekt, das zum Initialisieren des Objekts mit IPersistFile::Load verwendet wird. Dieser Parameter darf nicht NULL sein.
[in] dwCount
Die Anzahl der Strukturen in pResults. Dieser Parameter muss größer als 0 sein.
[in, out] pResults
Ein Array von MULTI_QI Strukturen. Jede Struktur verfügt über drei Member: den Bezeichner für eine angeforderte Schnittstelle (pIID), den Speicherort zum Zurückgeben des Schnittstellenzeigers (pItf) und den Rückgabewert des Aufrufs von QueryInterface (hr).
Rückgabewert
Diese Funktion kann den Standardrückgabewert E_INVALIDARG sowie die folgenden Werte zurückgeben.
Rückgabecode | BESCHREIBUNG |
---|---|
|
Die Funktion hat alle Schnittstellen erfolgreich abgerufen. |
|
Mindestens eine, aber nicht alle im pResults-Array angeforderten Schnittstellen wurden erfolgreich abgerufen. Der hr-Member der einzelnen MULTI_QI-Strukturen gibt mit S_OK oder E_NOINTERFACE an, ob die spezifische Schnittstelle zurückgegeben wurde. |
|
Keine der im pResults-Array angeforderten Schnittstellen wurde erfolgreich abgerufen. |
Hinweise
CoGetInstanceFromIStorage erstellt ein neues -Objekt und initialisiert es aus einem Speicherobjekt mithilfe von IPersistFile::Load. Das Ergebnis dieser Funktion ähnelt dem Erstellen einer instance mit einem Aufruf von CoCreateInstanceEx, gefolgt von einem initialisierenden Aufruf von IPersistFile::Load mit den folgenden wichtigen Unterschieden:
- Diese Funktion erfordert weniger Netzwerk roundtrips, wenn ein Objekt auf einem Remotecomputer instanziiert wird.
- Wenn dwClsCtx auf CLSCTX_REMOTE_SERVER und pServerInfonull festgelegt ist, wenn die Klasse mit dem ActivateAtStorage-Wert registriert ist oder über keine zugeordneten Registrierungsinformationen verfügt, instanziiert diese Funktion ein Objekt auf dem Computer, auf dem sich pstg befindet, und stellt so den geringstmöglichen Netzwerkdatenverkehr bereit.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 2000 Professional [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | objbase.h |
Bibliothek | Ole32.lib |
DLL | Ole32.dll |