Toon posts:

[c, windows] Interrup afvangen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik moet onder Windows NT een interrupt afvangen en daarna het syteem down gooien. Nou dat laatste is niet zo'n probleem maar het afvangen van een interrupt is blijkbaar een heel ander verhaal dan onder dos.

Ik heb na veel moeite de windows DDK aan de praat gekregen, want deze heb ik volgens mij nodig.

Nu vraag ik mij af hoe dit precies moet en of ik ergens goede documentatie kan vinden want tot nu toe heb ik niet veel kunnen vinden.

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Als ik het niet verkeerd heb zal je een Device Driver moeten schrijven. Windows laat 'gewone' applicaties geen interrupts afvangen. Weet je wel zeker dat je dit wilt? Tis namelijk geen kattepis.

We adore chaos because we like to restore order - M.C. Escher


Verwijderd

Topicstarter
Ja dat het moeilijk is was ik al achter, en ja ik kom er niet onderuit. Het gaat erom dat als een accu leeg begint te raken dat ik windows een shutdown moet geven, dat signal krijg ik via een interrupt binnen.

  • PiepPiep
  • Registratie: Maart 2002
  • Laatst online: 08-06 11:02
Is er niet een message die er wordt gegeven?
Dus niet iets van VM_BATTERYALMOSTDEAD ofzo.
Hoe dat verder moet weet ik niet want ik ben nog een beetje in dos blijven hangen ;)

486DX2-50 16MB ECC RAM 4x 500MB Drive array 1.44MB FDD MS-Dos 6.22


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

WM_POWERBROADCAST

check de power management reference in de platform SDK
(deze vond ik dus met 15 seconden zoeken :{)

[ Voor 24% gewijzigd door .oisyn op 24-03-2003 13:36 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 14-08 12:38

Crazy D

I think we should take a look.

Kijk in de SDK op MSDN bij Power Management. WM_POWERBROADCAST is de windows message die ermee te maken heeft, en via de wParam van je WindowProc callback kun je nog wat meer te weten komen. (even snel gekeken in m'n lokale MSDN en het ziet er bruikbaar uit).

Google is sneller dan m'n lokale MSDN library... :P

[ Voor 11% gewijzigd door Crazy D op 24-03-2003 13:38 ]

Exact expert nodig?


Verwijderd

Topicstarter
Het gaat niet om een laptop of zo het gaat of specifieke hardware dat werkt allemaal net iets anders ben ik bang maar voor de zekerheid zal ik wel kijken of het mogelijk is

Verwijderd

Windows werkt niet met interrupts, windows maakt gebruik van API-calls (ongeveer hetzelfde)... Hoewel win95 en win98 nog wel gedeeltelijk gebruik maakte van interrupts doet NT het helemaal niet meer.. (tenimste windows staat het niet meer toe dat andere programma's het gebruiken, alles moet via de windows API's lopen)

Wil je echter onder win95 of win98 een interrupt omleiden is dit wel mogelijk ring0 access te krijgen en vervolgens de interrupts om te leiden....

Voor win2000, winXP en winNT heb ik nog niet echt iets gevonden... (ben er al een tijdje naar op zoek)

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 14-08 12:38

Crazy D

I think we should take a look.

Verwijderd schreef op 24 March 2003 @ 13:48:
Het gaat niet om een laptop of zo het gaat of specifieke hardware dat werkt allemaal net iets anders ben ik bang maar voor de zekerheid zal ik wel kijken of het mogelijk is
Ik zou zeggen probeer het eens. Power management = power management, en als er een accu is die op kan raken, zou dat op die manier "bekend" gemaakt moeten worden in Windows. Lijkt me :)

Exact expert nodig?


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

wiseman met interrupt bedoelt de TS waarschijnlijk gewoon interrupt requests (IRQ's), en aangezien de pc hardware nog altijd gewoon met IRQ's werkt, werkt windows ook met IRQ's

Dat je als programmeur gebruik kan maken van API calls die onder windows niet via een interrupt lopen en via DOS wel heeft daar weinig mee te maken (hoewel het nog steeds de vraag is of kernel functies ook niet via een interrupt lopen, omdat je dan kan 'springen' naar code waar je een hogere access level voor nodig hebt. De enige andere mogelijkheid hiervoor is een sprong door een call gate. Ik weet niet hoe het in windows zit, maar in linux gebeurt dit volgens mij nog altijd via interrupts)

[ Voor 3% gewijzigd door .oisyn op 24-03-2003 17:30 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • PiepPiep
  • Registratie: Maart 2002
  • Laatst online: 08-06 11:02
Ik weet niet erg veel van windows programmeren moet ik eerlijk zeggen, maar ik heb een keer gezien hoe een virus onder win9x ring 0 kon krijgen met interrupts.
In assembler was het dus gewoon lidt (load interrupt discriptor table)
Hierna schrijf je wat bytes voor de interrupt die je wilt hebben in deze table.
Dan doe je de interrupt en zit je in ring 0.
Als je zoiets zou willen hebben, dus niet echt door m$ ondersteunde manieren, zou ik als ik jou was eens op virussen zoeken op internet.

486DX2-50 16MB ECC RAM 4x 500MB Drive array 1.44MB FDD MS-Dos 6.22

Pagina: 1