Поделиться через


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-разрядным контейнером.

InprocServer