Получение строки с названием клавиатуры и мыши

Тема в разделе "WASM.NT.KERNEL", создана пользователем ntcdm, 5 июл 2009.

  1. ntcdm

    ntcdm New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2007
    Сообщения:
    247
    Здравствуйте, участники форума!

    Необходимо получить из кернел-мода строку с именем устройства (вроде "Клавиатура PS/2" или "Мышь USB") если известно имя драйвера, например "KeyboardClass0" или "PointerClass1". Как лучше всего это сделать?
     
  2. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    IoGetDeviceProperty() с кодом DevicePropertyDeviceDescription или DevicePropertyFriendlyName.
     
  3. c4m310t

    c4m310t New Member

    Публикаций:
    0
    Регистрация:
    19 дек 2008
    Сообщения:
    237
    Какова ваша цель ?
     
  4. ntcdm

    ntcdm New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2007
    Сообщения:
    247
    Спасибо большое! Сейчас буду пробовать!

    Цель - получить имя устройства и показать его юзеру
     
  5. ntcdm

    ntcdm New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2007
    Сообщения:
    247
    Только что попробовал, работает!
    Код (Text):
    1. NTSTATUS GetInputDeviceName(PDEVICE_OBJECT pTargetDevice, PWCHAR OutputBuffer, UINT BufferSize)
    2. {
    3.     NTSTATUS NtStatus = STATUS_INVALID_PARAMETER;
    4.  
    5.     if (pTargetDevice != NULL && OutputBuffer != NULL)
    6.     {
    7.         PDEVICE_OBJECT pPDO = IoGetDeviceAttachmentBaseRef(pTargetDevice);
    8.         if (pPDO)
    9.         {
    10.             NtStatus = IoGetDeviceProperty(pPDO, DevicePropertyDeviceDescription, BufferSize, OutputBuffer, (PULONG)&BufferSize);
    11.             DbgPrint("K: IoGetDeviceProperty [%X]\r\n", NtStatus);
    12.             ObDereferenceObject(pPDO);
    13.         }
    14.     }
    15.  
    16.     return NtStatus;
    17. }