- PR -

コンパイル時と別バージョンのMSXMLが読込まれた時の動作

1
投稿者投稿内容
縞芋
会議室デビュー日: 2005/08/03
投稿数: 9
投稿日時: 2007-10-16 21:43
こんにちは、縞芋と申します。
いつもお世話になっております。

色々調べてみたのですが、それらしい情報が見つからなかったので
ご相談させていただきました。

当方、C++でMSXMLを利用したプログラムを作成しているのですが
コンパイル時と別の環境で動作確認を行う際、
プログラム上で指定したMSXMLが存在しないにも関わらず
別バージョンのMSXMLを読込んで
動作してしまった事が気になっておりました。
(意図してはいたのですが、動作保障の裏が取れなかったので…)

基本的には当然のことながら
コンパイル時(ソースで指定した)MSXMLを読込むのが正しいと思うのですが
別バージョンが読込まれた場合の動作保証ってあるのでしょうか?

処理としては#importでMSXML6のみを指定し、
CreateInstance時に新バージョンのCLSIDから実行し、
失敗したら1つ前のバージョンのCLSIDで…
っていう形で処理しています。


以下に作成したソースの一部を示します。


#import "msxml6.dll" named_guids raw_interfaces_only
using namespace MSXML2;

int main()
{
   :
   中略
   :

IXMLDOMDocument2Ptr pDocument;
if (FAILED(pDocument.CreateInstance(CLSID_DOMDocument60))) {
  if (FAILED(pDocument.CreateInstance(CLSID_DOMDocument40))) {
    if (FAILED(pDocument.CreateInstance(CLSID_DOMDocument30))) {
      return -1;
    }
  }
}

:
中略2
:

return 0;
}

中略2の箇所では過去のMSXMLのバージョンと共通の機能
(IXMLDOMElement::getElementsByTagNameと言ったMSXML3以降の機能)
のみを利用しております。


何かお気づきの点などがありましたら
お教え頂ければと思います。

宜しくお願い致します。m(_ _)m
1

スキルアップ/キャリアアップ(JOB@IT)