메뉴 건너뛰기

그외 개발정보


  • Feb 18, 2004
  • 444
건우님 안녕하세요.

또 문제에 봉착했습니다 ㅡㅡ;;

마우스 필터 드라이버 콜백 함수에서

if(InputDataStart->ButtonFlags && 0x0400)
KdPrint(("WheelButton==%d \t %x\n", InputDataStart->ButtonData, InputDataStart->ButtonData));

// Left Button changed to down.
if(InputDataStart->ButtonFlags && 0x0001)
KdPrint(("LeftButton==%d \t %x\n", InputDataStart->RawButtons, InputDataStart->RawButtons));

// Right Button changed to down.
if(InputDataStart->ButtonFlags && 0x0004)
KdPrint(("RightButton==%d \t %x\n", InputDataStart->RawButtons, InputDataStart->RawButtons));

이렇게 추가한후에 값을 소프트아이스로 값을 검출 하였는데...

이상하게 휠값만이 제대로 검출이 되더라구요.

그리고 왼쪽버튼과 오른쪽버튼은 아무리 눌러도 0으로 표시되고요..

MSDN에서 찾아보니깐 왼쪽버튼과 오른쪽버튼 가운데 버튼 값들은

subsystem아랫단에서는 볼수 없다고 나오더라구요 ㅡㅡ;;

마우스에서 컴퓨터로 4바이트를 전송하잖아요.

그럼 필터에서는 저 4바이트 값을 어떻게 볼수가 있는지요...

부탁드립니다(--)(__)(--)




  • profile
    음, 먼저번에도 말씀드렸지만 mouser폴더의 소스를 분석해 보시면 될것 같습니다. mouclass로 패킷을 보내는 방법이 있으니까요... ^^

  • profile
    하..^^ 그래도 말씀 드릴 수 있는건 찾아서라도 가르쳐 드려야죠...^^'

    근데, 어떡하죠?
    질문의 내용을 아직 파악하기가 어려운데...
    님의 필터드라이버가 마우스로 데이타를 보내는 때가 있다는 말씀이신지...

    혹시 KdPrint 의 사용법을 물어 보시는 건가요?
    아래 코드를 보면 KdPrint에 괄호가 두겹씩 있는데 한겹을 빼보시겠습니까?
    그리고 Checked Build Environment로 컴파일해 보시길...
    이게 아니라면... 도움 드릴수 없어 죄송합니다.ㅜ.ㅡ

    >아닙니다.
    >
    >건우님 오히려 제가 자꾸 불편하게 해드려 죄송합니다(--)(__)(--)
    >
    >제가 글을 잘못 쓴거 같더라구요...
    >
    >제가 현재 i8042prt.sys UpperFilter로서 제 필터드라이버를 부착했고요.
    >
    >제 필터드라이버에서 마우스로 넘어오는 4바이트의 값을 출력하고 싶어요 ㅠㅠ
    >
    >KdPrint(("MouseData[%X], [%X], [%X], [%X]\n", data[0], data[1], data[2], data[3]));
    >와 같게요...
    >
    >괜히 바쁘실텐데... 수고스럽게 찾아가면서 답변 안주셔도 괜찮아요...
    >
    >그냥 지나시면서 간단히 조언해주세요^^;;


  • profile
    우움- 어떤 상황이 된 것인지... 저도 잘 모르겠네요.@.@
    휠 정보는 잘 들어오는데 버튼 정보는 안들어온다...
    혹시, InputDataEnd에 들어있는 값도 마찬가지던가요?
    만약 그것도 아니라면...
    마우스가 제대로 정보를 보내고 있는지도 체크해 보셔야 할것 같고...
    또, 그것이 아니라면... 글쎄요..@.@
    그런데... 마우스 필터 드라이버를 설치 하지 않고, 그냥 마우스를 꽂으면 어떻던가요? 마우스가 표준 마우스 프로토콜을 이용한다면, 움직임이나 버튼 클릭등은 잘 될텐데...

    에궁...
    상황을 접하고, 같이 디버깅을 해보지 않는 이상 ..
    잘 모르겠네요..@.@
    도움 못 드려서... 죄송합니다, ㅜ.ㅜ

  • profile
    음...
    DDK 도큐먼트를 봤는데요,

    MOUSE_INPUT_DATA 구조에 대해 아래와 같이 설명이 있더군요.
    즉, RawButtons에 대한 정보는 사용하지 않는 경우도 있다는 말인데...

    혹시, ButtonFlags 값은 잘 들어오나요?
    그렇다면, 단순히 ButtonFlags값으로도 충분히 이벤트를 이용하실 수 있으실텐데...

    제가 정확히 질문을 알아 들은건가요?.@.@


    typedef struct MOUSE_INPUT_DATA {
    USHORT UnitId; // zero-based unit number of the mouse port
    USHORT Flags; // indicator flags
    union {
    ULONG Buttons; // transition state of the mouse buttons
    struct {
    USHORT ButtonFlags; // transition state of mouse buttons
    USHORT ButtonData; // data for flags (such as amount
    // of movement if MOUSE_WHEEL is set)
    };
    };
    ULONG RawButtons; // the raw state of the mouse buttons,
    // currently not used by the Win32 subsystem
    LONG LastX; // the signed relative or absolute motion
    // in the X direction
    LONG LastY; // the signed relative or absolute motion
    // in the Y direction
    ULONG ExtraInformation; // device-specific information
    // for the event
    } MOUSE_INPUT_DATA, *PMOUSE_INPUT_DATA


    >건우님 안녕하세요.
    >
    >또 문제에 봉착했습니다 ㅡㅡ;;
    >
    >마우스 필터 드라이버 콜백 함수에서
    >
    >if(InputDataStart->ButtonFlags && 0x0400)
    > KdPrint(("WheelButton==%d \t %x\n", InputDataStart->ButtonData, InputDataStart->ButtonData));
    >
    > // Left Button changed to down.
    > if(InputDataStart->ButtonFlags && 0x0001)
    > KdPrint(("LeftButton==%d \t %x\n", InputDataStart->RawButtons, InputDataStart->RawButtons));
    >
    > // Right Button changed to down.
    > if(InputDataStart->ButtonFlags && 0x0004)
    > KdPrint(("RightButton==%d \t %x\n", InputDataStart->RawButtons, InputDataStart->RawButtons));
    >
    >이렇게 추가한후에 값을 소프트아이스로 값을 검출 하였는데...
    >
    >이상하게 휠값만이 제대로 검출이 되더라구요.
    >
    >그리고 왼쪽버튼과 오른쪽버튼은 아무리 눌러도 0으로 표시되고요..
    >
    >MSDN에서 찾아보니깐 왼쪽버튼과 오른쪽버튼 가운데 버튼 값들은
    >
    >subsystem아랫단에서는 볼수 없다고 나오더라구요 ㅡㅡ;;
    >
    >마우스에서 컴퓨터로 4바이트를 전송하잖아요.
    >
    >그럼 필터에서는 저 4바이트 값을 어떻게 볼수가 있는지요...
    >
    >부탁드립니다(--)(__)(--)
    >
    >

