[NT]Absolute Disk Read と Write 後の InDOS フラグの不正な値

この記事は、以前は次の ID で公開されていました: JP255570
この資料は、アーカイブされました。これは "現状のまま" で提供され、更新されることはありません。
現象
この資料は、MS-DOS ベースの 16 ビット プログラムのみを対象とします。MS-DOS ベースのプログラム (TSR プログラムを含む) の中には、InDOS フラグを使用して、同期を管理するものがあります。MS-DOS が特定の処理を行っている場合に、InDOS フラグはふつう 1 に設定され、その他の場合は 0 に設定されます。

InDOS フラグに影響を与える処理には、Absolute Disk Read および Absolute Disk Write (割り込み 25h および 26h) 処理があります。MS-DOS 下では、割り込み 25h と 26h ハンドラは InDOS フラグの値を 1 増分してから、ディスク処理を実行し、次に InDOS フラグの値を 1 減じます (リターン時に 0 になる)。

MS-DOS のポートの問題のため、InDOS フラグは、減じられることはあっても増分されません。割り込み 25h または 26h 処理のリターン時に、InDOS フラグの値は -1 になります。割り込みを重ねるごとに、-2、-3、などになります。そのうち InDOS フラグは無効なものとなり意味をなさなくなります。これにより、InDOS フラグを使用する特定の 16 ビットの MS-DOS ベースのプログラムが正常に動作しなくなることがあります。
原因
ディスク処理は、実際には、MS-DOS エミュレータ (Ntdos.sys) ではなく、32 ビット プログラムである Windows NT Virtual DOS Machine (NTVDM) によって行われます。割り込み 25h および 26h ハンドラは、物理ディスクの処理を行う関数を呼び出しません。
解決方法

Windows 2000

この問題を解決するには、Windows 2000 の最新の Service Pack を入手します。関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
260910 最新の Windows 2000 Service Pack の入手方法

Windows NT 4.0

Windows NT 4.0 の問題として認識しており、現在調査中です。
状況
弊社ではこの問題を、この資料の冒頭に記載した Microsoft 製品の問題として認識しております。
関連情報
この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 255570 (最終更新日 2000-09-05) を基に作成したものです。

プロパティ

文書番号:255570 - 最終更新日: 01/29/2014 19:37:07 - リビジョン: 4.3

  • Microsoft Windows NT Server 4.0 Standard Edition
  • Microsoft Windows NT Workstation 4.0 Developer Edition
  • Microsoft Windows 2000 Professional
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • kbnosurvey kbarchive kbhotfixserver kbbug4.00 kbfix4.00 win2000presp1fix kbtshoot KB255570
フィードバック