Kako da napišem drajver za igračku-džojstik i da je povežem sa računarom?

Pokrećem samo temu pa će se uključiti akteri… :slight_smile:

1 Like

marko je prisutan :ear:

1 Like

Zdravo, ja upravo radim takav projekat, povezan sa mikrokontrolerom, ali je u suštini nebitno šta je džojstik (virtuelan, android, windows, itd.)
https://www.shackleton.io/
Velika pomoć mi je rad ovog momka, zove se Will Shackleton, i radi pri Fejsbuku. Završio je Computer Sciences na Kembridžu, i lično mi je pokazao par smernica u analizi njegovog rada, jer je prilično obiman da se u ,cugu" pročita i razume :smiley: I tako, ja nemam trenutno pitanja :smile: Sada vidim da se u driver developmentu može svašta učiniti, i to na nivou vrlo bliskom računaru, mislim da bi on bio vrlo interesantan i za moje vršnjake, a kroz ovaj primer sam video da su tutorijali vrlo šturi, zastareli ili praktično nepostojani na internetu, te jedan blog o ovoj temi, kao ovaj trenutni, može predstavljati vrlo značajan, da ne kažem neprocenjiv, repozitorijum za rad sa driverima :smiley:

Stefane hvala ti što si poslao koristan link za temu.

Hajde onda ako bude negde zapelo i budeš imao pitanja vezano za svoj projekat javi se na ovu temu :wink:

Nasao sam VHF (Virtual Hid Framework) koji je MSDN izbacio za Win 10 I sledece generacije sistema, medjutim, nemam link za sample koda, a problem je sto izbacuje STATUS_SUCCESS za VhfReadReportSubmit, a ne registruje promenu (u USB GAME Controllers)

Ćao,

Nisam koristio VHF. Deluje mi da je sveža tehnologija jer je članak koji si postovao star manje od 15 dana. Očekujem da će VHF da dođe kroz Windows Creators update, ako već nije tu? U svakom slučaju pošto sample code-a nema, možeš li da podeliš svoj kod kako bi mi bilo jasnije šta tačno radiš? ili možemo da počnemo od toga kako si inicijalizuješ VHF_CONFIG strukturu?

“Starije” Win10 HID primere možeš naći na github-u, predlažem da počneš od hid mini WDF

pozdrav
Marko

Kod mi je trenutno u jako diskutabilnom stanju, ali sve sto sam pisao jeste bilo po uzoru na Droidpad I jos par manjih projekata. Medjutim, nasao sam ovaj sample (jako tesko se nalazi izuzev ukucavanja imena projekta) https://github.com/ms-iot/samples/tree/develop/HIDInjector , koji sam samo bazicno implementirao I nije mi radio. Mozda treba ispostovati celu procedure kao u sample-u oko postavljanja onih raznih ID-jeva? Nisam stigao da mirne glave razmotrim.

Sto se tice ranijih WDF primera, iskucao sam po uzoru na vHidMini(2) hidmapper projekat uz vlastiti KMDF, ali to mi nije jasno kako se pokrece :confused: Trenutno imam pismeni iz verovatnoce I pripremam se za probni zavrsni iz analize, tako da ne mogu nista od koda da sredim, bas je neuredan xd

Поздрав,

Да ли је неко користио Device Interface у драјверу и тест апликацији?

Узео сам поново да се бавим овом имплементацијом. Сад схватам код који је у примеру написан за драјвер, међутим тест апликација ми јавља линкер проблеме, тачније LNK2019 unresolved external symbol __imp_CM_Get_Device_Interface_List referenced in function main, односно, за сваку коришћену функцију из header датотеке cfgmgr32.h ми јавља исти проблем. Користим Win32 конзолну апликацију и C++. Читао сам и могући проблем може настати када је header компајлиран у C, и тада је решење обухватити extern “C” { #include <cfgmgr32.h> } али сам пробао и даље враћа исти линкер проблем.

Da li imaš ovu #pragma liniju?

#include <Cfgmgr32.h>
#pragma comment(lib, “Cfgmgr32.lib”)

Нисам имао, али јесте то био проблем. Решио сам још следећег дана тај проблем, али сам заборавио да се јавим. Ја сам у project properties > linker > input > additional dependencies уписао и библиотеку $(DDK_LIB_PATH)cfgmgr32.lib
Сад корисничка апликација ради без проблема.

Још увек је проблем сам драјвер, као да vhf.sys не комуницира са драјвером. Поставио сам директиву да је регистрован lower filter drajver, али и даље ништа. Пробаћу нешто данас, па јављам ако успем

Ово (DDK_LIB_PATH) можда није потребно за конзолну апликацију, али навика код драјвера :slight_smile:

Има ли неко искуства са писањем филтер драјвера? Шта може поћи по злу? Сигурно добро прослеђујем податке, а као да је комуникација са vhf.sys мртва

Напокон, пронашао сам срж проблема! Дата технологија ради, али не за све HID уређаје! За тастатуре је исправна, проверио сам и сам, а што се тиче џојстика, није, као и до сад. Мислим да проблем лежи у следећем:

Кад сам данас тестирао за виртуелну тастатуру, приметио сам да се у Device Manager-у појављује тај FDO објекат за тастатуру (стандардно, у секцији keyboards) и да драјвер не допушта да се обрише све док се прво не обрише дати објекат. То сам повезао са следећом напоменом на линку https://docs.microsoft.com/en-us/windows-hardware/drivers/hid/virtual-hid-framework--vhf-

,Note In some scenarios, a HID client might need to identify the source of HID data. For example, a system has a built-in sensor and receives data from a remote sensor of the same type. The system might want to choose one sensor to be more reliable. To differentiate between the two sensors connected to the system, the HID client queries for the container ID of the TLC. In this case, a HID source driver can provide the container ID, which is reported as the container ID of the virtual HID device by VHF".

Ово значи да је у случају тастатуре аутоматски препознао дати FDO објекат, а у случају џојстика или неких других нестандардних HID уређаја није, те игнорише све промене на самом HID уређају које се пошаљу из FDO. Пробаћу да ручно поставим FDO као HID Composite Device, те се надам да ће то довести до потпуне функционалности џојстика. :slight_smile: