The information in this article applies to:
SYMPTOMSWhen an application uses Direct3D calls a method of a Direct3D interface, the program faults with Exception 10H. The Exception appears to occur in a Direct3D DLL. CAUSE
The fault occurs because Direct3D in DirectX versions 5.0, 5.0a, and 5.2 do
not reset the floating-point control word when it is re-entered from an
application.
RESOLUTIONTo work around the problem, the application must restore the floating-point control word before calling back into Direct3D. STATUSMicrosoft is researching this problem and will post new information here in the Microsoft Knowledge Base, as it becomes available. MORE INFORMATION
To implement the workaround, the application must save off the floating-
point control word after Direct3D returns and before executing any code
that could change the floating-point control word. Then, prior to
reentering Direct3D, the application should restore the floating-point
control word previously set by Direct3D.
Sample Code
One known issue associated with this problem occurs because some printer
drivers alter the floating-point control word and do not restore it before
returning to the application. As a result, calling the printer functions
such as PrintDlg(), CreateDC(), StartDoc(), DeleteDC(), and so on, causes a Direct3D application to fault in Direct3D.
One way to work around this problem using these functions is to bracket the printing code with a save and restore of the floating-point control word. NOTE: If the application's printing code uses Direct3D then Direct3D's floating-point control value must be restored prior to calling back into Direct3D within the printing code. Additional query words: Retained Immediate Mode d3d Direct3D Update Render print printer driver PrintDlg MFC
Keywords : KbDirectX500bug kbSDKWin16 |
Last Reviewed: October 8, 1999 © 2000 Microsoft Corporation. All rights reserved. Terms of Use. |