IntelliPoint 8.x が Windows 2000で正常に動作しない理由を解析

im
Intellipoint 8.0 や 8.2 を Windows 2000に入れてみたところ、マイクロソフト製のマウスを認識してくれません
というわけで調査開始


Download Microsoft IntelliPoint 8.0 Mouse Software 32bit from Official Microsoft Download Center
Download: Microsoft IntelliPoint 8.2 Mouse Software for Windows - 32 bit - Microsoft Download Center

調べてみたところ、ipcplbtn.dll の処理内で Intelli Point version 7.0との処理に大きな違いがあることが分かりました。

追加されているインポート関数

GetDesktopWindow
GetMonitorInfoW
GetRawInputData
GetRawInputDeviceInfoW
GetRawInputDeviceList
GetShellWindow
MonitorFromWindow
RegisterRawInputDevices
SendDlgItemMessageW
SetForegroundWindow
WindowFromPoint

USER32.dll

CM_Get_Device_ID_Size
CM_Get_Device_IDW
CM_Get_Parent
CM_Locate_DevNodeW
SetupDiCreateDeviceInfoList
SetupDiDeleteDeviceInterfaceData
SetupDiDestroyDeviceInfoList
SetupDiEnumDeviceInfo
SetupDiGetClassDevsW
SetupDiGetDeviceInstanceIdW
SetupDiGetDeviceInterfaceDetailW
SetupDiGetDeviceRegistryPropertyW
SetupDiOpenDeviceInterfaceW

setupapi.dll

HidD_GetHidGuid

HID.DLL

デバイス一覧をRawInput 関数を使って取得しようとしているようですね

 L0312FBA3:
          mov    ecx,[ebp+08h]
          push    ecx
          call    SUB_L03142450 <-
          add    esp,00000004h
          mov    [ebp-14h],ax
          mov    edx,[ebp+08h]
          push    edx

本来ここで マウスデバイスのベンダーIDが返ってくるのですが、 Windows 2000だと 0が返ってきてしまいます・ω・;

もうちょっと調査が必要なようです



おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です