Einzelnen Beitrag anzeigen

TomyN

Registriert seit: 8. Nov 2006
Ort: Bayreuth
163 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: Access Violation - Interface win 32 - win 64

  Alt 16. Apr 2021, 18:43
Hi,

Aktuell verhält sich das ganze nicht konsistent und es ist zuviel drum rum. Da werde ich die nächsten Tage mal ein simples Progrämmchen machen und mich weiter reinwühlen.
Aktuell ist es so:

Code:
Function TA4APrivate.InitInterface(const asioInterface: IASIO): boolean;
var dl: dWord;

begin
  iAp:= nil; //Just for safety
  result:= Assigned(asioInterface);
  if result then begin
    result:= ActiveX.Succeeded(asioInterface.QueryInterface(
                          A4APrivateDeclaration.IID_IA4APRIVATE, iAP));
    result:= result And InterfaceOk;
    if result then begin
      dl:= iAP.iA4APrivateGetVersion;
      myVersionString:= IntToHex(hiWord(dl), 4) + '.' +
                          IntToHex(loWord(dl), 4);
      MessageBox(0, pChar(myVersionString), 'Info', mb_ok);
    end;
  end;
end;
Läuft soweit gut, die Messagebox zeigt auch die richtige Version an, aber sobald ich OK klicke, kommt der Fehler wieder. Die CPU Ansicht zeigt vier Fragezeichen .
Den Aufruf habe ich inzwischen soweit reduziert:
Code:
procedure TASIOIO.InitA4APrivate;
begin
  if (Assigned(iA4AP)) then begin
    //Just check for the A4A Private Interface
    iA4AP.InitInterface(treiber.Driver);
  end;
end;
Für win64 compiliert läuft alles wie es soll. Ich vermute ein Speicherzugriffsproblem, d.h. es wird nur Speicher für 32Bit reserviert, aber für 64Bit freigegeben. Hab aber keine Ahnung, was man da machen kann.

Ich berichte weiter...
Thomas Neumann
Meine Projekte
www.satlive.audio
www.levelcheck.de

Geändert von TomyN (16. Apr 2021 um 18:49 Uhr)
  Mit Zitat antworten Zitat