- 
                Notifications
    
You must be signed in to change notification settings  - Fork 1.7k
 
Add WlanApi module #1697
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
          
     Open
      
      
            eranl
  wants to merge
  2
  commits into
  java-native-access:master
  
    
      
        
          
  
    
      Choose a base branch
      
     
    
      
        
      
      
        
          
          
        
        
          
            
              
              
              
  
           
        
        
          
            
              
              
           
        
       
     
  
        
          
            
          
            
          
        
       
    
      
from
eranl:WlanApi
  
      
      
   
  
    
  
  
  
 
  
      
    base: master
Could not load branches
            
              
  
    Branch not found: {{ refName }}
  
            
                
      Loading
              
            Could not load tags
            
            
              Nothing to show
            
              
  
            
                
      Loading
              
            Are you sure you want to change the base?
            Some commits from the old base branch may be removed from the timeline,
            and old review comments may become outdated.
          
          
      
        
          +288
        
        
          −0
        
        
          
        
      
    
  
  
     Open
                    Add WlanApi module #1697
Changes from all commits
      Commits
    
    
            Show all changes
          
          
            2 commits
          
        
        Select commit
          Hold shift + click to select a range
      
      
    File filter
Filter by extension
Conversations
          Failed to load comments.   
        
        
          
      Loading
        
  Jump to
        
          Jump to file
        
      
      
          Failed to load files.   
        
        
          
      Loading
        
  Diff view
Diff view
There are no files selected for viewing
        
          
          
            288 changes: 288 additions & 0 deletions
          
          288 
        
  contrib/platform/src/com/sun/jna/platform/win32/WlanApi.java
  
  
      
      
   
        
      
      
    
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
              | Original file line number | Diff line number | Diff line change | 
|---|---|---|
| @@ -0,0 +1,288 @@ | ||
| /* Copyright (c) 2010 Daniel Doubrovkine, All Rights Reserved | ||
| * | ||
| * The contents of this file is dual-licensed under 2 | ||
| * alternative Open Source/Free licenses: LGPL 2.1 or later and | ||
| * Apache License 2.0. (starting with JNA version 4.0.0). | ||
| * | ||
| * You can freely decide which license you want to apply to | ||
| * the project. | ||
| * | ||
| * You may obtain a copy of the LGPL License at: | ||
| * | ||
| * http://www.gnu.org/licenses/licenses.html | ||
| * | ||
| * A copy is also included in the downloadable source code package | ||
| * containing JNA, in file "LGPL2.1". | ||
| * | ||
| * You may obtain a copy of the Apache License at: | ||
| * | ||
| * http://www.apache.org/licenses/ | ||
| * | ||
| * A copy is also included in the downloadable source code package | ||
| * containing JNA, in file "AL2.0". | ||
| */ | ||
| package com.sun.jna.platform.win32; | ||
| 
     | 
||
| import com.sun.jna.Library; | ||
| import com.sun.jna.Native; | ||
| import com.sun.jna.Pointer; | ||
| import com.sun.jna.Structure; | ||
| import com.sun.jna.ptr.IntByReference; | ||
| import com.sun.jna.ptr.PointerByReference; | ||
| 
     | 
