Aktuelle Zeit: 23.10.2018 09:41

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 17 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: [Win]NetworkAdapterInterface
BeitragVerfasst: 19.10.2009 21:31 
Offline
Benutzeravatar

Registriert: 10.09.2004 09:59
Moin,

es gibt ein paar Ansätze in den Boards die WinAPI GetAdaptersInfo() zu benutzen, um erweiterte Infos der integrierten Netzwerkadapter zu bekommen.
Aber irgendwie waren die alle etwas unpraktisch und auch nicht immer fehlerfrei.
Also habe ich mich daran gesetzt und das ganze als Interface umgesetzt.
Man kann quasi alle Informationen der API benutzen ausser das WINS-Zeugs, weil ich dafür keine Verwendung habe.

Ausserdem gibt es zwei interessante Zusatzfunktionen, wegen den ich das ganze überhaupt erst begonnen habe.
AddIPAddress() und DeleteIPAddress().

Der (Un)Sinn hinter dem ganzen war folgendes Szenario:

Wir haben im Geschäft ein paar Monteure, die mit PCs... nun nicht wirklich aufgewachsen sind.
Mittlerweile müssen aber die meisten unserer Anlagen über Netzwerkkabel bedient werden.

Nachdem ich eine geschlagene halbe Stunde erklärt hatte, wie man die IP seiner Netzwerkkarte in den Subnetzbereich der
jeweiligen Anlage umbiegen kann, dachte ich, das muss doch einfacher gehn...
Also hab ich jetzt ein kleines Programm gebastelt, mit dem man auf Knopfdruck die IP (temporär) anpassen kann.

O.k., genug gelabert, hier der Code:
Code:
;/--------------------------
;|
;| NetworkAdapterInterface.pbi
;| V1.01 (22.10.2009)
;| ©HeX0R 2009
;|
;| for PB 4.x
;|
;| Add comments for yourself...
;/--------------------------
#MAX_ADAPTER_NAME_LENGTH        = 256
#MAX_ADAPTER_DESCRIPTION_LENGTH = 128
#MAX_ADAPTER_ADDRESS_LENGTH     = 8

#MIB_IF_TYPE_OTHER     =  1
#MIB_IF_TYPE_ETHERNET  =  6
#MIB_IF_TYPE_TOKENRING =  9
#MIB_IF_TYPE_FDDI      = 15
#MIB_IF_TYPE_PPP       = 23
#MIB_IF_TYPE_LOOPBACK  = 24
#MIB_IF_TYPE_SLIP      = 28
#IF_TYPE_ATM           = 37
#IF_TYPE_IEEE80211     = 71
#IF_TYPE_TUNNEL        = 131
#IF_TYPE_IEEE1394      = 144

Enumeration
   #MIB_IF_OPER_STATUS_NON_OPERATIONAL
   #MIB_IF_OPER_STATUS_UNREACHABLE
   #MIB_IF_OPER_STATUS_DISCONNECTED
   #MIB_IF_OPER_STATUS_CONNECTING
   #MIB_IF_OPER_STATUS_CONNECTED
   #MIB_IF_OPER_STATUS_OPERATIONAL
EndEnumeration

#MIB_IF_ADMIN_STATUS_UP      = 1
#MIB_IF_ADMIN_STATUS_DOWN    = 2
#MIB_IF_ADMIN_STATUS_TESTING = 3

Structure IP_ADDR_STRING
   *Next
   IpAddress.b[16]
   IpMask.b[16]
   Context.i
EndStructure

