Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Позволяет загруженной библиотеке DLL регистрировать пользовательские интерфейсы в выполняемом процессе, чтобы код маршалинга мог маршалировать эти интерфейсы.
Синтаксис
HRESULT CoRegisterPSClsid(
[in] REFIID riid,
[in] REFCLSID rclsid
);
Параметры
[in] riid
Указатель на IID регистрируемых интерфейсов.
[in] rclsid
Указатель на CLSID библиотеки DLL, которая содержит код прокси-сервера или заглушки для пользовательского интерфейса, заданного riid.
Возвращаемое значение
Эта функция может возвращать стандартные возвращаемые значения E_INVALIDARG, E_OUTOFMEMORY и S_OK.
Комментарии
Как правило, код, отвечающий за маршалинг указателя интерфейса в текущий выполняемый процесс, считывает раздел HKEY_CLASSES_ROOT\Interfaces реестра, чтобы получить ИДЕНТИФИКАТОР CLSID библиотеки DLL, содержащей код ProxyStub для загрузки. Чтобы получить идентификаторы CLSID ProxyStub для существующего интерфейса, код вызывает функцию CoGetPSClsid .
Однако в некоторых случаях может быть желательно или необходимо, чтобы внутрипроцессный обработчик или внутрипроцессный сервер сделали свои пользовательские интерфейсы доступными без записи в реестр. Библиотека DLL, скачаемая по сети, может даже не иметь разрешения на доступ к локальному реестру, а так как код был создан на другом компьютере, пользователь в целях безопасности может захотеть запустить его в ограниченной среде. Кроме того, библиотека DLL может иметь пользовательские интерфейсы, которые она использует для взаимодействия с удаленным сервером, а также может включать код ProxyStub для этих интерфейсов. В таких случаях библиотеке DLL требуется альтернативный способ регистрации своих интерфейсов. CoRegisterPSClsid, используемый в сочетании с CoRegisterClassObject, предоставляет эту альтернативу.
Примеры
Библиотека DLL обычно вызывает CoRegisterPSClsid , как показано в следующем фрагменте кода.
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;
}
Требования
| Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
| Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
| Целевая платформа | Windows |
| Header | combaseapi.h (включая Objbase.h) |
| Библиотека | Ole32.lib |
| DLL | Ole32.dll |