Startup Failure Issues

Applies To: Windows 7, Windows Vista

There are several known startup failure issues addressed by the Compatibility Administrator using compatibility fixes and compatibility modes.

Fix Name Symptom Fix Description

HandleWvsprintfExceptions

The setup program fails to install the application.

Modifies the wvsprintf function to emulate the function behavior of the Microsoft Windows®°95 operating system when the arglist parameter is not valid.

IgnoreDebugOutput

The application cannot load.

Causes the OutputDebugString function to ignore any output sent by the application, as this type of debug information is not useful to the end user, and it slows down application performance on the Microsoft Windows®°2000 Professional operating system.

EmulateGetStdHandle

The application does not start after installation.

Modifies the GetStdHandle function to return only the non-NULL handle values. Some applications incorrectly assume that a handle with a value of NULL is not valid, so this fix prevents the handle value from being treated as a zero (0).

StackSwap

You receive an error message or access violation after an application does not start.

Modifies the way specified functions use the stack in order to emulate the stack usage with Windows 95.

HeapPadAllocation

You receive an access violation error message when starting an application.

Addresses potential memory allocation problems by allocating additional memory for every call to the HeapAlloc function. By default, this fix allocates an extra 256 bytes of memory, but you can modify the amount by using a command prompt.

FailGetStdHandle

You receive an error message stating that the application you are trying to start is not installed.

Fails all GetStdHandle function calls from the specific application.

EmulateGetStdHandle

You receive an error message stating that you must install the application you are trying to start.

Modifies the GetStdHandle function to return only the non-NULL handle values. Some applications incorrectly assume that a handle with a value of NULL is not valid, so this fix prevents the handle value from being treated as a zero (0).

EmulateVerQueryValue

You receive an error message stating that an application cannot start.

Modifies the VerQueryValue function to accept a NULL value for the puLen parameter. This is correct in the function itself for the Windows® XP Professional operating system.

AddWritePermissionsToDeviceFiles

You receive an error message stating "No Disc Inserted" after the initial post-installation start of an application. This message appears because the application is unable to detect your CD-ROM+A44 drive.

Forces the device read/write permissions to match the permissions necessary for all I/O controls. This compatibility fix enables SecureROM applications to open your sound devices.

EmulateGetDeviceCaps

You receive an access violation when the application starts.

Modifies the GetDeviceCaps function in Windows XP Professional to emulate a request for the NUMRESERVED capability in Windows 95 and Windows 98.

GlobalMemoryStatusLie

You receive an error message stating "Computer memory full" when you start an application.

Modifies the memory status structure so that it reports a swap file that is 400 MB regardless of the true swap file size.

VirtualRegistry

You receive an error message stating "Component failed to be located" when you start an application.

Modifies all of the registry functions to allow virtual keys, redirection, and expansion values.

HideDisplayModes

The application stops responding immediately after starting.

Reduces the number of reported display modes reported, emulating the behavior of Windows 95 and Windows 98. Windows XP Professional enumerates display modes differently from Windows 95 and Windows 98, which causes problems for applications that attempt to list and store the supported display modes information in a fixed-length buffer.

HeapClearAllocation

The application quits immediately after starting.

Enters zeros (0) into the heap-allocated memory for the application.

AddWritePermissionsToDeviceFiles

The application becomes unresponsive after starting.

Forces the device read/write permissions to match the permissions necessary for all I/O controls. This compatibility fix enables SecureROM applications to open your sound devices.

EmulateFindHandles

The application becomes unresponsive or closes unexpectedly shortly after starting.

Modifies the RemoveDirectory function to close any open FindFirstFile handles on empty directories. Some applications perform a FindFirstFile to find a directory, and then call RemoveDirectory to remove the directory. Because the application did not close the FindFirstFile handle, the RemoveDirectory fails.

This compatibility fix also ensures that the FindFirstFile handles are valid before calling the FindNext or FindClose function.

IgnoreCoCreateInstance

You receive an exception error when the application starts.

Modifies the CoCreateInstance function to fail gracefully when an application identifies a specific CLSID.

LoadLibraryCWD

You receive an error message stating ".dll not compatible with the application" when you start an application.

