亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? car6koid.cpp

?? WLAN在AR6000程序中的驅動代碼
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
			//TODO: New SSID is the same as the old. No need to indicate MEDIA_DISCONNECT
			// to NDIS immediately. If the subsequent connection attempt fails then we can 
			// indicate MEDIA_DISCONNECT to NDIS.
		}
		
		m_SSID = *lSSID;
		// Initialize the GrpwiseCrypto index to 0 to start afresh.
		m_GrpwiseCryptoIndex = 0;

		if (m_ConnectInProgress || m_Connected)
		{
			Status = SendWMIDisconnectCommand();
		}
		else
		{
			// No current connection, 
			Status = SendWMIConnectCommand(SSID);
		}
	}

done:
 	return Status;
}

NDIS_STATUS
CAR6KMini::Set802_11NetworkTypeInUse(
	IN NDIS_802_11_NETWORK_TYPE Type)
{
	if (Type == Ndis802_11DS || Type == Ndis802_11OFDM24) {
		m_NetworkTypeInUse = Type;
		return NDIS_STATUS_SUCCESS;
	}
	else 
		return NDIS_STATUS_INVALID_DATA;
}

NDIS_STATUS
CAR6KMini::Set802_11TxPowerLevel(
	IN NDIS_802_11_TX_POWER_LEVEL Level)
{
	return NDIS_STATUS_SUCCESS;
}

NDIS_STATUS
CAR6KMini::Set802_11RSSITrigger(
	IN NDIS_802_11_RSSI Trigger)
{
	return NDIS_STATUS_SUCCESS;
}

NDIS_STATUS
CAR6KMini::Set802_11InfrastructureMode(
	IN NDIS_802_11_NETWORK_INFRASTRUCTURE Mode)
{
	int i;
	A_STATUS wmiStatus;
	BYTE KeyIndex;

	if (!m_WMIReady) {
	    return NDIS_STATUS_ADAPTER_NOT_READY;
	}
    
	m_InfrastructureMode = Mode;

	// Clear all the Keys as per OID Recommendation
	for (i=0;i<4;i++) {
		if (m_Key[i]) {
			KeyIndex=(BYTE)(m_KeyIndex[i]);
			memset(m_Key[i],0,sizeof(m_Key[i]));
			m_cbKey[i] = 0;
			m_KeyIndex[i] = 0;
			m_KeyRSC[i] = 0;

			wmiStatus = wmi_deleteKey_cmd((wmi_t *)m_pWMI, KeyIndex);
			if (wmiStatus != A_OK) {
				return NDIS_STATUS_FAILURE;
			}
		}
	}

	return NDIS_STATUS_SUCCESS;
}

NDIS_STATUS
CAR6KMini::Set802_11FragmentationThreshold(
	IN NDIS_802_11_FRAGMENTATION_THRESHOLD Threshold)
{
	return NDIS_STATUS_SUCCESS;
}

NDIS_STATUS
CAR6KMini::Set802_11RTSThreshold(
	IN NDIS_802_11_RTS_THRESHOLD Threshold)
{
	return NDIS_STATUS_SUCCESS;
}

NDIS_STATUS
CAR6KMini::Set802_11RxAntennaSelected(
	IN ULONG Antenna)
{
	return NDIS_STATUS_SUCCESS;
}

NDIS_STATUS
CAR6KMini::Set802_11TxAntennaSelected(
	IN ULONG Antenna)
{
	return NDIS_STATUS_SUCCESS;
}

NDIS_STATUS
CAR6KMini::Set802_11DesiredRates(
	IN NDIS_802_11_RATES *Rates)
{
	return NDIS_STATUS_SUCCESS;
}

NDIS_STATUS
CAR6KMini::Set802_11Configuration(
	IN NDIS_802_11_CONFIGURATION *pConfiguration)
