请问一个关于WRITE_PORT_UCHAR的问题
为什么我用该方法直接写端口
void WaitForKeyboardWrite(void)
{
int i;
UCHAR c;
for (i = 0; i < 1000; ++i)
{
KeStallExecutionProcessor((ULONG)50);
c = READ_PORT_UCHAR((PUCHAR)0x64);
if ((c & defOBUFFER_FULL) == defOBUFFER_FULL)
break;
}
}
void PressKeyByScan(int ScanCode)
{
WRITE_PORT_UCHAR((PUCHAR)0x64,(UCHAR)0xd2);
WaitForKeyboardWrite();
WRITE_PORT_UCHAR((PUCHAR)0x60, (UCHAR)ScanCode);
WaitForKeyboardWrite();
WRITE_PORT_UCHAR((PUCHAR)0x64,(UCHAR)0xd2);
WaitForKeyboardWrite();
WRITE_PORT_UCHAR((PUCHAR)0x60, (UCHAR)ScanCode | 0x80);
WaitForKeyboardWrite();
}
当我循环输出一个记录着要输出字符的扫描码时,在Notepad.txt文本文件输出完全正确,但在有些应用程序下不是输出少,就是输出顺序不对??
请问怎么解决?