Przerwania w Delphi

0

Czy ktoś wie może jak obsłużyć przerwania w delphi?Próbowałem zdeklarować w const i potem się odwoływać ale nie chciało pójść. Pomożecie? [stuk]

0

W trybie chronionym raczej przerwania nie obsłużysz. Jedynie jako sterownik .vxd

0

Dostępnych jest tylko kilka wybranych przerwań. Gdzieś na forum wypisał je chyba snaj.

0

vxd tak ale na stare windy teraz to raczej poczytac DDK i pisac bedace na czasie sys-e ;)
A te przerwania z ktorych mozna skorzystac to :

Przerwania ktore da sie uzyc we wstawkach (DPL=3) :
3h, 2ah, 2bh, 2ch, 2dh, 2eh
dziwne ze :
1h, 4h
mimo ze maja tez DPL=3 wywoluja Violation (na VC++ u mnie)?!
Inne maja DPL=0 i tylko kod z ring0 ma prawa do wywolania
Nawet 21h ma DPL=3 ale nie znalazlem ktore funkcje da sie
wywolac i czy w ogole

Ale jak sie pod nie podpiac pod NT - tego nie wiem i nie wiem czy jest to wykonalne bez ostrego grzebania sie w Windzie.

0

VXD to też dobry pomysł ale i chodziło bardziej o przerwania takie jak w C++ czyli przerwania w dostępie do pamięci a nie o przerwania do asemblera(choć nie ukrywam że też się przyda).Jak wam coś do głowy przyjdzie to poświęcie chwilkę czsu dla starego wyjadacza :P i soć skrobnijcie;)

0

przerwania w dostępie do pamięci a nie o przerwania do asemblera

:|

Coś tu nie teges. Są 2 rodzaje przerwań - sprzętowe i programowe - nie chce mi się pisać tu definicji, ale chyba mylisz pojęcia. Poszukaj na google jakiegoś opisu.

0

Przerwania w dostępie do pamięci deklarowane są jak zwykłe adresy w pamięci.Nie wiem może faktycznie to co innego ale w książce o tym było tak napisane.W każdym razie chodzi mi aby użyć czegoś takiego w programie (nie ważne jak to nazwiemy-to ma działać a nie sie nazywać ;p ):

//na przykład
0x00FFF

0

Do czegoś takiego można wykorzystać rejestry procesora DR0-DR3.
Ale jak to zrobić - nie wiem, bo nie potrzebowałem tego.

Poczytaj sobie strony z google - oto jedna z nich
http://my.tele2.ee/mtx/i386/chp12-02.htm

Jednak użyć tego można tylko w ring0.

0

Można użyć tego rajestru, ale na pewno jest jakaś prostsza ort!.<ort>przecieŻ</ort> w c++ adresy pamięci są wręcz predefiniowane i zaznaczane osobnym kolorem toteż używaja chyba jakiejś innej metody
na to bo c++ jest językiem wyskokopoziomowym w przciwieństwie do asemblera który jest językiem niskopoziomowym i bez trudu można takie coś obsłużyć.Oczywiście - wstawaka w delphi z asm ale po co?
To tylko opóżnia pracę bo musi się odwoływać a mi chodzi o zwykłe cplusplus'owskie ort! adresów i odwoływanie się do nich.
Pomóżcie(może ktoś z działu c++ będzie wiedział)!!Muszę koniecznie odwołać się do adresu bo inaczej nici z programu! [pomocy]

0

W Pascalu można było 'absolute' wykorzystać. W Delphi jest już ograniczone wyłącznie do zmiennych :(

Ale może tak:

var
  Adres: Pointer = Pointer($12345678);

implementation

procedure TForm1.Button1Click(Sender: TObject);
begin
  asm call Adres end;
end;

A w ogóle to proponuję nie pić na kilka godzin przed zadaniem pytania na forum, skoro nie masz możliwości precyzyjnego formułowania pytań po pijaku ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1