//
//  Set the underlying NIC's radio configuration parameters to the specified values
//
{
	NDIS_STATUS Status = NDIS_STATUS_SUCCESS;

	// This OID can only be set when the device is not associated
	// within the desired SSID. The miniport driver must return
	// NDIS_STATUS_NOT_ACCEPTED if it is currently associated.
	if (m_Connected)
		Status = NDIS_STATUS_NOT_ACCEPTED;
	else
	{
                if ( m_InfrastructureMode == Ndis802_11IBSS ) {
                        m_Config.ibssChannel = pConfiguration->DSConfig; 
                }
		// BeaconPeriod specifies the beacon interval for ad hoc mode. 
		// BeaconPeriod is ignored in infrastructure mode
		// wmi_set_adhoc_beacon_interval(BeaconPeriod);
	}

	return NDIS_STATUS_SUCCESS;
}

NDIS_STATUS
CAR6KMini::Set802_11Disassociate()
//
//  Disassociate from the current service set and turn off the radio. 
//
{
	NDIS_STATUS Status = NDIS_STATUS_SUCCESS;
	A_STATUS wmiStatus;
	m_WantToBeConnected = false;
	m_SSID.SsidLength = 0;

	// Only need to do something if we are connected
	if (m_Connected)
	{
		if (!m_WMIReady) {
			// Hardware is not in a state where we can send it commands
			Status = NDIS_STATUS_ADAPTER_NOT_READY;
		}
		else {
			Status = SendWMIDisconnectCommand();
		}
	}
	wmiStatus =	wmi_scanparams_cmd((wmi_t *)m_pWMI,65535,0,0,0,0,0);
	if ( wmiStatus != A_OK ) {
		NDIS_DEBUG_PRINTF(ATH_LOG_ERR, "AR6K: ERROR - wmi_scanparams_cmd failed = %u\n", wmiStatus);
	}
	wmi_free_allnodes((wmi_t *)m_pWMI);
	
	if (m_Connected && Status==NDIS_STATUS_SUCCESS) {
		m_Connected = false;	
		NdisMIndicateStatus(m_MiniportAdapterHandle, NDIS_STATUS_MEDIA_DISCONNECT, 0, 0);
	    NdisMIndicateStatusComplete(m_MiniportAdapterHandle);
	}
	m_RadioDisabled = TRUE;
	return Status;
}

NDIS_STATUS
CAR6KMini::Set802_11PowerMode(
	IN NDIS_802_11_POWER_MODE PowerMode)
{
	A_STATUS Status = A_OK;
	A_UINT8 powerMode = 0;
	A_UINT16 listenInterval = MIN_LISTEN_INTERVAL;

	// return if PowerMode @ target is already the same as what we get here.
	if (PowerMode == m_80211_PowerMode)
		return NDIS_STATUS_SUCCESS;

	switch( PowerMode ) {

	case Ndis802_11PowerModeCAM:

		powerMode = MAX_PERF_POWER;

		break;
	case Ndis802_11PowerModeMAX_PSP:

		//Increase the listen interval to 1000 TUs ensure MAX_PSP.
		listenInterval = MAX_LISTEN_INTERVAL;

		powerMode = REC_POWER;

		break;
	case Ndis802_11PowerModeFast_PSP:

		//Set to default listen interval of 100 TUs.
		listenInterval = MIN_LISTEN_INTERVAL;

		powerMode = REC_POWER;

		break;
	default:
		return NDIS_STATUS_INVALID_DATA;
	}

	//Set the Listen interval if Power mode is other than MAX_PERF_POWER
	if ( powerMode != MAX_PERF_POWER ) {

		Status = wmi_listeninterval_cmd((struct wmi_t *)m_pWMI, listenInterval, 0);
		if (Status != A_OK)
			return NDIS_STATUS_FAILURE;
	}

    Status = wmi_powermode_cmd((struct wmi_t *)m_pWMI, powerMode);

	if ( Status != A_OK ) {
		
		//if the Listen interval was updated, roll back to original.
		if ( powerMode != MAX_PERF_POWER )
			wmi_listeninterval_cmd((struct wmi_t *)m_pWMI, m_ListenInterval, 0);

		return NDIS_STATUS_FAILURE;
	}

	//Update the global power mode & listen Interval vars with the set value;
	m_80211_PowerMode = PowerMode;
	
	if ( powerMode != MAX_PERF_POWER )
		m_ListenInterval = listenInterval;

	return NDIS_STATUS_SUCCESS;
}

