IntelliPoint 8.x が Windows 2000で正常に動作しない理由を解析
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が返ってきてしまいます・ω・;
もうちょっと調査が必要なようです
Comments