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

CoGetPSClsid

CoRegisterClassObject