NDIS_STATUS
CAR6KMini::Set802_11BSSIDListScan()
//
//  Perform a network scan of BSSIDs and SSIDs.
//
{
	NDIS_STATUS Status = NDIS_STATUS_SUCCESS;
	A_STATUS    wmiStatus;

	if (!m_WMIReady)
	{
		Status = NDIS_STATUS_ADAPTER_NOT_READY;
		goto done;
	}

	if (m_ConnectInProgress || m_Connected)
	{
		goto done;
	}
   
    if (m_WMIBssFilter !=  ALL_BSS_FILTER) { 
	    wmiStatus = wmi_bssfilter_cmd((struct wmi_t *)m_pWMI, ALL_BSS_FILTER);
	    if (wmiStatus == A_OK) {
		    m_WMIBssFilter = ALL_BSS_FILTER;
        } else {
		    Status = NDIS_STATUS_FAILURE;
		    goto done;
	    }
    }

	wmiStatus = wmi_startscan_cmd((struct wmi_t *)m_pWMI, WMI_LONG_SCAN);
	if (A_OK != wmiStatus)
		Status = NDIS_STATUS_FAILURE;

done:
	return Status;
}

NDIS_STATUS
CAR6KMini::Set802_11PrivacyFilter(
	IN NDIS_802_11_PRIVACY_FILTER Filter)
{
	return NDIS_STATUS_SUCCESS;
}

NDIS_STATUS
CAR6KMini::Set802_11ReloadDefaults(
	IN NDIS_802_11_RELOAD_DEFAULTS Filter)
{
	return NDIS_STATUS_SUCCESS;
}


NDIS_STATUS
CAR6KMini::SetCAr6k802_11AuthAlg(
    IN ULONG AuthAlg)
{
	m_AuthAlg = AuthAlg;
	return NDIS_STATUS_SUCCESS;
}

NDIS_STATUS
CAR6KMini::SetResumeWlanState(ULONG state)
{
	m_ResumeWlanState = state;
	return NDIS_STATUS_SUCCESS;
}


NDIS_STATUS
CAR6KMini::Set802_11AuthenticationMode(
	IN NDIS_802_11_AUTHENTICATION_MODE Mode)
{
	if ( m_AuthenticationMode == Ndis802_11AuthModeAutoSwitch ) {
		return NDIS_STATUS_NOT_SUPPORTED;
	}
	if ((Mode == Ndis802_11AuthModeOpen) || (Mode == Ndis802_11AuthModeShared) ||
		(Mode == Ndis802_11AuthModeWPA) || (Mode == Ndis802_11AuthModeWPAPSK) || 
		(Mode == Ndis802_11AuthModeWPA2PSK) || (Mode == Ndis802_11AuthModeWPA2)) {
			m_AuthenticationMode = Mode;
			return NDIS_STATUS_SUCCESS;
	} else {
		return NDIS_STATUS_INVALID_DATA;
	}

}

NDIS_STATUS
CAR6KMini::Set802_11EncryptionStatus(
	IN NDIS_802_11_ENCRYPTION_STATUS EncryptionStatus)
{
	m_EncryptionStatus = EncryptionStatus;
	return NDIS_STATUS_SUCCESS;
}

