PRB: ReadConsoleInput() & PeekConsoleInput() Don't Receive DBCS (146448)



The information in this article applies to:

  • Microsoft Platform Software Development Kit (SDK) 1.0, when used with:
    • Microsoft Windows 95

This article was previously published under Q146448

SYMPTOMS

The Windows 95 console APIs ReadConsoleInput() and PeekConsoleInput() which are used to read data from a console input buffer do not receive DBCS key codes when the IME is activated.

This behavior is different from Windows NT console support in which the ReadConsoleInput() and PeekConsoleInput() APIs are enabled to receive key event records for converted the DBCS data from the keyboard buffer similar to an IME-enabled Windows-based application. In a Windows NT console application, once the DBCS character is determined, Windows NT posts the converted character bytes to the console buffer.

CAUSE

The Window 95 console architecture is based upon the Windows 3.1 MS-DOS BOX rather than console support in DBCS versions of Windows NT. In Windows 95, the console is working on top of the MS-DOS BOX. This design is opposite to DBCS versions of Windows NT where all console character i/o is directed to the Win32 subsystem.

Specifically, the Windows 95 implementation of ReadConsoleInput() and PeekConsoleInput() hook interrupt 0x09 and return keyboard events back to the application. Because existing MS-DOS IMEs and the VIME VxD hook interrupt 0x16 rather than interrupt 0x09, ReadConsoleInput() and PeekConsoleInput() are unable to receive DBCS characters composed by IMEs.

STATUS

This behavior is by design. This architectural difference between DBCS versions of Microsoft Windows 95 and Windows NT is confirmed. The Windows 95 console-IME functionality may change in future versions to become more compatible with Windows NT. We will post new information here in the Microsoft Knowledge Base as it becomes available.


Modification Type:MinorLast Reviewed:7/11/2005
Keywords:KB146448