CoRegisterPSClsid-Funktion (combaseapi.h)
Ermöglicht einer heruntergeladenen DLL, ihre benutzerdefinierten Schnittstellen innerhalb des ausgeführten Prozesses zu registrieren, sodass der Marshallcode diese Schnittstellen marshallen kann.
Syntax
HRESULT CoRegisterPSClsid(
[in] REFIID riid,
[in] REFCLSID rclsid
);
Parameter
[in] riid
Ein Zeiger auf die IID der zu registrierenden Schnittstelle.
[in] rclsid
Ein Zeiger auf die CLSID der DLL, die den Proxy-/Stubcode für die von riid angegebene benutzerdefinierte Schnittstelle enthält.
Rückgabewert
Diese Funktion kann die Standardrückgabewerte E_INVALIDARG, E_OUTOFMEMORY und S_OK zurückgeben.
Hinweise
In der Regel liest der Code, der für das Marshallen eines Schnittstellenzeigers in den aktuell ausgeführten Prozess verantwortlich ist, den HKEY_CLASSES_ROOT\Interfaces Abschnitt der Registrierung, um die CLSID der DLL abzurufen, die den zu ladenden ProxyStub-Code enthält. Um die ProxyStub-CLSIDs für eine vorhandene Schnittstelle abzurufen, ruft der Code die CoGetPSClsid-Funktion auf.
In einigen Fällen kann es jedoch wünschenswert oder notwendig sein, dass ein prozessinterner Handler oder ein Prozessserver seine benutzerdefinierten Schnittstellen verfügbar macht, ohne in die Registrierung zu schreiben. Eine dll, die über ein Netzwerk heruntergeladen wurde, verfügt möglicherweise nicht einmal über die Berechtigung zum Zugriff auf die lokale Registrierung, und da der Code auf einem anderen Computer stammt, möchte der Benutzer sie aus Sicherheitsgründen möglicherweise in einer eingeschränkten Umgebung ausführen. Oder eine DLL verfügt über benutzerdefinierte Schnittstellen, die für die Kommunikation mit einem Remoteserver verwendet werden, und kann auch den ProxyStub-Code für diese Schnittstellen enthalten. In solchen Fällen benötigt eine DLL eine alternative Möglichkeit, ihre Schnittstellen zu registrieren. CoRegisterPSClsid, die in Verbindung mit CoRegisterClassObject verwendet wird, bietet diese Alternative.
Beispiele
Eine DLL ruft in der Regel CoRegisterPSClsid auf, wie im folgenden Codefragment gezeigt.
HRESULT RegisterMyCustomInterface(DWORD *pdwRegistrationKey)
{
HRESULT hr = CoRegisterClassObject(CLSID_MyProxyStubClsid,
pIPSFactoryBuffer,
CLSCTX_INPROC_SERVER,
REGCLS_MULTIPLEUSE
pdwRegistrationKey);
if(SUCCEEDED)(hr))
{
hr = CoRegisterPSClsid(IID_MyCustomInterface, CLSID_MyProxyStubClsid);
}
return hr;
}
Anforderungen
Unterstützte Mindestversion (Client) | Windows 2000 Professional [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | combaseapi.h (include Objbase.h) |
Bibliothek | Ole32.lib |
DLL | Ole32.dll |
Weitere Informationen
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für