Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Позволяет загруженной библиотеке 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 |