InprocServer32
Регистрирует 32-разрядный внутрипроцессный сервер и задает модель потоков квартиры, в котором может выполняться сервер.
Параметр реестра
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID
{CLSID}
InprocServer32
(Default) = path
ThreadingModel = value
Замечания
ThreadingModel — это REG_SZ значение, указывающее модель потоков. Возможные значения показаны в следующей таблице.
значение | Описание |
---|---|
Квартира | Однопоточная квартира |
Оба | Однопоточная или многопоточная квартира |
Бесплатно | Многопоточность квартиры |
Нейтральные | Нейтральная квартира |
Для каждого объекта, предоставленного сервером внутрипроцессного процесса, необходимо использовать одно и то же значение.
Если ThreadingModel отсутствует или не задано значение, сервер загружается в первую квартиру, которая была инициализирована в процессе. Эта квартира иногда называется основной однопоточной квартирой (STA). Если первый STA в процессе инициализируется COM, а не явным вызовом CoInitialize или CoInitializeEx, он называется узлом STA. Например, COM создает узлу STA, если для загрузки внутрипроцессного сервера требуется STA, но в настоящее время в процессе нет STA.
По возможности сервер в процессе загружается в той же квартире, что и клиент, который загружает его. Если модель потоков клиентской квартиры несовместима с указанной моделью, сервер загружается, как указано в следующей таблице.
Модель потоков сервера | Сервер квартиры запущен в |
---|---|
<\not specified> | Основной STA |
Оба | Та же квартира, что и клиент |
Бесплатно | Многопоточность квартиры |
Нейтральные | Нейтральная квартира |
Если потоковая модель сервера — Apartment, то квартира, в которой загружается сервер, зависит от квартиры, в которой работает клиент, как указано в следующей таблице.
Клиент квартиры работает в | Сервер квартиры запущен в |
---|---|
Многопоточных | Host STA |
Нейтральный (в потоке STA) | Та же квартира, что и клиент |
Нейтральный (в потоке MTA) | Host STA |
COM также может создавать многопоточные квартиры узла (MTA). Если клиент в однопоточной квартире запрашивает внутрипроцессный сервер, потоковая модель которого свободна при отсутствии MTA в процессе, COM создает MTA узла и загружает сервер в него.
Для 32-разрядного внутрипроцессного сервера необходимо зарегистрировать ключи InprocHandler32, InprocServer, InprocServer32 и Insertable key. Запись InprocServer необходима только для обратной совместимости. Если он отсутствует, класс по-прежнему работает, но его нельзя загрузить в 16-разрядных приложениях.
Если контейнер ищет реестр для внутреннего сервера, 16-разрядная версия имеет приоритет с 16-разрядным контейнером, а 32-разрядная версия имеет приоритет с 32-разрядным контейнером.
См. также