FIX: Win32s 1.25a Fix List

ID: Q130139


The information in this article applies to:
  • Microsoft Win32s version 1.25a


SUMMARY

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.


Additional query words: 1.25

Keywords : kbWin32s
Version : WINDOWS:1.25a
Platform : WINDOWS
Issue type :


Last Reviewed: January 14, 2000
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.