BUG: Win32s 1.1 Bug List                                      [P_W32dev]
ID: Q113739    CREATED: 13-APR-1994   MODIFIED: 28-APR-1994
3.10
WINDOWS
ENDUSER | buglist1.10

----------------------------------------------------------------------
The information in this article applies to:

 - Microsoft Win32s version 1.1
----------------------------------------------------------------------

SUMMARY
=======

The following is a list of known problem in Win32s version 1.1. Microsoft
has confirmed these to be problems in Win32s version 1.1. Problems marked
with a hyphen ("-") will be corrected in Win32s version 1.15. Problems
marked with an asterisk ("*") will be corrected in Win32s version 1.2.

 - Setup fails if there are 40 groups in Program Manager.

 - WinFile generates a general protection (GP) fault while viewing file
   properties.

 - The Universal Thunk (UT) callback returns a WORD, rather than a DWORD.

 - The LA (linear address) Table is limited to 256 entries. This limits the
   number of VirtualAlloc() calls that will succeed.

 - Win32s does not handle paths that contain an ampersand ("&") or a number
   sign ("#").

 - FP (floating point) exceptions are not trapped by SEH (structured
   exception handling. FP exceptions in 32-bit code which are called from
   16-bit code via UT can cause a GP fault in WIN87EM.

 - Thread Local Storage (TLS) data is allocated from a limited heap size.
   This can cause applications that use a lot of TLS data to fail to load.

 - CB_FINDSTRING and LB_FINDSTRINGEXACT are not thunked correctly from  a
   16-bit application to a 32-bit application.

 - Dialog templates passed from a 32-bit applications are corrupted.

 - If a DDE client responds to INITIATE for which it is also the server,
   lParam is packed incorrectly.

 * fstat() always returns that rt_mode is read/write.

 * chdrive() does not retain the current working directory. chdrive()
   always uses the root directory.

 - ChooseFont()'s referenced CHOOSEFONT structure has blue value set to 0
   with CF_EFFECTS.

 - CopyFile() uses the current time rather than the file time.

 - CreateFile() does not parse UNC names correctly.

 - CreateProcess() does not set current directory correctly.

 - CreateProcess() ignores window size and window position.

 - CreateProcess() debug version corrupts the environment if
   lpApplicationName != NULL.

 - CreateProcess() returns failure if the child does not call GetMessage()
   or yield in some way before control goes to the parent.

 - CreateProcess()'s dwFlags is ignored when starting Win16 applications,
   while wShowWindow is always passed.

 - CreateWindowEx()'s CW_USEDEFAULT flag is not handled, which causes
   problems with using WM_VISIBLE.

 - EnumMetaFile()'s handles array is corrupted.

 - EnumPropsEx() enumerates non-existing properties.

 - EqualRect() returns TRUE for rectangles that are lines.

 - FindFirstFile() error code is set to ERROR_NO_MORE_FILES instead of
   ERROR_FILE_NOT_FOUND if there are no matches for the search pattern.

 - FindFirstFile() may use a bad DTA, causing stack corruption.

 - GetClassInfo() WNDCLASS buffer is corrupted if passed an invalid class.

 * GetFileInformationByHandle() support added in version 1.15, but file
   attribute returned is always 0.

 - GetFilePointer() returns valid value when given invalid handle.

 - GetFileSize() moves the file pointer.

 - GetFileVersionSize() causes a GP fault when 16-bit applications for
   Windows call the function from a 32-bit DLL.

 - GetKerningPairs() results are not in Win32 format.

 - GetModuleFileName() causes the OFSTRUCT structure to be truncated in 16-
   bit applications calling this function on a 32-bit DLL.

 - GetModuleFileName()'s char count returned includes the terminating NULL
   character.

 - GetOpenFileName() call fails with OFN_ENABLETEMPLATEHANDLE.

 - GetOpenFileName() has a hook you can use to trap  WM_INITDIALOG to get
   the address of OPENFILENAME struct, but the pointer is  corrupted by the
   next message.

 - GetOutlineTextMetrics() returns OUTLINETEXTMETRIC structure with Windows
   3.1 format rather than Win32 format.

 - GetOutlineTextMetrics()'s OUTLINETEXTMETRIC UnderscorePosition,
   UnderscoreSize, and otmItalicAngle are incorrect.

 - GetSystemInfo() returns an incorrect lpMinimumApplicationAddress and an
   incorrect lpMaximumApplicationAddress.

 - GlobalCompact() exception occurs when the value is larger than available
   memory.

 - HeapAlloc/malloc() are slow because debug check was left in the code.

 - IsCharAlpha() returns 0 for characters 128-255.

 - LoadLibrary() fails to report unsucessful load of 16-bit DLLs (should
   return ERROR_BAD_EXE_FORMAT).

 - LoadLibrary() fails after 4591 calls due to a memory leak.

 - LoadLibrary() was fixed to work from a 32-bit DLL called by a 16-bit
   application.

 - LoadModule() does not pass cmdshow so applications get SW_SHOWNORMAL.

 - LocalAlloc() fixed to work from a 32-bit DLL called by a 16-bit
   application.

 - MultiByteToWideChar() has the wrong string returned with USE_GLYPHCHARS.

 - NetAccessAdd(), NetApiBufferAllocate(), NetUseGetInfo(), and
   NetUserSetGroups() all are not exported by NETAPI32.DLL.

   NOTE: These functions are not supported.

 - OpenFile() does not parse UNC names correctly.

 - PeekMessage() causes RIP in debug windows if hwnd is NULL.

 - PlayMetaFileRecord()'s handles array is corrupted.

 - PolyPolygon() fails with more than 16 polygons.

 - PrintDlg() incorrectly frees global memory and fails with MFC sample.

 - SetClipboardData()'s 32-bit memory is not freed when clipboard is
   emptied.

 - SetErrorMode()'s SEM_NOOPENFILEERRORBOX does not work. The message box
   still appears.

 - SetFilePointer() returns a valid value if given an invalid handle.

 - SetProp()'s seventeeth call fails if lpsz is a string rather than an
   atom.

 - SetWindowLong()'s GWL_USERDATA always returns 1.

 - TrackMenuPopup()'s optional lprc parameter is not handled correctly.

 - waveOutGetDevCaps()'s WAVEOUTCAP buffer not filled correctly for the
   SoundBlaster.

 - waveOutWrite()'s WOM_DONE messages are not posted with multiple buffers
   and loop play.

 * WinExec() will cause 16-bit applications which are launched to GP fault.

Additional reference words: 1.10
KBCategory: Prg
KBSubCategory: Win32s
================================================================================