PMKID Candidate List Indications
The 802.11 miniport driver can make PMKID candidate list indications to request pairwise master key identifiers (PMKIDs) of BSSIDs that the device can potentially roam to. For more information about pre-authentication, see WPA2 Pre-Authentication.
In a PMKID indication, the StatusBufferparameter of NdisMIndicateStatuspoints to a driver-allocated buffer that contains the following:
NDIS_802_11_STATUS_TYPE StatusType;
NDIS_802_11_PMKID_CANDIDATE_LIST PMKIDCandidateList[1];
When making PMKID candidate indications, the driver must set the StatusType member to Ndis802_11StatusType_PMKID_CandidateList.
The PMKIDCandidateList member is formatted as follows:
typedef struct _NDIS_802_11_PMKID_CANDIDATE_LIST
{
ULONG Version;
ULONG NumCandidates;
PMKID_CANDIDATE CandidateList[1];
} NDIS_802_11_PMKID_CANDIDATE_LIST, *PNDIS_802_11_PMKID_CANDIDATE_LIST;
The members of this structure contain the following information:
Version
The version of the structure. This value is currently set to 1.NumCandidates
The number of entries within the CandidateList array.CandidateList
An array of PMKID candidates.
Each entry in the CandidateList array is formatted as follows:
typedef struct _PMKID_CANDIDATE
{
NDIS_802_11_MAC_ADDRESS BSSID;
DWORD Flags;
} PMKID_CANDIDATE, *PPMKID_CANDIDATE;
The members of the PMKID_CANDIDATE structure contain the following information:
BSSID
The BSSID of the PMKID candidate.Flags
Specifies the attributes of the PMKID candidate:NDIS_802_11_PMKID_CANDIDATE_PREAUTH_ENABLED (0x01)
This flag must be set if this BSSID is capable of supporting pre-authentication as indicated by the Pre-Authentication subfield of the RSN Capabilities field in the RSN IE of the beacon or probe response.If this flag is set, then the 802.1X supplicant will initiate the 802.1X pre-authentication with the specified BSSID.
If this flag is not set, then pre-authentication cannot be performed with that BSSID. However, the 802.1X supplicant can update the driver's PMKID cache by using the PMK from a prior association with the BSSID.
When making PMKID indications, the driver must do the following:
Order the CandidateList array from most preferred to least preferred. For example, the driver can order the entries based on RSSI strength.
Only BSSIDs that are members of the same SSID with which the device is currently associated and authenticated can be included in the CandidateList array.
NumCandidates cannot be set to a value greater than the value of NoOfPMKIDs returned by the driver in response to the query of OID_802_11_CAPABILITY.