AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

fehler in assarbad DLL tutorial

Ein Thema von snook · begonnen am 14. Mai 2011 · letzter Beitrag vom 17. Mai 2011
Antwort Antwort
snook

Registriert seit: 25. Jun 2010
94 Beiträge
 
Delphi 2005 Professional
 
#1

fehler in assarbad DLL tutorial

  Alt 14. Mai 2011, 23:48
ich bin mir nun nicht sicher, ob es schon bemerkt wurde (also nicht böse sein wenn es zu spät kommt). in assarbad tutorial zu DLL's steht im Abschnitt DllMain() Funktion die deklaration der main-proc variable mit stdcall aufrufkonvention. das hat mir jetzt in meinem projekt ordentlich schwierigkeiten bereitet. zumindest in meiner delphi versioni muss dass OHNE jede aufrufkonvention deklariert werden.

das hatte bei meinem projekt zur folge, das spontan bei aufrufen der Dll's eine AV ausgelöst wurde und das programm komplett abgeraucht ist, obwohl ich die Dll normal laden konnte. auch gab es keine warnung über eine falsche aufrufkonvention oder ähnliches und die AV's konnte ich auch nicht ohne weiteres darauf zurückführen, zumal sie unwillkürlich aufgetreten sind.
ich hoffe ich konnte jemandem behilflich sein

Geändert von snook (14. Mai 2011 um 23:53 Uhr)
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#2

AW: fehler in assarbad DLL tutorial

  Alt 15. Mai 2011, 00:00
Was machst du denn in DllMain alles?

Laut Doku von DllMain ist die Aufrufkonvention WINAPI, welche in stdcall aufgelöst wird.
Siehe
http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx

Also musst du darin irgendetwas verbotenes machen, damit es manchmal AVs hagelt.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.381 Beiträge
 
Delphi 12 Athens
 
#3

AW: fehler in assarbad DLL tutorial

  Alt 15. Mai 2011, 00:15
PS: Es kann keine Meldung kommen, wenn man eine falsche Aufrufkonvention nutzt, denn sowas wird nirgendwo geprüft.

Es nallt nur, wenn die übergebenen Parameter falsch übergeben werden, bzw. nicht richtig aufgeräumt werden und das Programm dann z.B. versucht an einer falschen Stelle auf was zuzugreifen, welches woanders liegt.

Und Nein, StdCall ist schon richtig ... also kann ich Dezipaitor nur zustimmen, daß der Fehler ganz bestimmt nicht an dieser Stelle zu finden ist.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
snook

Registriert seit: 25. Jun 2010
94 Beiträge
 
Delphi 2005 Professional
 
#4

AW: fehler in assarbad DLL tutorial

  Alt 15. Mai 2011, 00:29
hmmmmmm das ist wirklich sehr merkwürdig. wie schon gesagt, ich hab es rausgenommen und wild rumprobiert, ich kann keine exception mehr provozieren. übrigens bin ich durch einen delphipraxis post drauf gestoßen

http://www.delphipraxis.net/87426-re..._detach-2.html

edit\\

vielleicht haben wir ja auch aneinander vorbeigeredet. ich meinte die variable in assarbads tutorial, die heisst DLLMain und sollte vom typ TDllProc sein, und der ist in der system unit ohne stdcall deklariert

Geändert von snook (15. Mai 2011 um 00:50 Uhr)
  Mit Zitat antworten Zitat
snook

Registriert seit: 25. Jun 2010
94 Beiträge
 
Delphi 2005 Professional
 
#5

AW: fehler in assarbad DLL tutorial

  Alt 15. Mai 2011, 00:51
Delphi-Quellcode:
type
  TDLLProc = procedure (Reason: Integer);
  // TDLLProcEx provides the reserved param returned by WinNT
  TDLLProcEx = procedure (Reason: Integer; Reserved: Integer);
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#6

AW: fehler in assarbad DLL tutorial

  Alt 15. Mai 2011, 12:28
Delphi-Quellcode:
type
  TDLLProc = procedure (Reason: Integer);
  // TDLLProcEx provides the reserved param returned by WinNT
  TDLLProcEx = procedure (Reason: Integer; Reserved: Integer);
Ja, aber das hat nichts mit der Window API zu tun. Dese Definitionen werden intern vom Delphi Compiler verwendet und sollten daher garnicht benutzt werden.

Zudem heißt der Name nicht DllProc, sondern DllMain! Kein Wunder, dass du AVs bekommst, wenn schon die Deklaration anders ist
Bitte lies dir den MSDN Artikel genau durch:
http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#7

AW: fehler in assarbad DLL tutorial

  Alt 15. Mai 2011, 13:57
In Delphi gibts doch gar kein DllMain. Dort gibt es dochnur DllProc und die wird vom Threadersteller erwähnt wohl ohne stdcall deklariert.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz