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...