В драйвере Mouse joystick создается виртуальный контроллер VID_145E&PID_01FE. Мне очень нужно понять как он создается. Помогите, пож, разобраться
WinDDK\3790.1830\src\wdm\hid\hidgame Возможно оригинальные DDK исходники модифицированы. Исходники из DDK в аттаче.
В суть я не вдавался. Просто сопоставил то, что увидел в дизасме с исходником и дал Вам исходник вот и всё.
Four-F, так этот пример из ddk у меня есть, но по-моему никаких виртуальных контроллеров в нем не создаётся. это просто пример драйвера джойстика, а к джойстикам мой драйвер никакого отношения как бы иметь не будет. Мне просто нужно узнать как создаётся VID_145E&PID_01FE
Вы запостили бинарь... я тупо залил его в дизасм и увидел, что что-то подобное есть в DDK. Пошукал и нашёл в старом DKK 3790.1830, в новых этих исходнико нет. Я и подумал, что с исходником Вам наверное будет проще. Такова была моя мотивация. Исходник из DDK взят за основу этого драйвера. Разбирать по бинарю кто, как и чего там создаёт вряд ли кто-нибудь станет. У всех семья, работа, пиво, футбол...
Four-F, а что же мне тогда делать? Здесь никто ничего не знает о создании виртуальных устройств и информации об этом в инете тоже нет
Ну бинарь же у Вас есть. Тяжело и мучительно разбирайте как он устроен. Можете посмотреть toaster из DDK. Там тоже всё виртуальное.
WinDDK\7600.16385.1\src\general\toaster\wdm http://msdn.microsoft.com/en-us/library/bb758855.aspx http://msdn.microsoft.com/en-us/library/ff558716(VS.85).aspx
Llirik Если для устройства то сдесь обычный инф файл нужен .. ОСь сама загрузит дров на это устроство .. Code (Text): [Joystick.AddReg] HKLM,%KEY_OEM%\VID_045E&PID_01FE,OEMName,,%Joystick% HKLM,%KEY_OEM%\VID_045E&PID_01FE,OEMData,1, 0, 0, 0, 0, 2, 0, 0, 0 HKLM,%KEY_OEM%\VID_045E&PID_01FE,OEMHardwareID,,"GamePort\VID_045E&PID_01FE" Или вы ходите виртуализировать появления устройства? то и есть посылать свои VID_045E&PID_01FE и говорить что якобы устройство появилось?
Вот именно! Но на VID_045E&PID_01FE должен висеть не джойстик, а мышь. И естественно я его переименную, например на VID_045E&PID_01FF
А может jmouse.sys в иду загрузите ? DriverEntry C7 41 74 58 0F 01 00 mov dword ptr [ecx+74h], offset _HGM_InternalIoctl@8 ; HGM_InternalIoctl(x,x) C7 81 A4 00 00 00 76+ mov dword ptr [ecx+0A4h], offset _HGM_PnP@8 ; HGM_PnP(x,x) C7 81 90 00 00 00 C8+ mov dword ptr [ecx+90h], offset _HGM_Power@8 ; HGM_Power(x,x) C7 41 34 2E 27 01 00 mov dword ptr [ecx+34h], offset _HGM_Unload@4 ; HGM_Unload(x) C7 40 04 1E 26 01 00 mov dword ptr [eax+4], offset _HGM_AddDevice@8 ; HGM_AddDevice(x,x) 89 4D F0 mov [ebp+var_10], ecx C7 45 F8 D8 02 00 00 mov [ebp+var_8], 2D8h 88 5D FC mov [ebp+var_4], bl E8 F4 ED FF FF call _HidRegisterMinidriver@4 ; HidRegisterMinidriver(x) _HGM_AddDevice@8 proc near loc_1271D: ; CODE XREF: HGM_AddDevice(x,x)+9Ej E8 FE DB FF FF call _LCODE_HGM_InstallHook 8B 5D F8 mov ebx, [ebp+var_8] _HGM_InternalIoctl@8 proc near loc_10F85: ; CODE XREF: HGM_InternalIoctl(x,x)+22j 8B 5B 0C mov ebx, [ebx+0Ch] 81 EB 03 00 0B 00 sub ebx, 0B0003h 74 37 jz short loc_10FC7 83 EB 04 sub ebx, 4 74 27 jz short loc_10FBC 83 EB 04 sub ebx, 4 74 17 jz short loc_10FB1 83 EB 1C sub ebx, 1Ch 74 07 jz short loc_10FA6 BF BB 00 00 C0 mov edi, 0C00000BBh EB 2C jmp short loc_10FD2 loc_10FB1: 56 push esi FF 75 08 push [ebp+arg_0] E8 4A 00 00 00 call _HGM_ReadReport@8 ; HGM_ReadReport(x,x) EB 14 jmp short loc_10FD0 HGM_ReadReport call _HGM_UpdateLatestPollData@4 call _HGM_Game2HID@8 call _HGM_Mouse2HID@8 Думаю идея понятна ..
П.С _LTEXT:00010320 _LCODE_HGM_InstallHook proc near ; CODE XREF: HGM_AddDevice(x,x):loc_1271Dp _LTEXT:00010320 83 3D 60 1D 01 00 00 cmp ds:Real_Hook, 0 _LTEXT:00010327 75 18 jnz short loc_10341 _LTEXT:00010329 B8 08 00 0C 00 mov eax, 0C0008h _LTEXT:0001032E BE 78 03 01 00 mov esi, offset HGM_HookProc _LTEXT:00010333 CD 20 90 00 01 00 VMMCall Hook_Device_Service _LTEXT:00010339 72 06 jb short loc_10341 _LTEXT:0001033B B8 00 00 00 00 mov eax, 0 _LTEXT:00010340 C3 retn _LTEXT:00010341 _LTEXT:00010341 loc_10341: _LTEXT:00010341 _LTEXT:00010341 B8 FF FF FF FF mov eax, 0FFFFFFFFh _LTEXT:00010346 C3 retn _LTEXT:00010346 _LCODE_HGM_InstallHook endp
Llirik Тогда можно и не честно ... Ну возьми иду и продизасмь ... посленния дажет демо круто его подняла ...
Ты глупости говоришь. Зачем драйверу создавать виртуальную железку. С железками драйвера работают, чтобы система про это как можно меньше знала. Там задачка проще : выброшена вся обработка аппаратного джойстика и в Винду шлют то, что шлет реальная железка, точнее ее драйвер. Ты до сих пор не ответил кто инициатор событий твоей виртуальной мыши - кто ее двигает и как кликает. Конкретизируй задачу, а иначе так ничего и не будешь понимать. Собрался хитрый драйвер писать, а про драйвера мало знаешь. Драйвер клавиатуры не показатель - там все просто и универсально.
valterg, а почему же тогда при загрузке jmouse.sys появляется новое HID-игровое устройство? Моим инициатором событий будет клава