文件: Q168748 [winnt] 標題: Java Applets Cause IE 3.02 to Stop Responding w/ SP3 產品: Microsoft Windows NT 版本: 4.00 作業系統: WINDOWS 關鍵字: kbbug4.00 kbfile kbfix4.00 ------------------------------------------------------------------------- 此文件中的資訊適用於: - Microsoft Windows NT Workstation version 4.0 - Microsoft Windows NT Server version 4.0 - Microsoft Internet Explorer version 3.02 ------------------------------------------------------------------------- 徵狀 ==== 在您安裝 Windows NT 4.0 版 Service Pack 3 後,當連接到含有 Java 應用程式 的網路連結時, Internet Explorer 3.02 版可能當機。此應用程式只有在顯示內 容的「色板顯示」設定為全彩時才會停止回應。 肇因 ==== Windows NT 4.0 版 Service Pack 3 中的 GetDIBits API 於全彩 (32 bpp) 顯示傳 回 BI_RGB (未壓縮) DIB 時並不填寫位元欄位。這個 GDI 變更是因為位元欄位在此 情況下不是必需的。這個變更在預期一於全彩顯示時有效的 RGB 遮罩的應用程式上可 能造成一迴歸分析,此為這個變更的副作用。 Internet Explorer 3.02 中包含的 Java 虛擬機器在初始化顯示器色板時呼叫 GetDIBits。此 Java 虛擬機器預期一大於 0x80h 代正負的有效 RGB 遮罩數值,如果 接收到一小於 0x80h 的數值,它將會在一迴圈中加倍此遮罩數值直到值大於 0x80h。 因為 Service Pack 3 GetDIBits 在 BI_RGB 傳回時並不填寫位元欄位,計算 RGB 遮 罩的應用程式接收到一未必可能的負值 (例如,0xffffffe0h) 結果。當 Java 虛擬機 器計算 RGB 遮罩並收到一負數值時,它將永遠陷於迴圈中而造成 Internet Explorer 停止回應。 很重要的一件事是要注意到 Java 虛擬機器應該以不代正負的整數來看待 RGB 遮罩。 某些情況下 ATI 影像卡傳回有效的 0xff000000h RGB 遮罩造成 Java 虛擬機器永遠陷 於迴圈中,只因未以不代正負的整數來看待此遮罩。一個對 Java 虛擬機器於全彩時 ATI 影像卡問題的獨立修訂將含於 Internet Explorer 4.0。Java 程式是 Sun Microsystems, Inc 所授權。 解決方法 ======== 要迴避此問題,不要在顯示內容中使用全彩。 Win32k.sys 已修改以在全彩系統上傳回有效的 RGB 色彩遮罩。 狀態 ==== Microsoft 已確認此為一 Windows NT 4.0 版上的問題。現已有一可用的修訂 支援,但此修訂尚未完全地迴歸分析測試,且應只用於出現前述所指問題的系 統。除非您已為此問題嚴重影響,Microsoft 建議您等待下一版含有此修訂的 Service Pack。請連絡 Microsoft Technical Support 以取得其他相關資訊。 此修訂亦可從下列 Internet URL 下載: ftp://ftp.microsoft.com/bussys/winnt/winnt-public/fixes/cht/nt40/ hotfixes-postSP3/java-fix 其他的查詢字元: 4.00 ie 3.02 prodnt ============================================================================ MICROSOFT KNOWLEDGE BASE 所提供的資訊不帶任何種類的品質保證。MICROSOFT 不擔保任何明確的或隱含的品質保證,包括商品買賣及特殊情況適合性的品質保 證。不論在任何情況下,即使 MICROSOFT 公司或其代理商已被告知可能的損壞, MICROSOFT 或其代理商對任何直接、間接、偶然性或導致性的商業利潤損失,或 特殊的損壞都沒有任何義務。某些州不允許排除或限制這種導致性或偶然性損壞 的義務,在這種情況下前述的限制可能不適用。