NDIS_STATUS
CAR6KMini::Set802_11AddWEP(
	IN NDIS_802_11_WEP *pWEP)
{
	BYTE         KeyIndex;
	A_UINT8      KeyUsage = 0;
	A_STATUS     wmiStatus;

	NDIS_DEBUG_PRINTF(ATH_LOG_INF, "AR6K: AddWEP from Supplicant\n");
	if (pWEP->KeyIndex & 0x80000000) {
		KeyUsage |= TX_USAGE;
	}

	if (!(pWEP->KeyIndex & 0x40000000)) {
		KeyUsage |= GROUP_USAGE;
	}

	KeyIndex = (BYTE)(pWEP->KeyIndex & 0xff);

	if (KeyUsage & TX_USAGE && !(KeyUsage & GROUP_USAGE)) {
		//pairwise key and index is not 0
		if (KeyIndex != 0) {
			return NDIS_STATUS_INVALID_DATA;
		}
	}

	if (KeyIndex < WMI_MIN_KEY_INDEX || 
		KeyIndex > WMI_MAX_KEY_INDEX) {
		return NDIS_STATUS_INVALID_DATA;
	}

	if (pWEP->KeyLength <= sizeof(m_Key[KeyIndex])) {
		m_cbKey[KeyIndex] = pWEP->KeyLength;
		memcpy(m_Key[KeyIndex], pWEP->KeyMaterial, pWEP->KeyLength);
		m_KeyIndex[KeyIndex] = KeyIndex;
		m_KeyRSC[KeyIndex] = 0;
		m_KeyUsage[KeyIndex] = KeyUsage;
	}

	// Add the key to the target
	if (m_EncryptionStatus == Ndis802_11WEPEnabled) {
		wmiStatus = wmi_addKey_cmd((wmi_t *)m_pWMI, 
								(A_UINT8)KeyIndex,
								WEP_CRYPT,
								m_KeyUsage[KeyIndex], 
								(A_UINT8)m_cbKey[KeyIndex], 
								(A_UINT8*)&m_KeyRSC[KeyIndex], 
								m_Key[KeyIndex]);
		if (wmiStatus != A_OK) {
		    NDIS_DEBUG_PRINTF(ATH_LOG_ERR, "AR6K: ERROR - wmi_addKey_cmd failed = %u\n", wmiStatus);
			return NDIS_STATUS_FAILURE;
		}
	}

	return NDIS_STATUS_SUCCESS;
}

NDIS_STATUS
CAR6KMini::Set802_11RemoveWEP(
	IN NDIS_802_11_KEY_INDEX KeyIndex)
{
	A_STATUS wmiStatus;

	NDIS_DEBUG_PRINTF(ATH_LOG_INF, "AR6K: RemoveWEP from Supplicant\n");

	if (KeyIndex >= 4) {
	    return NDIS_STATUS_FAILURE;
	}

	memset(m_Key[KeyIndex], 0, sizeof(m_Key[KeyIndex]));
	m_cbKey[KeyIndex] = 0;

	wmiStatus = wmi_deleteKey_cmd((wmi_t *)m_pWMI, (BYTE)KeyIndex);
	if (wmiStatus != A_OK) {
	    NDIS_DEBUG_PRINTF(ATH_LOG_ERR, "AR6K: ERROR - wmi_deleteKey_cmd failed = %u\n", wmiStatus);
		return NDIS_STATUS_FAILURE;
	}
	return NDIS_STATUS_SUCCESS;
}

