Как проверить, был ли OleInitialize уже вызван? - PullRequest
3 голосов
/ 19 июля 2010

Я хочу написать функцию Delphi для регистрации DLL. Я хочу, чтобы функция проверяла, был ли OleInitialize уже вызван, прежде чем это сделать. Я думаю, что я пытаюсь избежать последствий инициализации дважды, потому что я не уверен, что они могут быть. Я боюсь, что моя функция не будет обрабатывать такие разнообразные библиотеки, как regsvr32.exe.

1 Ответ

8 голосов
/ 19 июля 2010

Ознакомьтесь с документацией :

Возвращаемое значение
[...]
S_FALSE - Библиотека COM уже инициализирована в этой квартире.

... а также:

Как правило, библиотека COM инициализируется в квартире только один раз. Последующие вызовы будут успешными, если они не попытаются изменить модель параллелизма в квартире, а вернут S_FALSE.

...