Structure IP_ADAPTER_INFO
   *Next
   ComboIndex.l
   AdapterName.b[#MAX_ADAPTER_NAME_LENGTH + 4]
   Description.b[#MAX_ADAPTER_DESCRIPTION_LENGTH + 4]
   AddressLength.l
   Address.b[#MAX_ADAPTER_ADDRESS_LENGTH]
   Index.l
   Type.l
   DhcpEnabled.i
   *CurrentIpAddress.IP_ADDR_STRING
   IpAddressList.IP_ADDR_STRING
   GatewayList.IP_ADDR_STRING
   DhcpServer.IP_ADDR_STRING
   HaveWins.i
   PrimaryWinsServer.IP_ADDR_STRING
   SecondaryWinsServer.IP_ADDR_STRING
   LeaseObtained.i
   LeaseExpires.i
EndStructure

Structure _ST_IF_ADAPINFO_
   VTable.i
   *pAdapterInfo.IP_ADAPTER_INFO
   NumOfAdapters.l
   LastError.l
EndStructure

Interface _NETWORKADAPTERS_
   CountAdapters()
   CountIPAddresses(Num)
   GetName.s(Num)
   GetDescription.s(Num)
   GetMACAddress.s(Num)
   GetIPAddress.s(Num, Index  = 0)
   GetSubnetMask.s(Num, Index = 0)
   GetGateway.s(Num, Index    = 0)
   GetDHCPServer.s(Num)
   GetType(Num)
   GetIndex(Num)
   UsesDHCP(Num)
   DHCPObtained(Num)
   DHCPExpires(Num)
   AddIPAddress(Num, Address, SubnetMask = $FFFFFF)
   DeleteIPAddress(Context)
   Refresh()
   Release()
EndInterface

Procedure IFNA_JumpToAdapter(*THIS._ST_IF_ADAPINFO_, Num)
   ;Internal Procedure...
   Protected i, *pAdapter.IP_ADAPTER_INFO
   
   *pAdapter = *THIS\pAdapterInfo
   If Num > 0
      For i = 1 To Num
         *pAdapter = *pAdapter\Next
         If *pAdapter = 0
            Break
         EndIf
      Next i
   EndIf

   ProcedureReturn *pAdapter
EndProcedure

Procedure IFNA_CountAdapters(*THIS._ST_IF_ADAPINFO_)
   ;/-----------
   ;| Returns how many Adapters this computer has
   ;/-----------
   ProcedureReturn *THIS\NumOfAdapters
EndProcedure

Procedure.s IFNA_GetName(*THIS._ST_IF_ADAPINFO_, Num)
   ;/------------
   ;| Get Name of Adapter Num
   ;| (This is mostly a GUID)
   ;/------------
   Protected Result.s
   Protected *pAdapter.IP_ADAPTER_INFO

   If Num >= 0 And Num < *THIS\NumOfAdapters
      *pAdapter = IFNA_JumpToAdapter(*THIS, Num)
      If *pAdapter
         Result = PeekS(*pAdapter + OffsetOf(IP_ADAPTER_INFO\AdapterName), SizeOf(IP_ADAPTER_INFO\AdapterName), #PB_Ascii)
      EndIf
   EndIf

   ProcedureReturn Result
EndProcedure

Procedure.s IFNA_GetDescription(*THIS._ST_IF_ADAPINFO_, Num)
   ;/-----------
   ;| Get Description of Adapter Num
   ;| (Description is the readable name)
   ;/-----------
   Protected Result.s
   Protected *pAdapter.IP_ADAPTER_INFO

   If Num >= 0 And Num < *THIS\NumOfAdapters
      *pAdapter = IFNA_JumpToAdapter(*THIS, Num)
      If *pAdapter
         Result = PeekS(*pAdapter + OffsetOf(IP_ADAPTER_INFO\Description), SizeOf(IP_ADAPTER_INFO\AdapterName), #PB_Ascii)
      EndIf
   EndIf

   ProcedureReturn Result
EndProcedure

Procedure.s IFNA_GetMACAddress(*THIS._ST_IF_ADAPINFO_, Num)
   ;/----------
   ;| Get MAC-Address of Adapter Num
   ;/----------
   Protected Result.s, i
   Protected *pAdapter.IP_ADAPTER_INFO

   If Num >= 0 And Num < *THIS\NumOfAdapters
      *pAdapter = IFNA_JumpToAdapter(*THIS, Num)
      If *pAdapter
         Result    = ""
         For i = 0 To *pAdapter\AddressLength - 1
            CompilerIf #PB_Compiler_Version < 431
            Result + RSet(Hex(*pAdapter\Address[i] & $FF), 2, "0") + "-"
            CompilerElse
            Result + RSet(Hex(*pAdapter\Address[i], #PB_Byte), 2, "0") + "-"
            CompilerEndIf
         Next i
         Result = Left(Result, Len(Result) - 1)
      EndIf
   EndIf

   ProcedureReturn Result
EndProcedure

Procedure IFNA_CountIPAddresses(*THIS._ST_IF_ADAPINFO_, Num)
   ;/----------
   ;| Count the IP Addresses of Adapter Num
   ;/----------
   Protected Result
   Protected *pAdapter.IP_ADAPTER_INFO, *nextip.IP_ADDR_STRING

   If Num >= 0 And Num < *THIS\NumOfAdapters
      *pAdapter = IFNA_JumpToAdapter(*THIS, Num)
      If *pAdapter
         *nextip = *pAdapter\IpAddressList
         Repeat
            Result + 1
            If *nextip\Next = 0
               Break
            Else
               *nextip = *nextip\Next
            EndIf
         ForEver
      EndIf
   EndIf

   ProcedureReturn Result
EndProcedure

Procedure IFNA_UsesDHCP(*THIS._ST_IF_ADAPINFO_, Num)
   ;/---------
   ;| Returns #True, when Adapter uses DHCP
   ;/---------
   Protected Result
   Protected *pAdapter.IP_ADAPTER_INFO

   If Num >= 0 And Num < *THIS\NumOfAdapters
      *pAdapter = IFNA_JumpToAdapter(*THIS, Num)
      If *pAdapter
         Result = *pAdapter\DhcpEnabled
      EndIf
   EndIf

   ProcedureReturn Result
EndProcedure

Procedure IFNA_DHCPObtained(*THIS._ST_IF_ADAPINFO_, Num)
   ;/---------
   ;| Datestamp, when DHCP has been obtained
   ;/---------
   Protected Result
   Protected *pAdapter.IP_ADAPTER_INFO

   If Num >= 0 And Num < *THIS\NumOfAdapters
      *pAdapter = IFNA_JumpToAdapter(*THIS, Num)
      If *pAdapter
         Result = *pAdapter\LeaseObtained
      EndIf
   EndIf

   ProcedureReturn Result
EndProcedure

Procedure IFNA_DHCPExpires(*THIS._ST_IF_ADAPINFO_, Num)
   ;/---------
   ;| Datestamp, when DHCP will expire
   ;/---------
   Protected Result
   Protected *pAdapter.IP_ADAPTER_INFO

   If Num >= 0 And Num < *THIS\NumOfAdapters
      *pAdapter = IFNA_JumpToAdapter(*THIS, Num)
      If *pAdapter
         Result = *pAdapter\LeaseExpires
      EndIf
   EndIf

   ProcedureReturn Result
EndProcedure

Procedure.s IFNA_GetIPAddress(*THIS._ST_IF_ADAPINFO_, Num, Index = 0)
   ;/----------
   ;| Get IP Addresses of this Adapter.
   ;| There can be more then one, thats why there is
   ;| the parameter Index.
   ;| You can check out how many IPs this Adapter has
   ;| when calling CountIPAdresses()
   ;/----------
   Protected Result.s, i
   Protected *pAdapter.IP_ADAPTER_INFO, *nextip.IP_ADDR_STRING

   If Num >= 0 And Num < *THIS\NumOfAdapters
      *pAdapter = IFNA_JumpToAdapter(*THIS, Num)
      If *pAdapter
         *nextip   = *pAdapter\IpAddressList
         For i = 1 To Index
            If *nextip\Next
               *nextip = *nextip\Next
            Else
               *nextip = 0
               Break
            EndIf
         Next i
         If *nextip
            Result = PeekS(*nextip + OffsetOf(IP_ADDR_STRING\IpAddress), SizeOf(IP_ADDR_STRING\IpAddress), #PB_Ascii)
         EndIf
      EndIf
   EndIf

   ProcedureReturn Result
EndProcedure

Procedure.s IFNA_GetSubnetMask(*THIS._ST_IF_ADAPINFO_, Num, Index = 0)
   ;/----------
   ;| Get SubnetMask for this Adapter-IP
   ;| There can be more then one, thats why there is
   ;| the parameter Index.
   ;| You can check out how many IPs this Adapter has
   ;| when calling CountIPAdresses()
   ;/----------
   Protected Result.s, i
   Protected *pAdapter.IP_ADAPTER_INFO, *nextip.IP_ADDR_STRING

   If Num >= 0 And Num < *THIS\NumOfAdapters
      *pAdapter = IFNA_JumpToAdapter(*THIS, Num)
      If *pAdapter
         *nextip   = *pAdapter\IpAddressList
         For i = 1 To Index
            If *nextip\Next
               *nextip = *nextip\Next
            Else
               *nextip = 0
               Break
            EndIf
         Next i
         If *nextip
            Result = PeekS(*nextip + OffsetOf(IP_ADDR_STRING\IpMask), SizeOf(IP_ADDR_STRING\IpMask), #PB_Ascii)
         EndIf
      EndIf
   EndIf

   ProcedureReturn Result
EndProcedure

Procedure.s IFNA_GetGateway(*THIS._ST_IF_ADAPINFO_, Num, Index = 0)
   ;/-----------
   ;| Get Gateway IP for this Adapter (if any)
   ;/-----------
   Protected Result.s, i
   Protected *pAdapter.IP_ADAPTER_INFO, *nextip.IP_ADDR_STRING

   If Num >= 0 And Num < *THIS\NumOfAdapters
      *pAdapter = IFNA_JumpToAdapter(*THIS, Num)
      If *pAdapter
         *nextip   = *pAdapter\GatewayList
         For i = 1 To Index
            If *nextip\Next
               *nextip = *nextip\Next
            Else
               *nextip = 0
               Break
            EndIf
         Next i
         If *nextip
            Result = PeekS(*nextip + OffsetOf(IP_ADDR_STRING\IpAddress), SizeOf(IP_ADDR_STRING\IpAddress), #PB_Ascii)
         EndIf
      EndIf
   EndIf

   ProcedureReturn Result
EndProcedure

Procedure.s IFNA_GetDHCPServer(*THIS._ST_IF_ADAPINFO_, Num)
   ;/------------
   ;| Get IP of DHCP-Server
   ;| Value of "255.255.255.255" means there is
   ;| still a connection attempt running, or it is unreachable
   ;/------------
   Protected Result.s
   Protected *pAdapter.IP_ADAPTER_INFO, *nextip.IP_ADDR_STRING

   If Num >= 0 And Num < *THIS\NumOfAdapters
      *pAdapter = IFNA_JumpToAdapter(*THIS, Num)
      If *pAdapter
         *nextip   = *pAdapter\DhcpServer
         Result    = PeekS(*nextip + OffsetOf(IP_ADDR_STRING\IpAddress), SizeOf(IP_ADDR_STRING\IpAddress), #PB_Ascii)
      EndIf
   EndIf

   ProcedureReturn Result
EndProcedure

Procedure IFNA_GetType(*THIS._ST_IF_ADAPINFO_, Num)
   ;/----------
   ;| Returns Type of Adapter.
   ;| Possible values are:
   ;| #MIB_IF_TYPE_OTHER
  ;| #MIB_IF_TYPE_ETHERNET
  ;| #MIB_IF_TYPE_TOKENRING
  ;| #MIB_IF_TYPE_FDDI
  ;| #MIB_IF_TYPE_PPP
  ;| #MIB_IF_TYPE_LOOPBACK
  ;| #MIB_IF_TYPE_SLIP
  ;/----------
   Protected Result
   Protected *pAdapter.IP_ADAPTER_INFO

   If Num >= 0 And Num < *THIS\NumOfAdapters
      *pAdapter = IFNA_JumpToAdapter(*THIS, Num)
      If *pAdapter
         Result = *pAdapter\Type
      EndIf
   EndIf

   ProcedureReturn Result
EndProcedure


Procedure IFNA_GetIndex(*THIS._ST_IF_ADAPINFO_, Num)
   ;/----------
   ;| Internal Index of Adapters.
   ;| Can change whenever Adapters are added or removed
   ;/----------
   Protected Result
   Protected *pAdapter.IP_ADAPTER_INFO

   If Num >= 0 And Num < *THIS\NumOfAdapters
      *pAdapter = IFNA_JumpToAdapter(*THIS, Num)
      If *pAdapter
         Result    = *pAdapter\Index
      EndIf
   EndIf

   ProcedureReturn Result
EndProcedure

Procedure IFNA_AddIPAddress(*THIS._ST_IF_ADAPINFO_, Num, Address, SubnetMask = $FFFFFF)
   ;/----------
   ;| Will try to add another [temporary] IP to the Adapter Num.
   ;| This only will succeed, when the cable is allready connected.
   ;|
   ;| The Result of this function has to be used as
   ;| parameter for DeleteIPAddress
   ;/----------
   Protected Context, Index, Instance

   If Num >= 0 And Num < *THIS\NumOfAdapters
      Index           = IFNA_GetIndex(*THIS, Num)
      *THIS\LastError = AddIPAddress_(Address, SubnetMask, Index, @Context, @Instance)
   EndIf

   ProcedureReturn Context
EndProcedure

Procedure IFNA_DeleteIPAddress(*THIS._ST_IF_ADAPINFO_, Context)
   ;/----------
   ;| Delete the above set IP Address
   ;|
   ;| Returns #NO_ERROR on success
   ;/----------
   Protected Result

   *THIS\LastError = DeleteIPAddress_(Context)
   ProcedureReturn *THIS\LastError
EndProcedure

Procedure IFNA_Refresh(*THIS._ST_IF_ADAPINFO_)
   ;/----------
   ;| Refresh all Adapter-Data
   ;/----------
   Protected ulOutBufLen, Result
   
   If *THIS\pAdapterInfo
      FreeMemory(*THIS\pAdapterInfo)
   EndIf
   
   *THIS\pAdapterInfo = AllocateMemory(SizeOf(IP_ADAPTER_INFO))
   ulOutBufLen        = SizeOf(IP_ADAPTER_INFO);

   Result = GetAdaptersInfo_(*THIS\pAdapterInfo, @ulOutBufLen)
   If Result = #ERROR_BUFFER_OVERFLOW
      *THIS\pAdapterInfo = ReAllocateMemory(*THIS\pAdapterInfo, ulOutBufLen)
      Result             = GetAdaptersInfo_(*THIS\pAdapterInfo, @ulOutBufLen)
   EndIf
   *THIS\NumOfAdapters = 0
   If Result = #NO_ERROR
      While IFNA_JumpToAdapter(*THIS, *THIS\NumOfAdapters)
         *THIS\NumOfAdapters + 1
      Wend
   EndIf
   
   ProcedureReturn Result
EndProcedure

Procedure IFNA_Release(*THIS._ST_IF_ADAPINFO_)
   ;/----------
   ;| Will release the Interface and all of its used Memory.
   ;|
   ;| !!ATTENTION!!
   ;| Your Pointer to the Interface will be invalid after
   ;| calling Release()!
   ;| So it should only be used at end of program.
   ;/----------
   If *THIS\pAdapterInfo
      FreeMemory(*THIS\pAdapterInfo)
   EndIf
   FreeMemory(*THIS)
EndProcedure

Procedure CreateNetworkAdapterInterface()
   ;/----------
   ;| The Interface creating procedure
   ;/----------
   Protected *THIS._ST_IF_ADAPINFO_

   If OSVersion() < #PB_OS_Windows_2000
      ProcedureReturn #False
   EndIf
   
   *THIS         = AllocateMemory(SizeOf(_ST_IF_ADAPINFO_))
   *THIS\VTable  = ?_VT_IFNA_DATA_
   If *THIS = 0
      ProcedureReturn #False
   EndIf

   If IFNA_Refresh(*THIS) <> #NO_ERROR
      FreeMemory(*THIS\pAdapterInfo)
      FreeMemory(*THIS)
      *THIS = 0
   EndIf

   ProcedureReturn *THIS
EndProcedure


DataSection
   _VT_IFNA_DATA_:
   Data.i @IFNA_CountAdapters()
   Data.i @IFNA_CountIPAddresses()
   Data.i @IFNA_GetName()
   Data.i @IFNA_GetDescription()
   Data.i @IFNA_GetMACAddress()
   Data.i @IFNA_GetIPAddress()
   Data.i @IFNA_GetSubnetMask()
   Data.i @IFNA_GetGateway()
   Data.i @IFNA_GetDHCPServer()
   Data.i @IFNA_GetType()
   Data.i @IFNA_GetIndex()
   Data.i @IFNA_UsesDHCP()
   Data.i @IFNA_DHCPObtained()
   Data.i @IFNA_DHCPExpires()
   Data.i @IFNA_AddIPAddress()
   Data.i @IFNA_DeleteIPAddress()
   Data.i @IFNA_Refresh()
   Data.i @IFNA_Release()
EndDataSection


und ein Beispiel:
Code:
XIncludeFile "NetworkAdapterInterface.pbi"

Procedure.s TypeToString(Type)
   Protected Result.s

   Select Type
      Case #MIB_IF_TYPE_OTHER     : Result = "other type of network interface"
      Case #MIB_IF_TYPE_ETHERNET  : Result = "Ethernet network interface"
      Case #MIB_IF_TYPE_TOKENRING : Result = "token ring network interface"
      Case #MIB_IF_TYPE_FDDI      : Result = "FDDI"
      Case #MIB_IF_TYPE_PPP       : Result = "PPP network interface"
      Case #MIB_IF_TYPE_LOOPBACK  : Result = "software loopback network interface"
      Case #MIB_IF_TYPE_SLIP      : Result = "Slip"
      Case #IF_TYPE_ATM           : Result = "ATM network interface"
      Case #IF_TYPE_IEEE80211     : Result = "IEEE 802.11 wireless network interface"
      Case #IF_TYPE_TUNNEL        : Result = "tunnel type encapsulation network interface"
      Case #IF_TYPE_IEEE1394      : Result = "IEEE 1394 (Firewire) high performance serial bus network interface"
   EndSelect

   ProcedureReturn Result
EndProcedure

Procedure main()
   Protected i, j, k
   Protected NetAd._NETWORKADAPTERS_

   NetAd = CreateNetworkAdapterInterface()
   If NetAd = 0
      Debug "Error!"
      End
   EndIf

   For i = 0 To NetAd\CountAdapters() - 1
      j = NetAd\CountIPAddresses(i)
      Debug "Number " + Str(i + 1)
      Debug "--------"
      Debug "Type: " + TypeToString(NetAd\GetType(i))
      Debug "Name: " + NetAd\GetName(i)
      Debug "Desc: " + NetAd\GetDescription(i)
      Debug "MAC : " + NetAd\GetMACAddress(i)
      Debug "IPs : " + Str(j)
      For k = 0 To j - 1
         Debug "IP#" + Str(k + 1) + ": " + NetAd\GetIPAddress(i, k)
         Debug "Subnet#" + Str(k + 1) + ": " + NetAd\GetSubnetMask(i, k)
      Next k
      Debug "Gateway: " + NetAd\GetGateway(i)
      If NetAd\UsesDHCP(i)
         Debug "uses DHCP!"
         Debug "DHCP Server: " + NetAd\GetDHCPServer(i)
         Debug "DHCP obtained: " + FormatDate("%dd.%mm.%yyyy %hh:%ii:%ss", NetAd\DHCPObtained(i))
         Debug "DHCP expires: "  + FormatDate("%dd.%mm.%yyyy %hh:%ii:%ss", NetAd\DHCPExpires(i))
      EndIf
      Debug ""
   Next i

   NetAd\Release()
EndProcedure

main()

_________________
Link tot?
Ändere h3x0r.ath.cx in hex0rs.coderbu.de und alles wird gut.


Zuletzt geändert von HeX0R am 26.09.2010 21:22, insgesamt 5-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: [Win]NetworkAdapterInterface
BeitragVerfasst: 19.10.2009 22:09 
Offline
Benutzeravatar

Registriert: 08.09.2004 00:57
Wohnort: Berlin
:allright:
HeX0R hat geschrieben:
Eigentlich sollte die Struktur richtig sein, aber vielleicht kann das mal einer mit einem 64Bit OS testen.
Knackpunkte sind die uint Type, DhcpEnabled und AddressLength.

Ich hab die als Integer gesetzt, fände es aber ziemlich seltsam, wenn dafür 8 Bytes verplempert werden würden.

Egal ob DhcpEnabled oder AddressLength Integer oder Long, Ungültiger Speicherzugriff Zeile 28
Code:
For i = 0 To NetAd\CountAdapters() - 1

Also nur im x64 Modus.

Gruß
Thomas


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: [Win]NetworkAdapterInterface
BeitragVerfasst: 19.10.2009 22:41 
Offline
Benutzeravatar

Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte
Das Feld "VTable" in "_ST_IF_ADAPINFO_" muss Integer sein. Allerdings gibt's danach einen IMA in Zeile 190.

_________________
Windows 10 Pro, 64-Bit / Outtakes | Derek


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: [Win]NetworkAdapterInterface
BeitragVerfasst: 19.10.2009 23:49 
Offline
Benutzeravatar

Registriert: 10.09.2004 09:59
O.k., das Integer von VTable stimmt, das hab ich wohl vergeigt.
Ändert man das, sollte Thomas' Fehler schon mal weg sein.

Gibts den IMA auch, wenn du mit den uint - Werten spielst?
Das sieht nämlich durchaus so aus, dass die Länge da vor IpAddressList irgendwo nicht stimmt.

(Ich ändere das oben mal noch nicht, bis wir den IMA vielleicht auch entfernt haben)

_________________
Link tot?
Ändere h3x0r.ath.cx in hex0rs.coderbu.de und alles wird gut.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: [Win]NetworkAdapterInterface
BeitragVerfasst: 19.10.2009 23:56 
Offline
Benutzeravatar

Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte
HeX0R hat geschrieben:
Ändert man das, sollte Thomas' Fehler schon mal weg sein.

Nicht sollte, er ist definitiv weg ;)

HeX0R hat geschrieben:
Gibts den IMA auch, wenn du mit den uint - Werten spielst?

Ich bin mir ziemlich sicher das es an den API Strukturen liegt. Diese müssen wohl auf 64bit byte-alinged werden.
Keine Ahnung wie das geht. Frag' freak, der hat das auch für CHOOSECOLOR und andere gemacht.

_________________
Windows 10 Pro, 64-Bit / Outtakes | Derek


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: [Win32]NetworkAdapterInterface
BeitragVerfasst: 20.10.2009 00:03 
Offline
Benutzeravatar

Registriert: 10.09.2004 09:59
Nun gut, bis das geklärt ist, hab ich mal den Titel angepasst und auch VTable verbessert.
Jetzt also erst mal nur für Win32.

_________________
Link tot?
Ändere h3x0r.ath.cx in hex0rs.coderbu.de und alles wird gut.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: [Win32]NetworkAdapterInterface
BeitragVerfasst: 20.10.2009 16:42 
Offline
Benutzeravatar

Registriert: 28.07.2005 12:39
UINT ist auch unter 64bit nur 4 Byte gross. Also muss es heissen
Code:
 AddressLength.l


usw...

_________________
Suche


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: [Win]NetworkAdapterInterface
BeitragVerfasst: 20.10.2009 20:42 
Offline
Benutzeravatar

Registriert: 10.09.2004 09:59
Danke edel!

(Hätte aber eigentlich schon erwartet, dass das nochmal jemand ausprobiert, nachdem der offensichtliche Fehler mit VTable beseitigt war...)

Habs oben berichtigt.

_________________
Link tot?
Ändere h3x0r.ath.cx in hex0rs.coderbu.de und alles wird gut.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: [Win]NetworkAdapterInterface
BeitragVerfasst: 20.10.2009 20:46 
Offline
Benutzeravatar

Registriert: 08.09.2004 00:57
Wohnort: Berlin
:allright:
funktioniert jetzt! (bin leider selber noch nicht dazu gekommen, den Fehler zu suchen)

Gruß
Thomas


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: [Win]NetworkAdapterInterface
BeitragVerfasst: 20.10.2009 21:07 
Offline
Benutzeravatar

Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte
Yes, it würgs nau!

Zitat:
Number 1
--------
Type: Ethernet
Name: {A6EF4651-FE22-49FE-AF4E-E7DFD2A9B2C3}
Desc: NVIDIA nForce 10/100/1000 Mbps Ethernet #3
MAC : 00-22-68-68-55-73
IPs : 1
IP#1:
Subnet#1:
Gateway:
uses DHCP!
DHCP Server:
DHCP obtained: 01.01.1970 00:00:00
DHCP expires: 01.01.1970 00:00:00

Number 2
--------
Type: Ethernet
Name: {76B275D1-9934-4CDE-B2D1-E0150028D98E}
Desc: VirtualBox Host-Only Ethernet Adapter
MAC : 08-00-27-00-E0-FC
IPs : 1
IP#1:
Subnet#1: 0
Gateway:
uses DHCP!
DHCP Server:
DHCP obtained: 01.01.1970 00:00:00
DHCP expires: 01.01.1970 00:00:00

Number 3
--------
Type:
Name: {530B0DBA-F116-43E9-96A7-616C195919A6}
Desc: 108Mbps Wireless Network USB Dongle
MAC : 00-14-6C-37-B4-09
IPs : 1
IP#1:
Subnet#1:
Gateway:
uses DHCP!
DHCP Server:
DHCP obtained: 01.01.1970 00:00:00
DHCP expires: 01.01.1970 00:00:00

_________________
Windows 10 Pro, 64-Bit / Outtakes | Derek


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 17 Beiträge ]  Gehe zu Seite 1, 2  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: Exabot [Bot] und 6 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye