состояние NumLock в драйвере

Тема в разделе "WASM.NT.KERNEL", создана пользователем katrus, 20 сен 2007.

  1. katrus

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    Вроде совершенно простой вопрос - но никак не могу найти ответ. Как (если конечно это вообще возможно) определить состояние NumLock находясь в драйвере?
     
  2. W4FhLF

    W4FhLF New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2006
    Сообщения:
    1.050
    Потрейси программу с вызовом GetKeyState и посмотри, что происходит.
     
  3. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
    кусок из KLOG:
    Код (Text):
    1. ...
    2.      /////////////////////////////////////////
    3.      //Get and update state of CAPS LOCK key
    4.      /////////////////////////////////////////
    5.      KEVENT event = {0};
    6.      KEYBOARD_INDICATOR_PARAMETERS indParams = {0};
    7.      IO_STATUS_BLOCK ioStatus = {0};
    8.      NTSTATUS status = {0};
    9.      KeInitializeEvent(&event, NotificationEvent, FALSE);
    10.  
    11.      PIRP irp = IoBuildDeviceIoControlRequest(IOCTL_KEYBOARD_QUERY_INDICATORS,pDevExt->pKeyboardDevice,
    12.      NULL,0,&indParams,sizeof(KEYBOARD_ATTRIBUTES),TRUE,&event,&ioStatus);
    13.      status = IoCallDriver(pDevExt->pKeyboardDevice, irp);
    14.  
    15.      if (status == STATUS_PENDING)
    16.      {
    17.         (VOID) KeWaitForSingleObject(&event,Suspended,KernelMode,
    18.                FALSE,NULL);
    19.      }
    20.      
    21.      status = irp->IoStatus.Status;
    22.  
    23.      if(status == STATUS_SUCCESS)
    24.      {
    25.         indParams = *(PKEYBOARD_INDICATOR_PARAMETERS)irp->AssociatedIrp.SystemBuffer;
    26.      if(irp)
    27.      {
    28.         int flag = (indParams.LedFlags & KEYBOARD_CAPS_LOCK_ON);
    29.             DbgPrint("Caps Lock Indicator Status: %x.\n",flag);
    30. ...
    31.      }
    WDK:
    KEYBOARD_INDICATOR_PARAMETERS:
    Код (Text):
    1. LED Flag Meaning
    2. KEYBOARD_CAPS_LOCK_ON CAPS LOCK LED is on.
    3. KEYBOARD_LED_INJECTED Used by a Terminal Server.  
    4. KEYBOARD_NUM_LOCK_ON NUM LOCK LED is on.
    5. KEYBOARD_SCROLL_LOCK_ON SCROLL LOCK LED is on.
    6. KEYBOARD_SHADOW Used by a Terminal Server.
     
  4. katrus

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    rain
    ХО ХО! Спасибо!
     
  5. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
    н.з.
    btw а вот как узанть расскладку в ядре может кто-то знает?
     
  6. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    боян, где-то уже проскакивал такой вопрос.
     
  7. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
    это хорошо что боян значит кто-то это уже делал, мож даже кодом делился, может припомнишь где примерно видел? в ддк есть кое что но я пока не понял как это реализовать