COM Inter-op を使用する .NET アプリケーションによって消費される COM dll があります。CoClasses の 1 つには、IT6TrackData というインターフェイスがあり、TrackData という get プロパティが 1 つあります。
IDL ファイルから:
Interface IT6TrackData
{
[propget, id(1)] HRESULT TrackData([out, retval] SAFEARRAY(BYTE) *pVal);
}
上記の IDL ファイルの TLB ファイルを表示すると、プロパティが trackData ( t は小文字) として表示されます。何らかの理由で、クライアント アプリケーションはこのプロパティを trackData として参照しており、今まではすべて正常に機能していました。
強化の一環として、上記のインターフェイスは put プロパティを持つようにアップグレードされました
Interface IT6TrackData
{
[propget, id(1)] HRESULT TrackData([out, retval] SAFEARRAY(BYTE) *pVal);
[propput, id(1)] HRESULT TrackData([in]SAFEARRAY(BYTE) pVal);
}
上記の IDL ファイルの TLB ファイルを表示すると、プロパティが TrackData (t は大文字) として表示されます。これは、小文字の「t」で trackData を参照し続ける古い .NET クライアントを壊しています。 .
この KB 記事を確認しました http://support2.microsoft.com/kb/220137/en-gb
しかし、方法はありますか、この問題の修正を知っている人はいますか?
ご注意いただきありがとうございます。
IDL ファイル
import "oaidl.idl";
import "ocidl.idl";
[
object,
uuid(72867CE8-41B6-459E-A258-C7A162A26D5E),
dual,
nonextensible,
helpstring("ITFST6TrackData Interface"),
pointer_default(unique)
]
interface ITFST6TrackData : IDispatch{
[propget, id(1), helpstring("property TrackData")] HRESULT TrackData([out, retval] SAFEARRAY(BYTE) *pVal);
[propput, id(1), helpstring("property TrackData")] HRESULT TrackData([in]SAFEARRAY(BYTE) pVal);
};
[
uuid(1D7ABC17-2738-4373-9B6B-239E344DBD21),
version(1.0),
helpstring("SampleCom 1.0 Type Library")
]
library SampleComLib
{
importlib("stdole2.tlb");
[
uuid(2013CC98-47A7-468F-912A-2A2CAE25E327),
helpstring("TFST6TrackData Class")
]
coclass TFST6TrackData
{
[default] interface ITFST6TrackData;
};
};