vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Re: Adresse einer Funktion 
Autor: Cool Tour
Datum: 27.10.07 10:06

Hi,

das stimmt, weil es sich bei diesen Funktionen um exportierte Funktionen handelt und die führt die DLL namentlich mit. Dafür gibt es extra Abteilungungen innerhalb des PE-Image in der die Funktionen mit Namen und Ordinals aufgeführt sind. Daneben existiert noch die realokable Table, die die Einsprungaddressen relativ zur Speicheraddresse des Image definiert. Die Art und Weise wie das PE-Format diese Namen speichert ist etwas zu umfangreich um hier abgehandelt zu werden. Dazu aber den Tipp: Suche einen Download über den Resource Hacker. In der Help ist eine ausführliche Dokumentation über das PE-Format. Nichtexportierte Funktionen der DLL oder Exe werden vom Compiler vollständig in Labels aufgelöst und existieren allenfalls noch in einer namenlosen Jumptable.

Über die WinAPI kommt man an die Addressen dieser Funktionen heran, wenn man

a) die DLL in den Speicher lädt. Das geschieht mit LoadLibrary oder LoadLibraryEx (der Unterschied ist nur die File-Such-Strategie von Windows). Es ist ein weit verbreiteter Irrtum, dass nur DLL's exportierte Funktionen mit sich führen. Es gibt Exe's, die ebenfalls öffentliche Funktionen verwenden; etwa um gewisse Schnittstellen offen zu legen.
b) die Funktion mit GetProcAddress namentlich aufruft.

GetProcAddress liefert dann den Funktionspointer ohne die Funktion aufzurufen.

Man kann das nicht mit VB vergleichen, weil VB stets einen COM-Server erstellt. Innerhalb der Komponente sind die Funktionen bekannt, sofern sie Public definiert sind und die Komponente die Funktionen namentlich mit Paramliste brav in einer beschreibenden TypeLib abspeichert. IdR findet man diese Typelib als Resource innerhalb der Komponenten oder manchmal als separate Datei.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Adresse einer Funktion1.055chucky12.10.07 13:57
Re: Adresse einer Funktion547+++MaRuSo+++26.10.07 18:53
Re: Adresse einer Funktion562Cool Tour26.10.07 19:13
Re: Adresse einer Funktion573chucky26.10.07 23:25
Re: Adresse einer Funktion593Cool Tour27.10.07 10:06

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel