Windows Driver Kit: Network Devices and Protocols
OID_802_11_BSSID_LIST

When queried, the OID_802_11_BSSID_LIST OID requests that the miniport driver return a list containing all of the detected BSSIDs and their attributes. This list contains all the BSSIDs that the device detected during its most recent scan of potential BSSs. The miniport driver must respond to this OID as quickly as possible.

If this OID is queried without a preceding OID_802_11_BSSID_LIST_SCAN set request, and the device is active, the miniport driver must return a list of BSSIDs that are valid to join based on the device's current configuration.

If this OID is queried 6 seconds or longer after OID_802_11_BSSID_LIST_SCAN is set, the list of BSSIDs must also contain all of the BSSIDs found during the most recent network scan.

For more information about the procedures to be followed for network scans, refer to Scanning 802.11 Networks.

For IEEE 802.11a- and IEEE 802.11b-capable NICs, the miniport driver must return a complete list of the IEEE 802.11a and IEEE 802.11b BSSIDs.

The data type for this OID is the NDIS_802_11_BSSID_LIST_EX structure, which is defined as follows:

typedef struct _NDIS_802_11_BSSID_LIST_EX
{
  ULONG  NumberOfItems;
  NDIS_WLAN_BSSID_EX  Bssid[1];
} NDIS_802_11_BSSID_LIST_EX, *PNDIS_802_11_BSSID_LIST_EX;

The members of this structure contain the following information:

NumberOfItems
The number of items contained in the Bssid array. This array must contain at least one item. If there are no BSSIDs detected, NumberOfItems must be set to zero.
Bssid
Specifies an array of NDIS_WLAN_BSSID_EX structures.

The NDIS_WLAN_BSSID_EX structure is defined as follows:

typedef struct _NDIS_WLAN_BSSID_EX
{
  ULONG  Length;
  NDIS_802_11_MAC_ADDRESS  MacAddress;
  UCHAR  Reserved[2];
  NDIS_802_11_SSID  Ssid;
  ULONG  Privacy;
  NDIS_802_11_RSSI  Rssi;
  NDIS_802_11_NETWORK_TYPE  NetworkTypeInUse;
  NDIS_802_11_CONFIGURATION  Configuration;
  NDIS_802_11_NETWORK_INFRASTRUCTURE  InfrastructureMode;
  NDIS_802_11_RATES_EX  SupportedRates;
  ULONG  IELength;
  UCHAR  IEs[1];
} NDIS_WLAN_BSSID_EX, *PNDIS_WLAN_BSSID_EX;

The members of this structure contain the following information:

Length
The length, in bytes, of the NDIS_WLAN_BSSID_EX structure. The structure must be aligned to a 4‑byte address boundary. Therefore, Length must contain a value that is a multiple of 4 bytes. From 0 through 3 bytes of padding can exist after the end of the IEs member.
MacAddress
A media access control (MAC) address. Each access point has a unique MAC address that is the same as the BSSID.
Reserved
Reserved. Do not use. This member maintains the DWORD alignment of the structure.
Ssid
An SSID as defined in the NDIS_802_11_SSID structure. For more information about this structure, see OID_802_11_SSID.
Privacy
Specifies a WEP/WPA/WPA2 encryption requirement. A value of 0 indicates that privacy is disabled. A value of 1 indicates that privacy is enabled.
Rssi
The received signal strength indication (RSSI), in dBm. Typical values range from −10 through −200 dBm.
NetworkTypeInUse
The network type as defined in the NDIS_802_11_NETWORK_TYPE enumeration. For more information about this enumeration, see OID_802_11_NETWORK_TYPE_IN_USE.

For access points or IBSS nodes that are IEEE 802.11g-capable, the driver must set NetworkTypeInUse to Ndis802_11OFDM24. This will also imply that the access point or IBSS node supports Ndis802_11DS.

Configuration
The radio parameter configuration as defined in the NDIS_802_11_CONFIGURATION structure. For more information about this structure, see OID_802_11_CONFIGURATION.
InfrastructureMode
The network mode as defined in the NDIS_802_11_NETWORK_INFRASTRUCTURE enumeration. For more information about this enumeration, see OID_802_11_INFRASTRUCTURE_MODE.
SupportedRates
The set of supported rates that are defined in an NDIS_802_11_RATES_EX array. The array contains a set of 16 bytes (defined as UCHAR). Each byte contains a data rate in units of 0.5 Mbps. Set unused entries, if any, at the end of the array to 0.
IELength
The number of bytes in the IEs array. IELength must not contain any padding. The driver must set this to 0 if there are no elements within the IEs array.
IEs
The information elements (IEs) from beacon or probe response messages. The IEs must be from the last beacon or probe response received from the BSSID. If an IE is available in only one message, the driver must merge the IE with the other IEs found in the last beacon or probe response messages.

The list of information elements within the IEs member must include the following:

  • The three fixed-size IEs (timestamp, beacon interval, and capability information), from the last received beacon or probe response message.

    Note  The list of information elements in the IEs member must start with the fixed-length IEs. The NDIS_802_11_FIXED_IEs structure must be used for the list of fixed-length IEs.

  • All variable-length IEs in the order that they were received in the last received beacon or probe response.
  • Any variable-length IEs that were not in the last received beacon or probe response.

    For example, the TIM IE is not part of a probe response. If a probe response message was the last message received, the TIM information element (IE) from the last beacon message received is added. Any other IEs that were in the beacon message, but not in the probe response, are also added. If the beacon message was the last message received and the SSID is blank, the SSID from the last probe message received is added. Any other variable-length IEs that were in the probe response, but not in the beacon message, are also added.

The NDIS_802_11_FIXED_IEs structure is used to list the fixed-length information elements:

typedef struct _NDIS_802_11_FIXED_IEs
{
  UCHAR  Timestamp[8];
  USHORT  BeaconInterval;
  USHORT  Capabilities;
} NDIS_802_11_FIXED_IEs, *PNDIS_802_11_FIXED_IEs;

For the definition of these members, see section 7.3.1 in the IEEE 802.11‑1999 specification.

The NDIS_802_11_VARIABLE_IEs structure is used to list the variable-length information elements:

typedef struct _NDIS_802_11_VARIABLE_IEs
{
  UCHAR  ElementID;
  UCHAR  Length
  UCHAR  data[1];
} NDIS_802_11_VARIABLE_IEs, *PNDIS_802_11_VARIABLE_IEs;

For the definition of these members, see section 7.3.2 in the IEEE 802.11‑1999 specification.

Note  If the device is associated with a BSSID that is not contained in the list of BSSIDs resulting from a previous scan, the miniport driver must add a BSSID description for the currently associated BSSID to the list of BSSIDs returned through this OID.


Send feedback on this topic
Built on October 01, 2009
Page view tracker