1.25a
WINDOWS
kbprg kbfixlist kbbuglist
The information in this article applies to:
- Microsoft Win32s, version 1.25a
The following is a list of the known bugs in Win32s version 1.2 that
were fixed in Win32s version 1.25.
- GlobalAlloc(GMEM_FIXED) from 32-bit .EXE locks memory pages. It is
more efficient to use GlobalAlloc(GMEM_MOVEABLE) and call GlobalFix()
if necessary.
- WINMM16.DLL has no version information.
- CreateFileMapping() with SEC_NOCOMMIT returns ERROR_INVALID_PARAMETER.
- PolyPolygon() does not close the polygons.
- OpenFile() only searches the current directory when only a filename is
given, not the application directory, the system directory, the windows
directory, or the directories listed on the path.
- GetFileInformationByHandle() doesn't return the correct file attribute.
- GlobalUnlock() sets an error of ERROR_INVALID_PARAMETER.
- lstrcmp()/lstrcmpi() do not use the collate table correctly.
- FreeLibrary() in DLL_PROCESS_DETACH crashes the system.
- FindResource(), LoadResource(), GetProcAddress(), GetModuleFileName(),
EnumResourceNames(), and other APIs, fail with a NULL hInstance.
- sndPlaySound() with SND_ASYNC | SND_MEMORY may cause a crash or may work
poorly.
- Thread Local Storage (TLS) data is not initialized to 0 in TlsAlloc().
- The pointer received in the lParam of WM_INITDIALOG in the common dialog
hook function becomes invalid in the following messages if the pointer
is "remembered" in a static variable.
- Stubbed API GetFileAttributesW() does not return -1 on error.
- Code page CP_MACCP not supported.
- Invalid LCIDs are not recognized.
- CreateFile() fails to open an existing file in share mode.
- GetLocaleInfo() for locale returns system defaults from WIN.INI.
- GetVolumeInformation() fails with ERROR_INVALID_NAME for volumes
without a label.
- VirtualProtect() may miss the last page in an address range.
- GetLocaleInfo() returns incorrect information for most non-US locales.
- ANSI/OEM conversions always use code page 437.
- GetProcAddress() for printer driver APIs is case sensitive.
- The LanMan APIs are unsupported, but they return 0, which indicates
that the API was successful. They should return NERR_InvalidAPI (2142).
- CreateFileW() returns 0 instead of -1 (HFILE_ERROR).
- lstrcpyn() copies n bytes from source to destination, then appends a
NULL terminator, instead of copying n-1 bytes and appending the NULL
terminator.
- GetDriveType() doesn't report detecting a CD-ROM or a RAM DISK.
- CRTDLL calls TlsFree() upon each process detach, not just the last.
- If a DllEntryPoint calls FreeLibrary() when using universal thunks,
the system can crash.
- Not all 32-bit DLLs have correct version numbers.
- GetCurrentDirectory() returns the wrong directory after calling
GetOpenFileName(). The workaround is to call SetCurrentDirectory(".")
right after returning from the call to GetOpenFileName().
- RegEnumValue() and other Registry functions return ERROR_SUCCESS even
though they are not implemented. Win32s implements only the registry
functions supported by Windows.
- AreFileApisANSI()/SetFileApisToANSI()/SetFileApisToOEM() are not
exported. AreFileApisANSI() should always return TRUE, SetFileApiToOEM()
should always fail, and SetFileApiToANSI() should always succeed.
- SetLocaleInfoW()/SetLocateInfoA() are not implemented.
- GetScrollPos() sets the last error if the scroll position is 0.
- SetScrollPos() sets the last error if the last scroll position is 0.
- LoadString() leaks memory if the string is a null string.
- GetFileVersionInfoSize() fails if the resource section is small and
close to the end of the file.
- MoveFile() doesn't call SetLastError() on failure or sets a different
error than on Windows NT.
- SetCurrentDirectory() does not work on a CD-ROM drive.
- GetFileVersionInfoSize() fails if the 2nd parameter is NULL.
- WSOCK32.DLL is missing exported stubs for unimplemented APIs.
- Win32s fails to load 64x64 monochrome (black and white) icons.
- CreateFile() fails when called with a filename with an international
character.
- GetCurrentDirectory() returns an OEM string.
- PrintDlg() causes GP fault if hDevMode!=NULL and another printer is
selected that uses a larger DevMode buffer.
- Unicode resources are not properly converted to 8-bit characters.
- CreateDC() returns an incorrect DEVMODE. This can cause a variety of
symptoms, like the inability to do a Landscape Print Preview from an
MFC application or the displayed paper width and height not changing,
even when you change the paper size.
- OpenFile() fails on filenames with OEM characters in the name.
- WNetCancelConnection() should be supported similar to
NetAddConnection().
- GetDriveType() fails on a Stacker 3.1 drive.
- SetCurrentDirectory() fails on Novell client machines.
- GetProp() returns 0 in the second instance of an app in certain cases.
- fopen(fn, "w") fails on second call.
- TLS indices allocated by a module are released when that module is
freed.
- CreateWindow() handles STARTUPINFO incorrectly if the application starts
minimized.
- CreateFile() creates files with incorrect attributes.
- Resource sections are now read/write to emulate the behavior of Windows
NT and Windows 95.
- Removed the 128K stack limitation.
- CompareStringW() sometimes uses incorrect locale, primarily Swedish and
other Scandinavian locales.
- Added dummy _iob to CRTDLL for applications that reference standard
handles.
- Added support for OPENCHANNEL, CLOSECHANNEL, SEXGDIXFORM, and
DOWNLOADHEADER escapes.
|