Seite 3 von 3

Re: 64 Bit Probleme im Programm

Verfasst: 15.03.2012 12:40
von deichi1
Hallo Falko,

vielen Dank für Deine Ausführung, genau das, was Du in Deinem Post mitteilst versuche ich schon die ganze Zeit klarzustellen. Das Einzige was ich nicht verstehe ist, dass es bei Dir auch nicht unter einem x86 Compilat im 64Bit OS läuft. Siehe weiter oben in der Darstellung meiner Tests;-)

Wie angekündigt habe ich jetzt die wpcap.lib eingebunden und getestet.
Hier stellt sich das gleiche Ergebenis, wie in der oben erwähnten Testreihe dar.

Absolut nur unter der Bedingung OS-64-Bit/PB-x64 bekomme ich einen POLINK-Error zur LIB.
Bei allen anderen Varianten kann ich auf die LIB zugreifen und sehe die Daten der Interfaces..

Nachfolgend der PB-Code

Code: Alles auswählen

IncludePath "z:\pfad\Include"
XIncludeFile "pcap.pb"

Procedure getAllAdapters( List adpt.myAdapters() )
  errorBuffer.s = Space(256)
  *pcap_if_t_ptr.pcap_if_t
  If pcap_findalldevs(@*pcap_if_t_ptr, @errorBuffer) = -1
    MessageBox_(0, errorBuffer, "Error finding adapters...", #MB_OK|#MB_ICONERROR)
    ProcedureReturn 0
  EndIf
  ClearList(adpt())
  ResetList(adpt())
  Repeat 
    AddElement(adpt())
    adpt()\deviceName = PeekS(*pcap_if_t_ptr\szDevName)
    adpt()\deviceDescription = PeekS(*pcap_if_t_ptr\szDescription)
    adpt()\addresses = PeekL(*pcap_if_t_ptr\addressesptr)
    *pcap_if_t_ptr.pcap_if_t = *pcap_if_t_ptr\nextStruct
  Until *pcap_if_t_ptr = 0
  ProcedureReturn ListSize(adpt())
EndProcedure

NewList NICAdapters.myAdapters()
numAdapters = getAllAdapters(NICAdapters())
  
If numAdapters > 0
  
  ResetList(NICAdapters())
  While NextElement(NICAdapters())
    Debug NICAdapters()\deviceName
    Debug NICAdapters()\deviceDescription
    Debug Hex(NICAdapters()\addresses)
    Debug "======================"
    ;AddGadgetItem(myDevSelect, -1, NICAdapters()\deviceDescription)
  Wend
  
EndIf

*der Code ist aus dem Internet und funktioniert.*
Bitte den Pfad für die Includes beachten.

Nachfolgend die LIB und die entsprechenden PB-Includes sowie einige Beispiele Deeem2031.
Er hat in der Vergangenheit die original LIB ins PB eingebunden.

http://www.deeem2031.de/PB/PB-WinPcap.zip

Gruß
deichi1

Re: 64 Bit Probleme im Programm

Verfasst: 15.03.2012 20:32
von Falko
Oh je, da habe ich mich wohl irrtümlich ausgedrückt.
Das mit dem -D funktioniert bei mir in beiden PB-IDEs bzw. Compiler nicht.
Es wird zwar ein Fenster geöffnet und in der Console angezeigt, nur wird der dortige
Inhalt nicht übergeben. Wohl aber, wenn ich mit -i und Interface 1, 2 oder 3 vorgebe
und dann nach Programmstart z.B. den Browser öffne, werden mir die Verbindungsdaten dazu
ausgegeben. Ich vermute mal,
das tshark.exe -D zwar einen Dump in die Console macht, aber dieser Text aus irgendeinem Grund
nicht gelesen werden kann, da tshark sofort beendet wird, so wie es auch in der Hilfe steht.

Gruß,
Falko

Re: 64 Bit Probleme im Programm

Verfasst: 16.03.2012 08:19
von Danilo
deichi1 hat geschrieben:Wie angekündigt habe ich jetzt die wpcap.lib eingebunden und getestet.
Hier stellt sich das gleiche Ergebenis, wie in der oben erwähnten Testreihe dar.

Absolut nur unter der Bedingung OS-64-Bit/PB-x64 bekomme ich einen POLINK-Error zur LIB.
Bei allen anderen Varianten kann ich auf die LIB zugreifen und sehe die Daten der Interfaces..

[...]

Nachfolgend die LIB und die entsprechenden PB-Includes sowie einige Beispiele Deeem2031.
Er hat in der Vergangenheit die original LIB ins PB eingebunden.

http://www.deeem2031.de/PB/PB-WinPcap.zip
Für 64bit mußt Du eine neue Import-Library (wpcap.lib) für die 64bit-Version der DLL erstellen.

Zum Beispiel mit PellesC 64bit:

Code: Alles auswählen

@echo off
@call "D:\CPP\PellesC\x64\Bin\povars64.bat"
@POLIB.exe wpcap.dll /MACHINE:x64 /OUT:wpcap.lib
Mit VisualC++ oder PlatformSDK geht's genauso, dann ist es einfach Lib.exe.

Re: 64 Bit Probleme im Programm

Verfasst: 16.03.2012 14:15
von deichi1
Hallo Danilo,

ich verneige mich vor Dir und vielen Dank.
Du hast mit Deinem Tip genau ins Schwarze getroffen.
Habe zuerst einen Test mit CallFunktionFast() gemacht, der positiv ausfiehl.
Dann habe ich die wpcap.lib zu wpcap_x64.lib gemacht und siehe da, es klappt.
Nun läuft mein Programm auch auf einer 64Bit-Maschine.

Nochmals vielen, vielen Dank.

Gruß
deichi1

Re: 64 Bit Probleme im Programm

Verfasst: 16.03.2012 14:26
von ts-soft
Hätte man es irgendwo Erkennen können, das Du die DLL per ImportLib nutzt, wäre man vielleicht früher
darauf gekommen :mrgreen: