I write some code in KbFiltr_ServiceCallback (kbfiltr.c),I want change some key’s scan code(A -> B),
When I press a key to test ,it seems right.
But When I pressed one key but not released for a while,even some minutes.It comes out only two letters. (when pressed, it comes out one ,and when released it comes out another ).
When I delete for(…), it also wrong. It comes up two different letters,some letters are
‘A’ and some letters are ‘B’.
Why?Can you tell me?
The main Code is Folling:
VOID
KbFilter_ServiceCallback(
IN PDEVICE_OBJECT DeviceObject,
IN PKEYBOARD_INPUT_DATA InputDataStart,
IN PKEYBOARD_INPUT_DATA InputDataEnd,
IN OUT PULONG InputDataConsumed
)
{
PKEYBOARD_INPUT_DATA PKeyData = InputDataStart;
for(PKeyData ; PKeyData != InputDataEnd; PKeyData++)
{
g_ulCurrKeyScanCode =PKeyData->MakeCode;
if(g_ulCurrKeyScanCode == 0x1e )
{
PKeyData->MakeCode = 0x30;
}
}
}