Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



DriverEntry() v BCC32

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: DriverEntry() v BCC32

Autor: Jiri Vitous

9:06:43 06.10.2008

Děkuji za radu,

řešení s ASM modulem vypadá schůdně, půjdu tudy.

S pozdravem

Jiří Vitouš

Citovat příspěvek

 

Re: DriverEntry() v BCC32

Autor: Miloslav Ponkrác __

16:32:33 04.10.2008

Jestli máte v životě málo problémů, a potřebujete více stresu, pokud Vás trápí nadbytek času pro rodinu a potřebujete najít další problémy, pokud vůbec chcete si zavést do života zbytečné problémy, mám jednoduché řešení. Používejte kompilátory od Borlandu. Výsledek je zaručený.

To jen abyste neřekl, já jsem Vás varoval před Borlandem.

A teď k věci - to end a návěští znamená vstupní bod do celého programu. Pokud tam za end není návěští, vstupní bod programu není v DriveEntry, ale v runtime knihovně C, který je úplně jinde. Proto to Vaše řešení přikázat linkeru natvrdo, aby vstupní bod přesenul do DriverRntry je správné řešení. V C nikterak nelze přikázat, kde má program začínat, vždy začne ve funkci main. Pokud chcete změnit vstupní bod v C, je třeba sáhnout po linkeru, nebo připojit k C asm modul, kde vstupní bod definujete.

Miloslav Ponkrác

Citovat příspěvek

 

Re: DriverEntry() v BCC32

Autor: JiriValerian

16:31:58 03.10.2008

[color=#008000]Jiri Vitous Napsal:
-------------------------------------------------------
> Zdravím,
>
> kolegové z C fóra mi neporadili, tak to zkusím u
> vás.
>
> Snažím se napsat triviální ovladač v režimu jádra;
> V assembleru
> funguje parádně, když ho ale napíšu v C tak ne a
> ne fungovat.
> Už jsem přesně lokalizoval problém, ale nevím jak
> ho odstranit:
>
> Zatímco v ASM končí program takto:
>
> pop ebp
> ret 8
> DriverEntry endp
> _TEXT ends
> end DriverEntry
>
> a po přeložení "tasm32 /ml main.asm,main.obj" a
> slinkování "ilink32 -ad -b:0x10000
> main.obj,main.sys" funguje, vygeneruje BCC32.exe s
> parametrem -S soubor končící takto:
>
> pop ebp
> ret 8
> DriverEntry endp
> _TEXT ends
> end
>
> , a ten po přeložení prostě nefunguje. Když takto
> vzniklý .OBJ slinkuji Microsoftím
> linkerem s atributem /ENTRY: DriverEntry, tak
> ovladač chodí OK.
>
> Vypadá to, že mám dvě možnosti:
>
> 1) Donutit BCC32, aby na konci vygeneroval místo
> "end" řetězec "end DriverEntry", jenže nevím jak,
> nebo:
>
> 2) Donutit ilink32, aby chápal DriverEntry jako
> entry point. Parametr /ENTRY: je ale v dokumentaci
> uveden v seznamu nepodporovaných parametrů.
>
> Poradíte mi?
>
> Díky
> Jirka[/color]

Vývojem ovladačů se nezabývám. Lidi co znám a co se tím zabývají
k tomu používají nástroje od MS tj. ne [b]bcc32[/b] ani [b]ilink32[/b].

Jediné co tedy mohu doporučuji ve vztahu k tomuto velmi specifickému
dotazu je zkusit se zeptat viz odkaz.

http://www.borland.cz/company/contact/index.html

Citovat příspěvek

 

DriverEntry() v BCC32

Autor: Jiri Vitous

9:12:22 03.10.2008

Zdravím,

kolegové z C fóra mi neporadili, tak to zkusím u vás.

Snažím se napsat triviální ovladač v režimu jádra; V assembleru
funguje parádně, když ho ale napíšu v C tak ne a ne fungovat.
Už jsem přesně lokalizoval problém, ale nevím jak ho odstranit:

Zatímco v ASM končí program takto:

pop ebp
ret 8
DriverEntry endp
_TEXT ends
end DriverEntry

a po přeložení "tasm32 /ml main.asm,main.obj" a slinkování "ilink32 -ad -b:0x10000 main.obj,main.sys" funguje, vygeneruje BCC32.exe s parametrem -S soubor končící takto:

pop ebp
ret 8
DriverEntry endp
_TEXT ends
end

, a ten po přeložení prostě nefunguje. Když takto vzniklý .OBJ slinkuji Microsoftím
linkerem s atributem /ENTRY: DriverEntry, tak ovladač chodí OK.

Vypadá to, že mám dvě možnosti:

1) Donutit BCC32, aby na konci vygeneroval místo "end" řetězec "end DriverEntry", jenže nevím jak, nebo:

2) Donutit ilink32, aby chápal DriverEntry jako entry point. Parametr /ENTRY: je ale v dokumentaci uveden v seznamu nepodporovaných parametrů.

Poradíte mi?

Díky
Jirka

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: