BUG: Windows 95 Access Violation Error After Disabling CTRL+C
Article ID: 137379
Article Last Modified on 3/21/2005
APPLIES TO
- Microsoft Win32 Application Programming Interface, when used with:
- Microsoft Windows 98 Standard Edition
- Microsoft Windows Millennium Edition
This article was previously published under Q137379
SYMPTOMS
In a Win32 environment, a console application can be terminated by
pressing CTRL+C. To disable CTRL+C input, a console application can call
the SetConsoleCtrlHandler(NULL, TRUE) API function.
When this API function is called in Windows NT, CTRL+C is ignored if
pressed. However, when it is called in Windows 95, pressing CTRL+C
generates an Access Violation error. Similarly, when this API is called in
Windows 95, pressing CTRL+BREAK generates an Access Violation error.
RESOLUTION
There are two alternatives when you want to disable CTRL+C and avoid
generating an Access Violation error:
- Install a console control handler to capture and ignore the CTRL+C
keypress:
SetConsoleCtrlHandler(MyHandler, TRUE);
BOOL MyHandler(DWORD dwEventType)
{
if ( dwEvnetType == CTRL_C_EVENT
if ( dwEventType == CTRL_C_EVENT )
return TRUE; // CTRL+C handle by function
else
return FALSE; // pass to next handler
}
-or-
- Disable CTRL+C by disabling the ENABLE_PROCESSED_INPUT console mode.
Disabling the ENABLE_PROCESSED_INPUT console mode then reports CTRL+C
to the input buffer, not the system:
SetConsoleMode( hConsoleHandle,
(Mode & ~ ENABLE_PROCESSED_INPUT) );
STATUS
Microsoft has confirmed this to be a bug in the products listed at the
beginning of this article.
Keywords: kbbug kbconsole kbprogramming kbkernbase KB137379