一度公開したインターフェイスの変更は出来ないお約束なので、変更するには、新しいインターフェイスを作って追加する形になります。
以下の様な基本があるとします。今時の通常は IDispatch から継承したDualインターフェイスです。
[
uuid(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
]
interface IInterface : IDispatch
{
....
}
新たな GUID で IInterface を基本とするインターフェイスを設けます。
[
uuid(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
]
interface IInterface2 : IInterface
{
....
}
インターフェイスを持たせたい COMオブジェクト に追加します。
[default] はデフォルトインターフェイスで、スクリプト言語の様な、1つのインターフェイスにしか接続できないクライアントからは、このデフォルトが使用されます。
[
uuid(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
]
coclass CoClassInterface
{
[default] interface IInterface2;
interface IInterface;
};
BEGIN_COM_MAP(cXXXX)
COM_INTERFACE_ENTRY(IInterface2)
COM_INTERFACE_ENTRY(IInterface)
COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()
後は IDispatchImpl などを変更しておわり。