제목 날짜
[TIP] NEXUS(넥서스) 5x 루팅 방법입니다. 2016.01.05
mouclass 접근.. 3 2010.03.13
class callback호출시 에러가 나는데 뭐가 문제인지 모르겠습니다..ㅠㅠ 1 2006.07.22
[질문]드라이버와 응용프로그램 관계에 대하여 3 2004.08.24
드라이버의 로딩순서 바꾸기가 가능한가요. 1 2004.08.17
uC/OS-ii 를 디스켓으로 부팅하려고 하는데요.. 3 2004.08.05
안녕하세요 초보적인 소스 질문 합니다. 1 2004.07.25
rf 에 대한 답변에 감사드리며.. 1 2004.07.18
[질문] OS 부트섹터 강좌의 부트섹터 소스중에서... 3 2004.07.04
이 소스대로 하면 열여야 하는거 아닌가요? 1 2004.06.23
usb 에 read/write 하는것좀 알려주세요. 1 2004.06.22
운영체제에서 "철학자들의 만찬" 알고리즘에 대해.. 1 2004.06.04
필터 드라이버 설치문의.. 1 2004.05.18
메일슬롯 1 2004.04.06
버튼 값 질문이요... 4 2004.02.18
건우님 장치관리자 문의 있습니다. 2 2004.02.17
뒷북일지 모르지만.. bootsect.asm에 버그있네요.. 2 2004.02.12
토글키 만들기 예제를 키 인풋으로 전환하는데 1 2004.01.13
[질문] 다른 OS에서 사용한 HDD를 섹터단위로 Read하는 방법. 1 2003.12.12
print port 제어 1 2003.12.08
드라이브 타입을 알고 싶습니다(A:, C:, F:....) 1 2003.12.03
USB통신 어플리케이션 만들때요.. 1 2003.11.14
WRITE_PORT_UCHAR를 이용한 마우스를 제어 1 2003.11.12
태그 목록
위로