Article: Q251402
Product(s): Microsoft Windows Software Development Kit
Version(s): WINDOWS:4.0,95
Operating System(s):
Keyword(s): kbHook kbGrpDSUser kbOSWin95 kbOSWin98 kbDSupport
Last Modified: 15-DEC-2000
-------------------------------------------------------------------------------
The information in this article applies to:
- Microsoft Windows Software Development Kit (SDK) 4.0, on platform(s):
- Microsoft Windows 98
- Microsoft Windows 95
-------------------------------------------------------------------------------
SYMPTOMS
========
A global Windows hook, for example a mouse hook, stops responding (crashes) when
triggered by a 16-bit application.
CAUSE
=====
The problem occurs when the hook dynamic-link library (DLL) is built by using
the Visual C++ 6.0 Service Pack 2 (SP2) development environment. The problem
also occurs when the hook project is using the multithreaded DLL C run-time
library (/MD) option.
The Libcmt.lib file that is replaced by SP2 has a bug that can cause this type of
behavior. The versions of Libcmt.lib from SP1 and SP3 do not exhibit this
behavior.
RESOLUTION
==========
To prevent this problem, do not use Libcmt.lib from Visual C++ version 6.0 SP2.
Either install Visual C++ 6.0 SP1 or Visual C++ 6.0 SP3, or use Libcmt.lib from
a Visual C++ 6.0 SP1 or SP3 installation and rebuild the DLL.
If you are using the /MD or multithreaded DLL C run-time library option, you must
switch to the static multithreaded option (/MT).
STATUS
======
This problem is caused by a regression bug in the Visual C++ version 6.0 SP2
development environment.
MORE INFORMATION
================
Steps to Reproduce Behavior
---------------------------
1. Build a system-wide keyboard/mouse hook by using Visual C++ 6.0 SP2.
2. Install the system-wide hook.
3. Start any 16-bit application.
4. When mouse (in the case of a mouse hook) or keyboard (in the case of a
keyboard hook) input occurs on the 16-bit application, the program stops
responding (crashes).
Alternatively:
1. Build a system-wide keyboard/mouse hook by using the /MD compiler switch.
2. Install the system-wide hook.
3. Start any 16-bit application.
4. When mouse (in the case of a mouse hook) or keyboard (in the case of a
keyboard hook) input occurs on the 16-bit application, the program stops
responding (crashes).
Additional query words:
======================================================================
Keywords : kbHook kbGrpDSUser kbOSWin95 kbOSWin98 kbDSupport
Technology : kbAudDeveloper kbSDKSearch kbWinSDKSearch
Version : WINDOWS:4.0,95
Issue type : kbprb
=============================================================================