windows - Skrive enhedsdriver?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg spekulerer på, om jeg forstår rigtigt ...


Sig, hvis jeg vil styre, hvordan min mus arbejder, dvs. Venstre knap åben vindue, Højre knap sende tastetryk 'A' osv.


Men jeg taler ikke om at skrive noget som følger i en ansøgning:


void MouseDown(xxxxEventArgs e, sender object)
{

}


Jeg vil helt kontrollere hvordan enheden fungerer, så skal jeg skrive en driver til det? Fra hvad jeg lærer i forsamlingen før, kontrollerer en enhed, jeg skal vide deres port for at kommunikere med enheden. Men sig, hvis jeg køber en Logitech-mus, er det muligt at skrive en musedriver selv til at bruge den?


Fordi jeg så et projekt, at de køber en usb-webkamera fra butikken, og de kunne styre internettet, kom til at rotere, modtage billedet fra webkameraet, spekulerer jeg på, om det er fordi webkameraet har API, der har givet dem?


Tak på forhånd.

Bedste reference


Hvis du vil styre enheden i sin helhed, så skal du skrive en enhedsdriver. Det er en ikke-triviel opgave, og du bør læse om det. Der er en vejledning om den her og der en bog til Windows driver udvikling her. [2]


Hvis du vil skrive enhedsdrivere, skal du være meget velbevandret med C og/eller C ++.

Andre referencer 1


Du behøver ikke at skrive en enhedsdriver til det, du forsøger at gøre. Enhedsdriveren har intet andet end i databladet på enhedsadressen til registre, hvor den kan læse, skrive, gøre IOMMU osv. Eller nogle andre ting. du skal bruge er en slags hacking program programmering del af den ting, du forsøger at opnå.


Fordi enhedsdriverens kode kun læser data fra enheden og skriver tilbage, er det programmet, der er bekymret for det. Selvom enheden driverprogrammerer giver en metode (funktion) til applikationsprogrammereren, så de kan skrive deres ansøgning og påberåbe sig disse metoder .I dit tilfælde skal du bare forstå, hvordan applikationskoden taler til enhedsdriveren.
Hvis du vil skrive en enhedsdriver, skal du tjekke dette
http://www.freesoftwaremagazine.com/articles/drivers\_linux?page=0\%2C0[4]