Emulates the behavior of older versions of Windows by loading from the current directory first.

CorrectFilePathInSetDlgItemText

You receive an Invalid error, or you determine that a component or file is not correctly registered or is missing.

Modifies the SetDlgItemTextA function. For example, if the string is C:\windows\system\, then regardless of case, this compatibility fix substitutes the GetSystemDirectory function.

IgnoreException

An application starts with only a cursor on the screen or an application becomes unresponsive immediately after starting.

Causes the application to ignore specified exceptions. By default, applications only ignore credentialed administrative instructions, but this compatibility fix enables the application to ignore any exception.

DelayDllInit

You receive an error message stating "Component failed to initialize" when using an application.

Causes a delay in the application's static DLLs. Some applications use static DLL files, which can issue calls before the application is ready. This compatibility fix requires a command prompt with a list of the affected DLL files. The files are loaded in the reverse order listed in the command prompt.

NoGhost

The application minimizes, but you continue to hear sound effects. Additionally, the application may not run when selected from the taskbar.

Disables window ghosting for this application.

SetEnvironmentVariable

You receive runtime errors when you start an application or specific components, or you receive an error message stating "Files cannot be found or do not exist" when using the application.

Enables the application to set specific environment variables at application startup. You provide these variables at a command prompt, separating multiple environment variables with a pipe (|).

EmulateJoystick

The application quits unexpectedly when it expects to find a joystick.

Retrieves JOYCAPS data for a given joystick number, copying the number of requested bytes to an application structure. If the returned value is an error, this compatibility fix emulates the JOYCAPS function from Windows 95 and Windows 98.

EmulateMissingEXE

You receive an error message when starting Scandisk, Disk Defragmenter, or the system Help

Modifies the CreateProcess, WinExec, FindFirstFile, FindFirstFileEx, IShellLink::SetPath, and IShellLink::SetArguments functions to redirect certain Windows 95 and Windows 98 executable files to the Windows XP Professional equivalent. For example, Windows 95 contains the Defrag.exe application; however, on Windows XP Professional this same application appears as a Microsoft Management Console (MMC) snap-in. This compatibility fix searches for the Start.exe, Scandskw.exe, Defrag.exe, Control.exe, Dxdiag.exe, Winhelp.exe, Rundll.exe, and Pbrush.exe files to redirect them to the proper location for Windows XP Professional.

EmulateSlowCPU

You receive an access violation or a blank screen when running an application on a high-end computer.

Modifies the timeGetTime, QueryPerformanceCounter, and QueryPerformanceFrequency functions to emulate the return values expected on slower processors that were in wide use with older versions of Windows.

EmulateToolHelp32

You receive an error message when attempting to start two instances of an application.

Modifies the Process32First and Process32Next functions to address two problems:

  • Windows XP Professional stores the process image name in the szExeFile member of the PROCESSENTRY32 structure. However, Windows 95 and Windows 98 use the szExeFile member to receive and store the path and file name of the module.

    This compatibility fix converts the process image name to a module file name that is compatible with Windows 95.

  • The cntUsage member, of the PROCESSENTRY32 structure, always receives a zero (0) on Windows XP Professional. However, Windows 95 and Windows 98 require a non-zero value for the cntUsage member.

    This compatibility fix adds the value 1 to the cntUsage member.

FailCloseProfileUserMapping

You receive an access violation when starting the Safedisk application.

Causes the CloseProfileUserMapping function call to fail. Applications written for older versions of Windows require this call to fail; however, on Windows XP Professional, there is no way for this function to fail.

Note
This problem is computer-dependent.

FixServiceStartupCircularDependency

Logging on and starting services take a long time.

Addresses circular dependencies that occur when two or more installed services depend upon each other to start.

ForceCDStop

You receive a message asking you to put the correct CD-ROM into the drive or stating that no CD-ROM is in the drive.

Stops applications written for Windows 95 or Windows 98 from trying to access the CD-ROM drive when playing a movie or sound through MCI.

Note

This compatibility fix assumes that the application is running off a single CD-ROM drive at a time.

ForceCoInitialize

The application fails to run its startup movie (.avi file) and shuts down.

If the application does not initialize COM before attempting to run an AVI file, this fix modifies the CoCreateInstance function to call CoInitialize(NULL). Some multimedia applications call AVIFileInit without first calling CoInitialize, which causes the function to fail.

ForceDXSetupSuccess

You receive an error message stating "DirectX® does not support the Windows version on the system" when using an application.

Modifies the LoadLibrary, LoadLibraryEx, GetProcAddress, and FreeLibrary functions to provide stubs for the DirectXSetup and DirectXSetupGetVersion functions of the Dsetup.dll and Dsetup32.dll libraries. Some applications built to use older versions of DirectX will encounter problems on Windows XP Professional.

ForceSimpleWindow

The application does not run in Hardware mode.

Adjusts the CreateWindow function parameters to create a very simple window. This fixes problems that occur when an application passes combinations of styles that had special meaning in Windows 95 and Windows 98 but are not supported in Windows XP Professional.

CorrectBitmapHeader

The Autorun menu does not appear.

Corrects known bitmap headers that were acceptable in Windows 95 and Windows 98 but are not acceptable in Windows XP Professional.

HandleAPIExceptions

The Autorun dialog box is not refreshed and the option to start the application is disabled after installation.

Modifies the BackupSeek, CreateEvent, GetFileAttributes, VirtualProtect, GetTextExtentPoint32, GetMenuItemInfo, and wsprintf functions to fail gracefully.

IgnoreMessageBox

You receive messages about debugging or other extraneous information while using an application.

Modifies the MessageBox function so that it does not display message boxes for specified caption and display text.

IgnoreScheduler

The application fails to start or performs slowly.

Handles scheduling problems, such as threads suspending or resuming themselves. It also normalizes all thread and process priorities that override other threads or processes.

LazyReleaseDC

You receive an error message stating "Desktop is running in 0-bit color mode" and the application does not start.

Delays the release of a device context, released by the ReleaseDC function. This is only necessary for applications running on Windows 95 and Windows 98.

MapMemoryB0000

You receive an error message or an application does not start.

Maps a block of memory at the B0000 address for Windows 95 and Windows 98 applications that require the memory mapping.

PopulateDefaultHKCUSettings

You receive an error message stating "Cannot find X or X components were not found or are corrupt, run setup" when a user attempts to use an application he or she did not personally install.

Populates HKEY_CURRENT_USER with the necessary default registry settings for the application. This compatibility fix enables applications that write these settings at installation to run for other users.

RecopyExeFromCD

You receive an error message stating "Not a valid win32 application" or "Unable to run the command" when starting an application.

Accepts a command line that tells it to recopy a file from the CD. Applications written for Windows 95 and Windows 98 truncate some NULL bytes from an executable image. Windows XP Professional performs image validation on files, and will fail if the image size changes.

Uses a command prompt to recopy an application file from a CD-ROM. Applications written for Windows 95 and Windows 98 truncate some NULL bytes from an executable image, so when Windows XP Professional performs image validation, the image size changes and it fails.

RemoveDDEFlagFromShellExecuteEx

You receive an access violation when you attempt to use Windows components, such as Internet Web links or Explorer.exe folders, to start an application from within another application.

Modifies the ShellExecuteEx function to remove the SEE_MASK_FLAG_DDEWAIT flag. Some applications call ShellExecute, which in turn calls ShellExecuteEx function with the SEE_MASK_FLAG_DDEWAIT flag set. This can cause synchronization problems.

SearchPathInAppPaths

You receive an error message stating "File or program cannot be found" when an application attempts to start a Windows component, such as Microsoft Paint.

Modifies the SearchPath function so that it also searches in the App Paths registry subkey, located in the HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\ directory.

TerminateExe

You receive entry point errors for functions that appear within earlier versions of Cryptsys and DirectX DLLs.

Immediately terminates an executable program after it starts.

WinG32SysToSys32

You receive an error message stating "WinG32.dll has been incorrectly installed in the system folder. Please move it to the system32 folder" when using an application.

Modifies the GetModuleFileName function and, if the module path and file name contain \system\wing32.dll, modifies the file path to point to the true system directory.

See Also

Concepts

Known Compatibility Fixes, Compatibility Modes, and AppHelp Messages
Internet Explorer Compatibility Test Tool