AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Wenn of object, dann knallts!!!

Offene Frage von "ele"
Ein Thema von cherry · begonnen am 12. Nov 2009 · letzter Beitrag vom 21. Mai 2012
Antwort Antwort
ele

Registriert seit: 18. Feb 2009
129 Beiträge
 
Delphi 2010 Professional
 
#1

AW: Wenn of object, dann knallts!!!

  Alt 21. Mai 2012, 17:59
Hallo,

Entschuldigung wenn ich hier einen alten Thread aufwärme...

Aber ich hatte eben das selbe Problem und ich glaube eine Lösung gefunden zu haben.

Das Problem lag an der Deklaration der Funktion ADsGetObject():

Delphi-Quellcode:
function ADsGetObject(lpszPathName:WideString; const riid:TGUID;
                      out ppObject):HRESULT; safecall; external 'activeds.dll';
Nach langem debuggen und pröbeln habe ich die deklaration abgeändert und siehe da: Keine AV mehr.

Delphi-Quellcode:
function ADsGetObject(lpszPathName:WideString; const riid:TGUID;
                      out ppObject):HRESULT; stdcall; external 'activeds.dll';
stdcall ist das Schlüsselwort.

Ich hoffe es hilft, auch wenn der Threaderzeuger schon längs nicht mehr an diesem Projekt arbeiten sollte...
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#2

AW: Wenn of object, dann knallts!!!

  Alt 21. Mai 2012, 18:25
Mal zurück zur ersten Codeversion: Wie rufst du diese Funktion auf?
Zeig mir die Zeile!

Edit:
Och...
Klar -.-'
Bei Stdcall werden alle Parameter verkehrt herum auf den Stack gepusht, wohingegen bei der anderen Variante Register verwendet werden. Kehrt ADsGetObject zurück und beendet mit Ret X so poppt es wertvolle Register vom Stack, die es nicht darf (per SafeCall Deklaration), jedoch trotzdem tut (weil StdCall). Dadurch kommt es zu Problemen mit der Rücksprungsadresse die vor jeder Unterroutinenaufruf (SubProgramCall) auf den Stack gepusht wird...
Ach ach...
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG

Geändert von Aphton (21. Mai 2012 um 18:30 Uhr)
  Mit Zitat antworten Zitat
ele

Registriert seit: 18. Feb 2009
129 Beiträge
 
Delphi 2010 Professional
 
#3

AW: Wenn of object, dann knallts!!!

  Alt 21. Mai 2012, 19:08
Wenn ich das richtig verstehe, dann ist safecall hauptsächlich für COM wichtig. Für alle anderen Windows-API funktionen ist stdcall zu benutzen.
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 21:00 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