Is het mogelijk om een DLL af te tappen? Ik wil een bestaande driver DLL namelijk emuleren, maar heb geen idee of dit kan en zo ja hoe je dat doet.
Verwijderd
Jahoor, je maakt zelf gewoon een dll waaruit je alle functies van de bestaande dll exporteert.
(Dus gewoon dezelfde functienamen met dezelfde argumenten).
Google maar 's even, zodra je weet hoe dll's werken (dus als je bv. ooit zelf 's je eigen app. met plugins gemaakt hebt) zie je dat 't supersimpel is.
(Dus gewoon dezelfde functienamen met dezelfde argumenten).
Google maar 's even, zodra je weet hoe dll's werken (dus als je bv. ooit zelf 's je eigen app. met plugins gemaakt hebt) zie je dat 't supersimpel is.
Ik weet hoe DLL's werken, heb er al meerdere gemaaktVerwijderd schreef op 13 November 2002 @ 15:30:
Jahoor, je maakt zelf gewoon een dll waaruit je alle functies van de bestaande dll exporteert.
(Dus gewoon dezelfde functienamen met dezelfde argumenten).
Google maar 's even, zodra je weet hoe dll's werken (dus als je bv. ooit zelf 's je eigen app. met plugins gemaakt hebt) zie je dat 't supersimpel is.
Het probleem is, en dat is niet helemaal naar voren gekomen in de openingspost, dat de bestaande DLL moet blijven bestaan en draaien.
tis wel een gewone dll en niet een activex/com server?
dan kan je gewoon zoals Led voorsteld het volgende doen:
- hernoem de originele dll
- maak een eigen dll met de originele dll functies en naam
- in de implementatie van jouw dll laad je de originele dll en sluis je alle functies door
dan kan je gewoon zoals Led voorsteld het volgende doen:
- hernoem de originele dll
- maak een eigen dll met de originele dll functies en naam
- in de implementatie van jouw dll laad je de originele dll en sluis je alle functies door
We adore chaos because we like to restore order - M.C. Escher
Verwijderd schreef op 13 november 2002 @ 15:30:
Jahoor, je maakt zelf gewoon een dll waaruit je alle functies van de bestaande dll exporteert.
(Dus gewoon dezelfde functienamen met dezelfde argumenten).
Google maar 's even, zodra je weet hoe dll's werken (dus als je bv. ooit zelf 's je eigen app. met plugins gemaakt hebt) zie je dat 't supersimpel is.
heej Led, jij hier?
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.
Het is een gewone DLL (DLPortIO) die de LPT aansturing onder NT voor z'n rekening neemt.LordLarry schreef op 13 november 2002 @ 15:40:
tis wel een gewone dll en niet een activex/com server?
dan kan je gewoon zoals Led voorsteld het volgende doen:
- hernoem de originele dll
- maak een eigen dll met de originele dll functies en naam
- in de implementatie van jouw dll laad je de originele dll en sluis je alle functies door
Het zou op zich kunnen wat je zegt, maar m'n voorkeur gaat wel uit naar het niet hernoemen van de originele. Als het even kan wil ik daar van af blijven.
Hoe werkt een DLL op de achtergrond eigenlijk, ik bedoel wat gebeurt er als ik een functie aanroep? Als het met messagequeue's werkt, dan zouden de messages afgetapt kunnen worden lijkt me.
Weet je zeker dat het dan geen device driver is?Verwijderd schreef op 13 November 2002 @ 16:03:
[...]
Het is een gewone DLL (DLPortIO) die de LPT aansturing onder NT voor z'n rekening neemt.
Dan kan het nietHet zou op zich kunnen wat je zegt, maar m'n voorkeur gaat wel uit naar het niet hernoemen van de originele. Als het even kan wil ik daar van af blijven.
Het werkt op de achtergrond door de linker die de dll in het geheugen laad (als ie er al niet stond) en die code in je process mapped enz. Dan worden de functies in je code reroute (even simpel gezegt) en ze wijzen nu direct naar de functies in je dll. Das statisch linken. Of als je de dll dynamisch linked kan je via een functie vragen wat de pointer is naar de dll functie met een bepaalde naam. Kortom: nee, niet met messagesHoe werkt een DLL op de achtergrond eigenlijk, ik bedoel wat gebeurt er als ik een functie aanroep? Als het met messagequeue's werkt, dan zouden de messages afgetapt kunnen worden lijkt me.
We adore chaos because we like to restore order - M.C. Escher
Verwijderd
hernoemen is waarschijnlijk wel een vereiste, anders roepen de applicaties gewoon de oude aan, ipv jouw wrapper. En wat is het probleem van hernoemen, als je weet waar je mee bezig bent is er geen risico aan verbonden.Verwijderd schreef op 13 november 2002 @ 16:03:
[...]
Het is een gewone DLL (DLPortIO) die de LPT aansturing onder NT voor z'n rekening neemt.
Het zou op zich kunnen wat je zegt, maar m'n voorkeur gaat wel uit naar het niet hernoemen van de originele. Als het even kan wil ik daar van af blijven.
Hoe werkt een DLL op de achtergrond eigenlijk, ik bedoel wat gebeurt er als ik een functie aanroep? Als het met messagequeue's werkt, dan zouden de messages afgetapt kunnen worden lijkt me.
Aanvulling: bij een DLL link wordt er een .DLL geladen op baiss van naam, tenzij die DLL al in het geheugen zit - dan wordt de geladen versie gebruikt. Het renamen en vervangen van een DLL die al geladen is heeft dus geen effect; daarvoor moet je alle users van die DLL sluiten of eventueel rebooten.
Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein
Verwijderd
Nou hebben ze zich bij microsoft ooit een soortgelijk iets afgevraagd en zij zijn er onderzoek naar gaan doen. Op http://research.microsoft.com/sn/detours/ staat een heel interessant verhaal met daarin hoe dat moet en wat je er mee kan.
Hey bedankt allemaal voor de replies. Ik ga wat dingen proberen en dat van microsoft eens doorlezen. Mocht dat op niks uitlopen, dan ga ik toch voor het hernoemen
Verwijderd
Ik geloof dat er een API call ForceLibary oid is waarmee je een applicatie kan forceren om een bepaalde dll te gebruiken. Ik weet het niet zeker en over het hoe en wat weet ik ook niks, maar misschien dat je er eens naar kan zoeken.
Pagina: 1