Какой должна быть подпись
StatusInterface и CommandInterface
в ATL COM?
По умолчанию методы ATL возвращают значение HRESULT. Чтобы достичь желаемого, вы можете создать метод без параметров, используя мастер ATL. Затем вы можете вручную изменить файл IDL и соответствующую реализацию, чтобы вместо этого ваш метод возвращал CommandInterface. При таком подходе ваш файл IDL будет выглядеть так:
[id(1)] CommandInterface* GetCommandInterface();
И объявление метода в вашем классе ATL будет:
CommandInterface* GetCommandInterface();
Другим вариантом может быть использование одного выходного параметра типа CommandInterface **. Быстрый тест с использованием мастера ATL показывает, что ваш файл IDL будет выглядеть следующим образом:
[id(1)] HRESULT StatusInterface([out] CommandInterface** outStatusInterface);
Должен ли я вызвать AddRef () на
StatusInterface и CommandInterface
перед возвратом объекта в
клиент автоматизации (VBScript)?
Я бы сказал, что да, так как VBScript / ASP должен вызывать Release()
, когда ваша локальная переменная выходит за рамки.
Должен ли я создавать объект каждый раз
StatusInterface вызывается или когда
'PolyCold.Main' объект создан?
Это зависит от вас. Только вы знаете детали и потребности вашего дизайна.
Это стандартный способ подачи
имена для StatusInterface и
CommandInterface
Если эти "элементы" должны быть типами интерфейса, то я бы сказал нет. Обычно интерфейсы обозначаются заглавной буквой I в качестве первой буквы. Я бы использовал IStatus и ICommand например. Вероятно, с еще некоторой информацией говоря, какой вид команды и статуса, но это логичное.