NDIS_STATUS
CAR6KMini::Set802_11AddKey(
	IN NDIS_802_11_KEY *pKey)
{
	BYTE         KeyIndex, tempKeyVal, tempKeyMaterial[32];
	A_UINT8      KeyUsage = 0;
	A_STATUS     wmiStatus;
	int          i = 0;
	CRYPTO_TYPE	 keyType = NONE_CRYPT;

	if (pKey->KeyIndex & 0x80000000) {
		KeyUsage |= TX_USAGE;
	}

	if (!(pKey->KeyIndex & 0x40000000)) {
		KeyUsage |= GROUP_USAGE;
	}

	KeyIndex = (BYTE)(pKey->KeyIndex & 0xff);
	if (KeyUsage & TX_USAGE && !(KeyUsage & GROUP_USAGE)) {
		//pairwise key and index is not 0
		if (KeyIndex != 0) {
			return NDIS_STATUS_INVALID_DATA;
		}
	}

	if (KeyIndex < WMI_MIN_KEY_INDEX || 
		KeyIndex > WMI_MAX_KEY_INDEX) {
		return NDIS_STATUS_INVALID_DATA;
	}

	if( (KeyUsage & GROUP_USAGE) == GROUP_USAGE )
	{
		keyType = m_GrpwiseCryptoType;
	} else {

		keyType = m_PairwiseCryptoType;
	}

	/* Set the keyType to WEP_CRYPT for the case of this OID being called because of a profile
	 * switch to 802.1x/SharedAuth/AutoSwitch from a connected profile. This is because the encryption status
	 * OID is got only after the AddKey OID.
     */
	if ((m_AuthenticationMode == Ndis802_11AuthModeShared ||
		m_AuthenticationMode == Ndis802_11AuthModeAutoSwitch || m_AuthenticationMode == Ndis802_11AuthModeOpen)) {

		keyType = WEP_CRYPT;
	}

	// TODO - to check BSSID in pKey and the AP address for pairwis

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产乱码久久久久久蜜臀| 91精品国模一区二区三区| 激情五月婷婷综合| 亚洲一区二区三区免费视频| 国产精品成人在线观看| 欧美国产精品v| 精品福利在线导航| 亚洲精品一区二区三区福利| 自拍av一区二区三区| 色婷婷av一区二区| 国产成人高清在线| 国产91高潮流白浆在线麻豆| 老司机免费视频一区二区三区| 综合激情成人伊人| 亚洲三级小视频| 1区2区3区欧美| 日本一区二区在线不卡| 国产欧美日韩激情| 日韩三级免费观看| 欧美精品免费视频| 69p69国产精品| 91精品国产色综合久久不卡电影 | 国产精品一区二区久久不卡| 久久99久国产精品黄毛片色诱| 久久成人综合网| 国产精品99久久久久久宅男| 国产精品影视在线| 成人aa视频在线观看| 成人精品视频.| 国产成人精品www牛牛影视| 大白屁股一区二区视频| 成人av免费在线| 99精品视频在线观看| 色婷婷综合久久久中文字幕| 欧洲亚洲国产日韩| 91麻豆精品国产自产在线| 欧美最猛黑人xxxxx猛交| 97久久精品人人澡人人爽| 色又黄又爽网站www久久| 欧美日韩黄色影视| 日韩欧美高清一区| 国产精品久久久一本精品| 国产精品久久久久久久久晋中| 亚洲欧美日韩系列| 日本午夜一区二区| 国产不卡免费视频| 色美美综合视频| 制服丝袜国产精品| 国产视频视频一区| 亚洲视频你懂的| 一区二区三区中文字幕| 日韩精品福利网| 国产一区视频网站| 欧美三片在线视频观看| 精品88久久久久88久久久| 国产精品水嫩水嫩| 亚洲国产成人va在线观看天堂| 亚洲午夜久久久久中文字幕久| 久久精品国产99| caoporn国产精品| 91.成人天堂一区| 国产午夜精品理论片a级大结局| 亚洲自拍偷拍综合| 国产在线精品不卡| 91丝袜美腿高跟国产极品老师 | 不卡的av电影在线观看| 欧美日韩国产一区二区三区地区| 26uuu亚洲| 夜夜嗨av一区二区三区中文字幕| 久久99精品国产麻豆不卡| 色哟哟在线观看一区二区三区| 欧美一区二区三区四区在线观看| 一区在线观看免费| 美女www一区二区| 色综合视频在线观看| 久久天天做天天爱综合色| 亚洲一区二区成人在线观看| 国产尤物一区二区在线| 欧美放荡的少妇| 国产精品狼人久久影院观看方式| 日本女优在线视频一区二区| 99精品一区二区三区| 久久久久久免费| 日韩国产精品久久久| 成人教育av在线| 日韩三级高清在线| 亚洲综合视频网| av动漫一区二区| 欧美精品一区二区三| 亚洲国产综合在线| 成人av电影观看| 日韩精品中午字幕| 亚洲成av人片| 国产在线视频精品一区| 91精品国产高清一区二区三区蜜臀| 国产精品嫩草99a| 美日韩一区二区| 欧美日韩一卡二卡| 国产一区二区伦理| 在线观看一区不卡| 国产亚洲综合在线| 久久精品免费观看| 欧美一区二区三区免费在线看| 亚洲国产精品久久一线不卡| 91视频91自| 亚洲美女视频在线观看| av激情成人网| 国产精品久久久久影院| 国内精品嫩模私拍在线| 日韩一级二级三级| 日韩电影在线一区| 日韩欧美国产一区在线观看| 天堂影院一区二区| 精品视频资源站| 亚洲国产视频直播| 97久久人人超碰| 最新成人av在线| 成人午夜精品一区二区三区| 日韩美女视频在线| 韩国一区二区在线观看| 日韩精品一区二区三区视频| 亚洲一区二区在线播放相泽| 91国产成人在线| 亚洲一二三四在线观看| 欧美日韩国产一二三| 日韩电影在线一区| 777久久久精品| 麻豆精品在线观看| 欧美精品 国产精品| 日本成人在线不卡视频| 欧美理论电影在线| 日韩制服丝袜av| 日韩三级视频在线看| 国产黑丝在线一区二区三区| 精品sm捆绑视频| 国产在线播放一区| 中文字幕精品一区二区精品绿巨人 | 日本女优在线视频一区二区| 亚洲综合视频在线观看| 欧美在线免费播放| 亚洲图片一区二区| 精品欧美久久久| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 麻豆91在线观看| 久久久亚洲精品一区二区三区 | 欧美日韩国产美女| 亚洲h在线观看| 久久久亚洲国产美女国产盗摄| 成人性生交大片免费看视频在线| 国产精品国产三级国产a| 在线国产亚洲欧美| 麻豆精品久久精品色综合| 国产日韩v精品一区二区| 91久久精品一区二区| 天堂在线一区二区| 久久久久久**毛片大全| 成人理论电影网| 香蕉加勒比综合久久| 精品国产99国产精品| 欧美在线一二三四区| 国产一区二区三区观看| 中文字幕一区二区三| 337p亚洲精品色噜噜| 国产一区二三区| 一区二区高清免费观看影视大全| 欧美va亚洲va香蕉在线| 91免费在线播放| 亚洲午夜精品久久久久久久久| 精品国产一二三| 欧美在线小视频| 国产精品系列在线播放| 亚洲成a人片综合在线| 国产日韩欧美精品一区| 欧美午夜精品一区二区三区 | 懂色av一区二区在线播放| 一区二区三区精品| 欧美高清一级片在线观看| 欧美日韩aaaaa| 日本韩国一区二区三区| 国产综合色在线| 日韩 欧美一区二区三区| 久久精品男人天堂av| 欧美一级欧美一级在线播放| 高清不卡在线观看| 久久99国内精品| 亚洲成人综合视频| 亚洲理论在线观看| 精品国产乱码久久久久久浪潮 | 一区二区三区波多野结衣在线观看| 国产在线精品一区二区| 91免费观看国产| 色av综合在线| 久久久青草青青国产亚洲免观| 亚洲欧洲精品一区二区三区不卡| 性做久久久久久免费观看| 欧美日韩极品在线观看一区| 93久久精品日日躁夜夜躁欧美| 97国产一区二区| 91丨九色丨尤物| 粉嫩一区二区三区性色av|