Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Hilfe mit der Windows Wlan Api (https://www.delphipraxis.net/164832-hilfe-mit-der-windows-wlan-api.html)

schlagzu 1. Dez 2011 16:36

Hilfe mit der Windows Wlan Api
 
Hallo,

ich habe mich in die Wlan-Api eingearbeitet. Jedoch stehe ich vor 2 Problemen. Ich habe die ndu-Units nach Unicode übersetzte.
1. Problem: Ich bekomme alle WLAN-Netze aufgelistet. Aber wie kriege ich das raus, zu dem eine Verbindung besteht?
2. Problem: Anscheine habe ich einen Fehler beim Übersetzten gemacht:

Dies ist mein Record (soll diese Struktur darstellen: http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx):
Delphi-Quellcode:
 Pndu_WLAN_BSS_ENTRY = ^Tndu_WLAN_BSS_ENTRY;
  Tndu_WLAN_BSS_ENTRY = record
    dot11Ssid: Tndu_DOT11_SSID;
    uPhyId: ulong;
    dot11Bssid: Tndu_DOT11_MAC_ADDRESS;
    dot11BssType: Tndu_DOT11_BSS_TYPE;
    dot11BssPhyType: Tndu_DOT11_PHY_TYPE;
    lRssi:    Longint;
    uLinkQuality: longword;
    bInRegDomain: Boolean;
    usBeaconPeriod: ushort;
    ullTimestamp: ulonglong;
    ullHostTimestamp: ulonglong;
    usCapabilityInformation: ushort;
    ulChCenterFrequency: ulong;
    wlanRateSet: Tndu_WLAN_RATE_SET;
    ulIeOffset: ulong;
    ulIeSize: ulong;
  end;
Denn beim auslesen sind alle Werte bis einschließlich dot11Bssid korrekt. Jedoch die Werte danach nicht mehr.

Könnte mir jemand helfen? (die Unicode übersetzten Units)

MfG schlagzu

PS: ich habe die gleiche Frage auch hier http://www.delphi-forum.de/topic_Hil...pi_107883.html gestellt.

shmia 1. Dez 2011 17:59

AW: Hilfe mit der Windows Wlan Api
 
Bei solchen Datenstrukturen ist es manchmal notwendig das Keyword "Packed" zu benützen,
weil nicht alle Elemente auf 4-Byte-Grenzen ausgerichtet sind.
Delphi-Quellcode:
Pndu_WLAN_BSS_ENTRY = ^Tndu_WLAN_BSS_ENTRY;
Tndu_WLAN_BSS_ENTRY = packed record
  dot11Ssid: Tndu_DOT11_SSID;
  uPhyId: ulong;
  dot11Bssid: Tndu_DOT11_MAC_ADDRESS;
  dot11BssType: Tndu_DOT11_BSS_TYPE;
Nun kann es sein, dass der Record "zu stark gepackt" wird.
Dann hilft es zusätzliche Füllerbyte in den Record zu packen.
Das folgende Beispiel soll nur das Prinzip zeigen, es bedeutet nicht, dass die
Füllbytes an der richtigen Stelle sind.
Delphi-Quellcode:
Pndu_WLAN_BSS_ENTRY = ^Tndu_WLAN_BSS_ENTRY;
Tndu_WLAN_BSS_ENTRY = packed record
  dot11Ssid: Tndu_DOT11_SSID;
  _filler1:array[0..1] of Byte;
  uPhyId: ulong;
  dot11Bssid: Tndu_DOT11_MAC_ADDRESS;
  _filler2:array[0..1] of Byte;
  dot11BssType: Tndu_DOT11_BSS_TYPE;


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:41 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz