BUG: Windows 95 Access Violation Error After Disabling CTRL+C (137379)
The information in this article applies to:
- Microsoft Win32 Application Programming Interface (API), when used with:
- the operating system: Microsoft Windows 95
- the operating system: Microsoft Windows 98
- the operating system: 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.
Modification Type: | Minor | Last Reviewed: | 3/21/2005 |
---|
Keywords: | kbbug kbConsole kbKernBase kbProgramming KB137379 |
---|
|