FIX が表示される、「メモリ '読み取れませんでした'」エラー メッセージ、または、COM + 相互運用機能とを使用する.NET Framework アプリケーションを実行すると、400 のデータをキューに、型の不一致の例外エラーが発生する ActiveX コントロール

現象

AS を使用する Microsoft.NET Framework アプリケーションを実行すると、400 のデータをキュー ActiveX コントロール (Mseigdq.dll) からの読み取りと、IBM iSeries への書き込みに (AS 400/) データ キューでは、1 つまたは複数の以下の問題が発生する可能性があります。

  • 次のようなアプリケーション エラー メッセージが表示されます。

    バージョン-アプリケーション エラー


    [メモリ アドレス] の命令は"0x00000000"のメモリを参照します。メモリ「読み取れませんでした」。



    プログラムを終了して [ok] をクリックします。

    プログラムをデバッグするには [キャンセル] をクリックします。

  • Microsoft COM + 相互運用機能型の不一致の例外は、アプリケーションがDataQueue.GetQueueItemメソッドを呼び出すときに返されるレコードを処理しようとするときに発生します。この例外は、アプリケーションがマネージ コードを使用する場合にのみ発生します。アプリケーションは、Microsoft Visual Basic 6 を使用している場合、この例外は発生しません。受信したエラー メッセージは、次のような可能性があります。

    System.Runtype.InteropServices.SafeArrayTypeMismatchException

原因

「メモリ '読み取れませんでした'」が表示されるために、エラー メッセージが表示されると 400 のデータ キュー ActiveX コントロールが、無効なメモリ位置を参照しようとします。

COM + 相互運用機能の型が一致しない例外が発生した AS/400 のデータ キューの ActiveX コントロールは、VT_UI1 データの安全な配列としてレコードのデータを返します。このデータはオートメーションとの互換性ではありません。この動作では、COM 相互運用レイヤーは、VT_UI1 データをマーシャ リングする方法を把握していないために、型の不一致の例外を取得する COM + 相互運用機能層が原因です。

解決策

サポートされている修正プログラムは、マイクロソフトから入手可能です。ただし、この修正プログラムは、ここで説明する問題のみを修正することを目的としたものです。この問題が発生しているシステムにのみ適用してください。この修正プログラムは、今後さらにテストを行う場合があります。したがって、この問題の影響が深刻でない場合は、この修正プログラムが含まれる次のソフトウェア更新プログラムがリリースされるまで待つことをお勧めします。

修正プログラムをダウンロードできる場合は、このサポート技術情報の資料の上部に「修正プログラムのダウンロード」セクションがあります。このセクションが表示されていない場合は、マイクロソフト カスタマー サービス サポートにお問い合わせのうえ、修正プログラムを入手してください。

ヘルプを表示

スキルを磨く
トレーニングの探索
新機能を最初に入手
Microsoft Insider に参加する

この情報は役に立ちましたか?

フィードバックをお送りいただきありがとうございます!

フィードバックをお寄せいただき、ありがとうございます。Office サポートの担当者におつなぎいたします。

×