AGB  ·  Datenschutz  ·  Impressum  







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

loadlibrary unter W10

Ein Thema von joacim · begonnen am 13. Dez 2019 · letzter Beitrag vom 19. Dez 2019
Antwort Antwort
Seite 3 von 3     123   
Benutzerbild von jaenicke
jaenicke
Online

Registriert seit: 10. Jun 2003
Ort: Berlin
9.345 Beiträge
 
Delphi 11 Alexandria
 
#21

AW: loadlibrary unter W10

  Alt 16. Dez 2019, 11:02
Es gibt aber immer noch Unklarheiten. Die Funktionen des Treibers verlangen im Aufruf ein Handle. Ich habe
bisher gedacht (und es bei dem Vorläuferprojekt auch so gemacht), das dort das Handle eingetragen werden
muss, dass bei LoadLibrary zurückkommt.
Wie das geht sieht man eigentlich schon in den Parametern der Funktionen. Du hast dort z.B. bei einem Board eine Funktion i_PCI3016_OpenBoardViaIndex, die den Boardindex bekommt und als var-Parameter die Variable mit dem Handle. Dementsprechend ist zu erwarten, dass die Funktion das Handle in eben diese Variable hineinschreibt (sonst müsste es ja kein var-Parameter sein).

Sicher, wenn du da vorher deinen Handle-Wert hineinpackst, wird der einfach überschrieben, deshalb merkst du das ohne es zu debuggen nicht.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
joacim

Registriert seit: 30. Apr 2003
Ort: Immenrode
60 Beiträge
 
Delphi 6 Professional
 
#22

AW: loadlibrary unter W10

  Alt 16. Dez 2019, 13:41
Ich habe hier - nur als Beispiel - zwei Funktionen

Delphi-Quellcode:
function b_ADDIDATA_GetNumberOfDigitalInputs(dw_DeviceHandle : DWord; var w_NumberOfChannels : word) : byte; far; stdcall; external 'ADDIDATA.DLL';
function b_ADDIDATA_Read4DigitalInputs(dw_DeviceHandle : DWord; b_port : byte; var b_portValue : byte) : byte; far; stdcall; external 'ADDIDATA.DLL';
Wie schon geschrieben, wurde im Vorläuferprojekt immer das Handle an die Funktion übergeben.
Die beiden Funktionen erwarten auch hier die Übergabe von dw_DeviceHandle, nicht als var, also nicht als Rückgabewert!

In der Dokumentation steht z.B.
<return value> = b_ADDIDATA_Read4DigitalInputs(DWORD dw_DeviceHandle,
BYTE b_port : byte,
PBYTE pb_portValue)

Ich interpretiere PBYTE als Pointer auf ein Byte, daher VAR im Delphi. dw_DeviceHandle ist aber DWORD also kein VAR,
also auch kein Rückgabewert. Warum ist es völlig gleichgültig, was ich da übergebe? Das Lesen der digitalen Eingänge funktioniert jerdenfalls, auch mit dw_DeviceHandle = 0. Die Antwort kann wahrscheinlich nur der Hersteller geben.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#23

AW: loadlibrary unter W10

  Alt 16. Dez 2019, 14:55
DeviceHandle! Das Handle des Geräts und nicht das Handle der DLL. Die Funktion muss ja wissen von welchem Gerät du die Infos willst.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke
Online

Registriert seit: 10. Jun 2003
Ort: Berlin
9.345 Beiträge
 
Delphi 11 Alexandria
 
#24

AW: loadlibrary unter W10

  Alt 16. Dez 2019, 15:34
Wie schon geschrieben, wurde im Vorläuferprojekt immer das Handle an die Funktion übergeben.
Die beiden Funktionen erwarten auch hier die Übergabe von dw_DeviceHandle, nicht als var, also nicht als Rückgabewert!
Und wie sieht es mit i_ADDIDATA_OpenWin32Driver und i_ADDIDATA_GetCurrentDriverHandle aus?
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
joacim

Registriert seit: 30. Apr 2003
Ort: Immenrode
60 Beiträge
 
Delphi 6 Professional
 
#25

AW: loadlibrary unter W10

  Alt 18. Dez 2019, 05:59
@jaeinicke

Der Aufruf von i_ADDIDATA_OpenWin32Driver liefert als Handle immer Null zurück.
Die Aufrufe der anderen Funktionen, die das Handle benötigen, funktionieren aber,
wenn ich dort diese Null eintrage. Ich hätte für ein Handle eigentlich einen Wert
ungleich Null erwartet

Mit Euren Hilfen und Anregungen habe ich jetzt die wichtigsten Dinge zum Laufen
gebracht, frage mich aber immer noch, warum das Handle Null ist.
  Mit Zitat antworten Zitat
Alt 18. Dez 2019, 06:31     Erstellt von Frühlingsrolle
Dieser Beitrag wurde von Daniel gelöscht. - Grund: Verdacht auf SPAM und den damit verbundenen verschwenderischen Umgang von wertvollen Bits und Bytes
joacim

Registriert seit: 30. Apr 2003
Ort: Immenrode
60 Beiträge
 
Delphi 6 Professional
 
#26

AW: loadlibrary unter W10

  Alt 18. Dez 2019, 10:04
Doku zu i_ADDIDATA_OpenWin32Driver
...
-Output
PDWORD pdw_DriverHandle
Returns the driver handle. This parameter i the first to be called up for each function.

Soweit so klar, trotzdem würde ich da keine Null erwarten.
  Mit Zitat antworten Zitat
Alt 18. Dez 2019, 14:04     Erstellt von Frühlingsrolle
Dieser Beitrag wurde von Daniel gelöscht. - Grund: Verdacht auf SPAM und den damit verbundenen verschwenderischen Umgang von wertvollen Bits und Bytes
joacim

Registriert seit: 30. Apr 2003
Ort: Immenrode
60 Beiträge
 
Delphi 6 Professional
 
#27

AW: loadlibrary unter W10

  Alt 19. Dez 2019, 09:39
hab ich gemacht, kommt aber nur eine große Zahl als Fehlercode, die in keiner Liste steht.
Das ist auch nicht weiter verwunderlich, weil i_ADDIDATA_OpenWin32Driver mit Null
( = kein Fehler) zurückkommt.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   

 

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 06:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz