ddk Moufiltr MOUSE_INPUT_DATA как влиять на координаты курсора

Тема в разделе "WASM.WIN32", создана пользователем JunoAlex, 14 июн 2010.

  1. JunoAlex

    JunoAlex New Member

    Публикаций:
    0
    Регистрация:
    13 июн 2010
    Сообщения:
    2
    Здравствуйте!
    Есть следующий код в драйвере-фильтре мыши под Win XP

    VOID
    MouFilter_ServiceCallback(
    IN PDEVICE_OBJECT DeviceObject,
    IN PMOUSE_INPUT_DATA InputDataStart,
    IN PMOUSE_INPUT_DATA InputDataEnd,
    IN OUT PULONG InputDataConsumed
    )
    PDEVICE_EXTENSION devExt;
    PMOUSE_INPUT_DATA pCursor;
    LONG temp;

    DbgPrint("MouFilter_ServiceCallback() called for UnitId %hu\n", InputDataStart->UnitId);

    devExt = (PDEVICE_EXTENSION) DeviceObject->DeviceExtension;

    for (pCursor = InputDataStart; pCursor < InputDataEnd; pCursor++) {

    pCursor->LastX = LastY = 0;

    DbgPrint("Mouse moved X = %li and Y = %li\n", pCursor->LastX, pCursor->LastY);
    }

    (*(PSERVICE_CALLBACK_ROUTINE) devExt->UpperConnectData.ClassService)(
    devExt->UpperConnectData.ClassDeviceObject,
    InputDataStart,
    InputDataEnd,
    InputDataConsumed
    );
    }

    сюда мы точно попадаем, драйвер компилится и устанавливается.
    все DBG выводятся. Но мышка как двигалась так и двигается.

    если например забанить правую кнопку

    pCursor->ButtonFlags &= MOUSE_RIGHT_BUTTON_DOWN
    pCursor->ButtonFlags &= MOUSE_RIGHT_BUTTON_UP

    то все отлично работает, но вот никакие действия на координаты не влияют(
    Вопрос:
    1. Так и должно быть изменения LastX и LastY не влияют на положение курсора, по ним можно только определить его положение но не изменять? (бредовая версия)
    2. Следует из положительного ответа на 1. Как в драйвере запретить перемещение курсора (инвертировать и т.д.)
    3. Либо я просто где-то допустил ошибку(в этом участке кода или в дургом...)?

    а тестирую все это дело на virtualBox, если это может влиять.