OID_802_11_PMKID

This OID is used to query and set the list of WPA2 pre-authentication PMKIDs within the miniport driver's pairwise master key (PMK) cache.

When set, this OID requests the miniport driver to overwrite its PMK cache with the list of PMKIDs contained within the OID data. The device must only accept this list if the number of PMKIDs does not exceed the size of the device's PMK cache. The driver returns the PMK cache size it supports through NoOfPMKIDs when queried with OID_802_11_CAPABILITY. If the number of PMKIDs does exceed the driver's NoOfPMKIDs, the driver must return NDIS_STATUS_INVALID_DATA.

Pre-authentication and PMK caching are applicable only when the miniport driver's authentication mode is set to Ndis802_11AuthModeWPA2. If the miniport driver's authentication mode is not set to Ndis802_11AuthModeWPA2, the driver must return NDIS_STATUS_INVALID_DATA in response to a query or setting of this OID.

The driver uses the PMKID cache during an association or reassociation to an access point. If the BSSID of the access point is found within the PMKID cache, the device must use the corresponding PMKID data for that BSSID within the RSN information element of the association or reassociation request.

The driver can only clear its PMKID cache whenever it make a media disconnect indication. Otherwise, it must change the PMKID cache only when set through this OID.

The data for this OID is specified in an NDIS_802_11_PMKID structure, which is defined as follows:

    typedef struct _NDIS_802_11_PMKID {
         ULONG Length;
         ULONG BSSIDInfoCount;
         BSSID_INFO BSSIDInfo[1];
 
    } NDIS_802_11_PMKID, *PNDIS_802_11_PMKID;
  

The structure includes the following members:

  • Length
    The length of the NDIS_802_11_PMKID structure and BSSIDInfo array in bytes. Length is calculated as follows:

    FIELD_OFFSET(NDIS_802_11_PMKID, BSSIDInfo) +
    (BSSIDInfoCount * sizeof(BSSIDInfo)
    
  • BSSIDInfoCount
    The number of BSSIDInfo structures.

  • BSSIDInfo
    A variable-length array of BSSID/PMKID pairs. Each pair is formatted as a BSSID_INFO structure.

The BSSID_INFO structure is defined as:


typedef struct _BSSID_INFO {         NDIS_802_11_MAC_ADDRESS BSSID;
 NDIS_802_11_PMKID_VALUE
 PMKID; } BSSID_INFO, *PBSSID_INFO;

The members of this structure contain the following information:

  • BSSID
    The BSSID to which the PMKID applies.

  • PMKID
    The PMKID associated with the BSSID.

 

 

Send comments about this topic to Microsoft