FIX: Win32s 1.25a Fix List

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.

Additional reference words: 1.25 1.25a KBCategory: kbprg kbfixlist kbbuglist KBSubcategory: W32s

Keywords          : kbWin32s kbbuglist kbfixlist
Version           : 1.25a
Platform          : WINDOWS
Solution Type     : kbfix


Last Reviewed: November 1, 1997
1999 Microsoft Corporation. All rights reserved. Terms of Use.


Article ID: Q130139

Last Reviewed:
November 1, 1997

Provided by Support Online from Microsoft Product Support Services.