||
| /** | ||
| * Module Name: | ||
| * wlanapi.h | ||
| * Abstract: | ||
| * Definitions and data structures for wlan auto config client side API. | ||
| * | ||
| * @author Eran Leshem | ||
| */ | ||
| public interface WlanApi extends Library { | ||
| WlanApi INSTANCE = Native.load("wlanapi", WlanApi.class); | ||
| int WLAN_MAX_NAME_LENGTH = 256; | ||
| int DOT11_SSID_MAX_LENGTH = 32; // 32 bytes | ||
| 
     | 
||
| @Structure.FieldOrder({"dwNumberOfItems", "dwIndex", "InterfaceInfo"}) | ||
| class WLAN_INTERFACE_INFO_LIST extends Structure { | ||
| public int dwNumberOfItems; | ||
| public int dwIndex; | ||
| public WLAN_INTERFACE_INFO[] InterfaceInfo = new WLAN_INTERFACE_INFO[1]; | ||
| 
     | 
||
| public WLAN_INTERFACE_INFO_LIST() { | ||
| setAutoSynch(false); | ||
| } | ||
| 
     | 
||
| public WLAN_INTERFACE_INFO_LIST(Pointer p) { | ||
| super(p); | ||
| } | ||
| 
     | 
||
| @Override | ||
| public void read() { | ||
| 
         There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Missing  There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Fixed.  | 
||
| // First element contains array size | ||
| dwNumberOfItems = getPointer().getInt(0); | ||
| if (dwNumberOfItems > 0) { | ||
| InterfaceInfo = (WLAN_INTERFACE_INFO[]) new WLAN_INTERFACE_INFO().toArray(dwNumberOfItems); | ||
| super.read(); | ||
| } else { | ||
| InterfaceInfo = new WLAN_INTERFACE_INFO[0]; | ||
| } | ||
| } | ||
| } | ||
| 
     | 
||
| /** | ||
| * Sruct WLAN_INTERFACE_INFO defines the basic information for an interface. | ||
| */ | ||
| @Structure.FieldOrder({"InterfaceGuid", "strInterfaceDescription", "isState"}) | ||
| class WLAN_INTERFACE_INFO extends Structure { | ||
| public Guid.GUID InterfaceGuid; | ||
| public char[] strInterfaceDescription = new char[WLAN_MAX_NAME_LENGTH]; | ||
| 
     | 
||
| /** | ||
| * See {@link WLAN_INTERFACE_STATE} for possible values | ||
| */ | ||
| public int isState; | ||
| } | ||
| 
     | 
||
| /** | ||
| * Structure WLAN_CONNECTION_ATTRIBUTES defines attributes of a wireless connection. | ||
| */ | ||
| @Structure.FieldOrder({"isState", "wlanConnectionMode", "strProfileName", "wlanAssociationAttributes", | ||
| "wlanSecurityAttributes"}) | ||
| class WLAN_CONNECTION_ATTRIBUTES extends Structure { | ||
| /** | ||
| * See {@link WLAN_INTERFACE_STATE} for possible values | ||
| */ | ||
| public int isState; | ||
| 
     | 
||
| /** | ||
| * See {@link WLAN_CONNECTION_MODE} for possible values | ||
| */ | ||
| public int wlanConnectionMode; | ||
| public char[] strProfileName = new char[WLAN_MAX_NAME_LENGTH]; | ||
| public WLAN_ASSOCIATION_ATTRIBUTES wlanAssociationAttributes; | ||
| public WLAN_SECURITY_ATTRIBUTES wlanSecurityAttributes; | ||
| 
     | 
||
| public WLAN_CONNECTION_ATTRIBUTES(Pointer p) { | ||
| super(p); | ||
| } | ||
| } | ||
| 
     | 
||
| /** | ||
| * The states of the network (interface). | ||
| */ | ||
| interface WLAN_INTERFACE_STATE { | ||
| int wlan_interface_state_not_ready = 0; | ||
| int wlan_interface_state_connected = 1; | ||
| int wlan_interface_state_ad_hoc_network_formed = 2; | ||
| int wlan_interface_state_disconnecting = 3; | ||
| int wlan_interface_state_disconnected = 4; | ||
| int wlan_interface_state_associating = 5; | ||
| int wlan_interface_state_discovering = 6; | ||
| int wlan_interface_state_authenticating = 7; | ||
| } | ||
| 
     | 
||
| interface WLAN_CONNECTION_MODE { | ||
| int wlan_connection_mode_profile = 0; | ||
| int wlan_connection_mode_temporary_profile = 1; | ||
| int wlan_connection_mode_discovery_secure = 2; | ||
| int wlan_connection_mode_discovery_unsecure = 3; | ||
| int wlan_connection_mode_auto = 4; | ||
| int wlan_connection_mode_invalid = 5; | ||
| } | ||
| 
     | 
||
| /** | ||
| * Structure WLAN_ASSOCIATION_ATTRIBUTES defines attributes of a wireless association. | ||
| * The unit for Rx/Tx rate is Kbits/second. | ||
| */ | ||
| @Structure.FieldOrder({"dot11Ssid", "dot11BssType", "dot11Bssid", "dot11PhyType", "uDot11PhyIndex", | ||
| "wlanSignalQuality", "ulRxRate", "ulTxRate"}) | ||
| class WLAN_ASSOCIATION_ATTRIBUTES extends Structure { | ||
| public DOT11_SSID dot11Ssid; | ||
| 
     | 
||
| /** | ||
| * See {@link DOT11_BSS_TYPE} for possible values | ||
| */ | ||
| public int dot11BssType; | ||
| public DOT11_MAC_ADDRESS dot11Bssid; | ||
| 
     | 
||
| /** | ||
| * See {@link DOT11_PHY_TYPE} for possible values | ||
| */ | ||
| public int dot11PhyType; | ||
| public WinDef.ULONG uDot11PhyIndex; | ||
| public WinDef.ULONG wlanSignalQuality; // WLAN_SIGNAL_QUALITY | ||
| public WinDef.ULONG ulRxRate; | ||
| public WinDef.ULONG ulTxRate; | ||
| 
     | 
||
| public WLAN_ASSOCIATION_ATTRIBUTES(Pointer p) { | ||
| super(p); | ||
| } | ||
| } | ||
| 
     | 
||
| interface DOT11_BSS_TYPE { | ||
| int dot11_BSS_type_infrastructure = 1; | ||
| int dot11_BSS_type_independent = 2; | ||
| int dot11_BSS_type_any = 3; | ||
| } | ||
| 
     | 
||
| @Structure.FieldOrder({"uSSIDLength", "ucSSID"}) | ||
| class DOT11_SSID extends Structure { | ||
| public WinDef.ULONG uSSIDLength; | ||
| public byte[] ucSSID = new byte[DOT11_SSID_MAX_LENGTH]; | ||
| } | ||
| 
     | 
||
| @Structure.FieldOrder("ucDot11MacAddress") | ||
| class DOT11_MAC_ADDRESS extends Structure { | ||
| public WinDef.UCHAR[] ucDot11MacAddress = new WinDef.UCHAR[6]; | ||
| } | ||
| 
     | 
||
| interface DOT11_PHY_TYPE { | ||
| int dot11_phy_type_unknown = 0; | ||
| int dot11_phy_type_any = dot11_phy_type_unknown; | ||
| int dot11_phy_type_fhss = 1; | ||
| int dot11_phy_type_dsss = 2; | ||
| int dot11_phy_type_irbaseband = 3; | ||
| int dot11_phy_type_ofdm = 4; | ||
| int dot11_phy_type_hrdsss = 5; | ||
| int dot11_phy_type_erp = 6; | ||
| int dot11_phy_type_ht = 7; | ||
| int dot11_phy_type_IHV_start = 0x80000000; | ||
| int dot11_phy_type_IHV_end = 0xffffffff; | ||
| } | ||
| 
     | 
||
| @Structure.FieldOrder({"bSecurityEnabled", "bOneXEnabled", "dot11AuthAlgorithm", "dot11CipherAlgorithm"}) | ||
| class WLAN_SECURITY_ATTRIBUTES extends Structure { | ||
| public boolean bSecurityEnabled; | ||
| public boolean bOneXEnabled; | ||
| 
     | 
||
| /** | ||
| * See {@link DOT11_AUTH_ALGORITHM} for possible values | ||
| */ | ||
| public int dot11AuthAlgorithm; | ||
| 
     | 
||
| /** | ||
| * See {@link DOT11_CIPHER_ALGORITHM} for possible values | ||
| */ | ||
| public int dot11CipherAlgorithm; | ||
| } | ||
| 
     | 
||
| // DOT11_AUTH_ALGO_LIST | ||
| interface DOT11_AUTH_ALGORITHM { | ||
| int DOT11_AUTH_ALGO_80211_OPEN = 1; | ||
| int DOT11_AUTH_ALGO_80211_SHARED_KEY = 2; | ||
| int DOT11_AUTH_ALGO_WPA = 3; | ||
| int DOT11_AUTH_ALGO_WPA_PSK = 4; | ||
| int DOT11_AUTH_ALGO_WPA_NONE = 5; // used in NatSTA only | ||
| int DOT11_AUTH_ALGO_RSNA = 6; | ||
| int DOT11_AUTH_ALGO_RSNA_PSK = 7; | ||
| int DOT11_AUTH_ALGO_IHV_START = 0x80000000; | ||
| int DOT11_AUTH_ALGO_IHV_END = 0xffffffff; | ||
| } | ||
| 
     | 
||
| // Cipher algorithm Ids (for little endian platform) | ||
| interface DOT11_CIPHER_ALGORITHM { | ||
| int DOT11_CIPHER_ALGO_NONE = 0x00; | ||
| int DOT11_CIPHER_ALGO_WEP40 = 0x01; | ||
| int DOT11_CIPHER_ALGO_TKIP = 0x02; | ||
| int DOT11_CIPHER_ALGO_CCMP = 0x04; | ||
| int DOT11_CIPHER_ALGO_WEP104 = 0x05; | ||
| int DOT11_CIPHER_ALGO_WPA_USE_GROUP = 0x100; | ||
| int DOT11_CIPHER_ALGO_RSN_USE_GROUP = 0x100; | ||
| int DOT11_CIPHER_ALGO_WEP = 0x101; | ||
| int DOT11_CIPHER_ALGO_IHV_START = 0x80000000; | ||
| int DOT11_CIPHER_ALGO_IHV_END = 0xffffffff; | ||
| } | ||
| 
     | 
||
| /** | ||
| * OpCodes for set/query interfaces. | ||
| */ | ||
| interface WLAN_INTF_OPCODE { | ||
| int wlan_intf_opcode_autoconf_start = 0x000000000; | ||
| int wlan_intf_opcode_autoconf_enabled = 1; | ||
| int wlan_intf_opcode_background_scan_enabled = 2; | ||
| int wlan_intf_opcode_media_streaming_mode = 3; | ||
| int wlan_intf_opcode_radio_state = 4; | ||
| int wlan_intf_opcode_bss_type = 5; | ||
| int wlan_intf_opcode_interface_state = 6; | ||
| int wlan_intf_opcode_current_connection = 7; | ||
| int wlan_intf_opcode_channel_number = 8; | ||
| int wlan_intf_opcode_supported_infrastructure_auth_cipher_pairs = 9; | ||
| int wlan_intf_opcode_supported_adhoc_auth_cipher_pairs = 10; | ||
| int wlan_intf_opcode_supported_country_or_region_string_list = 11; | ||
| int wlan_intf_opcode_current_operation_mode = 12; | ||
| int wlan_intf_opcode_supported_safe_mode = 13; | ||
| int wlan_intf_opcode_certified_safe_mode = 14; | ||
| int wlan_intf_opcode_hosted_network_capable = 15; | ||
| int wlan_intf_opcode_autoconf_end = 0x0fffffff; | ||
| int wlan_intf_opcode_msm_start = 0x10000100; | ||
| int wlan_intf_opcode_statistics = 0x10000101; | ||
| int wlan_intf_opcode_rssi = 0x10000102; | ||
| int wlan_intf_opcode_msm_end = 0x1fffffff; | ||
| int wlan_intf_opcode_security_start = 0x20010000; | ||
| int wlan_intf_opcode_security_end = 0x2fffffff; | ||
| int wlan_intf_opcode_ihv_start = 0x30000000; | ||
| int wlan_intf_opcode_ihv_end = 0x3fffffff; | ||
| } | ||
| 
     | 
||
| interface WLAN_OPCODE_VALUE_TYPE { | ||
| int wlan_opcode_value_type_query_only = 0; | ||
| int wlan_opcode_value_type_set_by_group_policy = 1; | ||
| int wlan_opcode_value_type_set_by_user = 2; | ||
| int wlan_opcode_value_type_invalid = 3; | ||
| } | ||
| 
     | 
||
| int WlanOpenHandle(int dwClientVersion, Pointer pReserved, IntByReference pdwNegotiatedVersion, | ||
| WinNT.HANDLEByReference phClientHandle); | ||
| int WlanCloseHandle(WinNT.HANDLE hClientHandle, Pointer pReserved); | ||
| int WlanEnumInterfaces(WinNT.HANDLE hClientHandle, Pointer pReserved, PointerByReference ppInterfaceList); | ||
| 
     | 
||
| /** | ||
| * @param OpCode See {@link WLAN_INTF_OPCODE} for possible values | ||
| * @param pWlanOpcodeValueType See {@link WLAN_OPCODE_VALUE_TYPE} for possible values | ||
| */ | ||
| int WlanQueryInterface(WinNT.HANDLE hClientHandle, Guid.GUID pInterfaceGuid, int OpCode, | ||
| Pointer pReserved, IntByReference pDataSize, PointerByReference ppData, | ||
| IntByReference pWlanOpcodeValueType); | ||
| void WlanFreeMemory(Pointer pMemory); | ||
| } | ||
      
      Oops, something went wrong.
        
    
  
  Add this suggestion to a batch that can be applied as a single commit.
  This suggestion is invalid because no changes were made to the code.
  Suggestions cannot be applied while the pull request is closed.
  Suggestions cannot be applied while viewing a subset of changes.
  Only one suggestion per line can be applied in a batch.
  Add this suggestion to a batch that can be applied as a single commit.
  Applying suggestions on deleted lines is not supported.
  You must change the existing code in this line in order to create a valid suggestion.
  Outdated suggestions cannot be applied.
  This suggestion has been applied or marked resolved.
  Suggestions cannot be applied from pending reviews.
  Suggestions cannot be applied on multi-line comments.
  Suggestions cannot be applied while the pull request is queued to merge.
  Suggestion cannot be applied right now. Please check back later.
  
    
  
    
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The license header is missing (see for example
jna/contrib/platform/src/com/sun/jna/platform/win32/Crypt32.java
Lines 1 to 23 in dc44b98
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added.