OID_802_11_CAPABILITY
This OID is used to query the miniport driver for its supported wireless network authentication and encryption capabilities.
Only miniport drivers that support WPA2 functionality can support this OID. When queried, the driver must indicate that it supports both WPA2:AES and WPA-PSK2:AES in order to be considered WPA2-capable by the operating system.
Drivers that only support WPA must return NDIS_STATUS_NOT_SUPPORTED when this OID is queried.
In response to a query of this OID, the miniport driver returns an NDIS_802_11_CAPABILITY structure, which is defined as follows:
typedef struct _NDIS_802_11_CAPABILITY {
ULONG Length;
ULONG Version;
ULONG NoOfPMKIDs;
ULONG NoOfAuthEncryptPairsSupported;
NDIS_802_11_AUTHENTICATION_ENCRYPTION AuthenticationEncryptionSupported[1];
} NDIS_802_11_CAPABILITY, *PNDIS_802_11_CAPABILITY;
The structure includes the following members:
Length
The length, in bytes, of the NDIS_802_11_CAPABILITY structure. Length is calculated as follows:FIELD_OFFSET(NDIS_802_11_CAPABILITY, AuthenticationEncryptionSupported) + (NoOfPMKIDs * sizeof(NDIS_802_11_AUTHENTICATION_ENCRYPTION))
Version
The version number of this OID. For the WPA2 update, the miniport driver must set the version number to 2.NoOfPMKIDs
The maximum number of PMKIDs that the miniport driver supports. If the driver supports PMKID caching, this value must be no less than 3 and no more than 16. The driver must set this to 0 if it does not support PMKID caching.NoOfAuthEncryptPairsSupported
The number of entries in the AuthenticationEncryptionSupported array. The driver must not set this to 0. The driver must have at least one entry in the AuthenticationEncryptionSupported array to show support for 802.11 Open System authentication with no encryption.AuthenticationEncryptionSupported
Specifies the various authentication and encryption combinations that the miniport driver supports.
The NDIS_802_11_AUTHENTICATION_ENCRYPTION structure is defined as follows:
typedef struct _NDIS_802_11_AUTHENTICATION_ENCRYPTION {
NDIS_802_11_AUTHENTICATION_MODE AuthModeSupported;
NDIS_802_11_ENCRYPTION_STATUS EncryptStatusSupported;
} NDIS_802_11_AUTHENTICATION_ENCRYPTION, *PNDIS_802_11_AUTHENTICATION_ENCRYPTION;
The members of this structure contain the following information:
AuthModeSupported
Specifies the authentication modes that the miniport driver supports. The allowable values for AuthModeSupported are the same as the authentication mode values defined for OID_802_11_AUTHENTICATION_MODE.EncryptStatusSupported
Specifies the encryption status values that the miniport driver supports. EncryptStatusSupported can contain any or all of the following values:Ndis802_11EncryptionDisabled
Ndis802_11Encryption1Enabled
Ndis802_11Encryption2Enabled
Ndis802_11Encryption3Enabled
For definitions of these values, see OID_802_11_ENCRYPTION_STATUS.
The following table summarizes the AuthModeSupported value and the EncryptStatusSupported value that the miniport driver returns, based on the authentication and encryption modes that the driver supports.
Supported authentication and encryption modes | AuthModeSupported | EncryptStatusSupported |
---|---|---|
Open System: none |
Ndis802_11AuthModeOpen |
Ndis802_11EncryptionDisabled |
Open System: WEP |
Ndis802_11AuthModeOpen |
Ndis802_11Encryption1Enabled |
Shared Key: none |
Ndis802_11AuthModeShared |
Ndis802_11EncryptionDisabled |
Shared Key: WEP |
Ndis802_11AuthModeShared |
Ndis802_11Encryption1Enabled |
WPA: TKIP |
Ndis802_11AuthModeWPA |
Ndis802_11Encryption2Enabled |
WPA: AES |
Ndis802_11AuthModeWPA |
Ndis802_11Encryption3Enabled |
WPA-PSK: TKIP |
Ndis802_11AuthModeWPAPSK |
Ndis802_11Encryption2Enabled |
WPA-PSK: AES |
Ndis802_11AuthModeWPAPSK |
Ndis802_11Encryption3Enabled |
WPA-None: TKIP |
Ndis802_11AuthModeWPANone |
Ndis802_11Encryption2Enabled |
WPA-None: AES |
Ndis802_11AuthModeWPANone |
Ndis802_11Encryption3Enabled |
WPA2: TKIP |
Ndis802_11AuthModeWPA2 |
Ndis802_11Encryption2Enabled |
WPA2: AES |
Ndis802_11AuthModeWPA2 |
Ndis802_11Encryption3Enabled |
WPA-PSK2: TKIP |
Ndis802_11AuthModeWPA2PSK |
Ndis802_11Encryption2Enabled |
WPA-PSK2: AES |
Ndis802_11AuthModeWPA2PSK |
Ndis802_11Encryption3Enabled |
Note The driver must return separate EncryptStatusSupported entries for all cipher suites that it can use for the pairwise/unicast cipher. For example, if the device supports AES and TKIP as pairwise ciphers, it must add one entry for Ndis802_11Encryption3Enabled (for AES) and another for Ndis802_11Encryption2Enabled (for TKIP).