⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zdwlanadapter.cpp

📁 这个是无线网卡WirelessLAN 测试程序NDIS
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	return ZDNDIS_SUCCESS;
}

INT CZDWlanAdapter::QueryWL_PSLevel(PWLADAPTERINFO pWLAdapterInfoIn)
{

	RID_STRUCT	RidStruct;

	RidStruct.rid = RID_CFG_PM_EPS;			// 0xFC0A
	RidStruct.length = 2;

	if(QueryWin32NDISOid(pWLAdapterInfoIn, OID_ZD_GETRID, &RidStruct, sizeof(RidStruct)) == ZDNDIS_FAIL) {
		return ZDNDIS_FAIL;
	}

	return (int)RidStruct.u.data[0];
}

INT CZDWlanAdapter::SetWL_PSLevel(PWLADAPTERINFO pWLAdapterInfoIn, int nLevel)
{

	RID_STRUCT	RidStruct;

	RidStruct.rid = RID_CFG_PM_EPS;			// 0xFC0A
	RidStruct.length = 2;
	RidStruct.u.data[0] = (USHORT)nLevel;

	if(SetWin32NDISOid(pWLAdapterInfoIn, (DWORD) OID_ZD_SETRID,(PVOID) &RidStruct,(DWORD)sizeof(RID_STRUCT)) == ZDNDIS_FAIL)
		return ZDNDIS_FAIL;

	return ZDNDIS_SUCCESS;
}

INT CZDWlanAdapter::QueryWL_PreambleMode(PWLADAPTERINFO pWLAdapterInfoIn)
{

	RID_STRUCT	RidStruct;

	RidStruct.rid = RID_CFG_PREAMBLE;	// 0xFCB0
	RidStruct.length = 2;

	if(QueryWin32NDISOid(pWLAdapterInfoIn, OID_ZD_GETRID, &RidStruct, sizeof(RidStruct)) == ZDNDIS_FAIL) {
		return ZDNDIS_FAIL;
	}

	return ((int)RidStruct.u.data[0] & 0x03);
}

INT CZDWlanAdapter::SetWL_PreambleMode(PWLADAPTERINFO pWLAdapterInfoIn, int nPreamble)
{

	RID_STRUCT	RidStruct;

	RidStruct.rid = RID_CFG_PREAMBLE; 
	RidStruct.length = 2;

	RidStruct.u.data[0] = (USHORT)nPreamble;

	if(SetWin32NDISOid(pWLAdapterInfoIn, (DWORD) OID_ZD_SETRID,(PVOID) &RidStruct,(DWORD)sizeof(RID_STRUCT)) == ZDNDIS_FAIL)
		return ZDNDIS_FAIL;

	return ZDNDIS_SUCCESS;
}

INT CZDWlanAdapter::QueryWL_FragmentationThreshold(PWLADAPTERINFO pWLAdapterInfoIn)
{

	RID_STRUCT	RidStruct;

	RidStruct.rid = RID_FRAG_THRESHOLD;		// FC82
	RidStruct.length = 2;

	if(QueryWin32NDISOid(pWLAdapterInfoIn, OID_ZD_GETRID, &RidStruct, sizeof(RidStruct)) == ZDNDIS_FAIL) {
		return ZDNDIS_FAIL;
	}

	return (int)RidStruct.u.data[0];
}

INT CZDWlanAdapter::SetWL_FragmentationThreshold(PWLADAPTERINFO pWLAdapterInfoIn, int nFragmentationThreshold)
{

	RID_STRUCT	RidStruct;

	RidStruct.rid = RID_FRAG_THRESHOLD; 
	RidStruct.length = 2;

	RidStruct.u.data[0] = (USHORT)nFragmentationThreshold;

	if(SetWin32NDISOid(pWLAdapterInfoIn, (DWORD) OID_ZD_SETRID,(PVOID) &RidStruct,(DWORD)sizeof(RID_STRUCT)) == ZDNDIS_FAIL)
		return ZDNDIS_FAIL;

	return ZDNDIS_SUCCESS;
}

INT CZDWlanAdapter::QueryWL_RTS_CTS_Threshold(PWLADAPTERINFO pWLAdapterInfoIn)
{

	RID_STRUCT	RidStruct;

	RidStruct.rid = RID_RTS_THRESHOLD;		// FC83
	RidStruct.length = 2;

	if(QueryWin32NDISOid(pWLAdapterInfoIn, OID_ZD_GETRID, &RidStruct, sizeof(RidStruct)) == ZDNDIS_FAIL) {
		return ZDNDIS_FAIL;
	}

	return (int)RidStruct.u.data[0];
}

INT CZDWlanAdapter::SetWL_RTS_CTS_Threshold(PWLADAPTERINFO pWLAdapterInfoIn, int nThreshold)
{

	RID_STRUCT	RidStruct;

	RidStruct.rid = RID_RTS_THRESHOLD; 
	RidStruct.length = 2;

	RidStruct.u.data[0] = (USHORT)nThreshold;

	if(SetWin32NDISOid(pWLAdapterInfoIn, (DWORD) OID_ZD_SETRID,(PVOID) &RidStruct,(DWORD)sizeof(RID_STRUCT)) == ZDNDIS_FAIL)
		return ZDNDIS_FAIL;

	return ZDNDIS_SUCCESS;
}

INT CZDWlanAdapter::QueryWL_AuthenticationMode(PWLADAPTERINFO pWLAdapterInfoIn)
{
	UINT unTempUINT;

	if(QueryWin32NDISOid(pWLAdapterInfoIn, OID_802_11_AUTHENTICATION_MODE, &unTempUINT, sizeof(unTempUINT)) == ZDNDIS_FAIL) {
		return ZDNDIS_FAIL;
	}

	switch(unTempUINT) {
	  case Ndis802_11AuthModeOpen:
		return 1;
		break;
	  case Ndis802_11AuthModeShared:
		return 2;
		break;
	  case Ndis802_11AuthModeAutoSwitch:
		return 3;
		break;
	  default:
		return ZDNDIS_FAIL;
		break;
	}
}

INT CZDWlanAdapter::SetWL_AuthenticationMode(PWLADAPTERINFO pWLAdapterInfoIn, int nAuthenticationMode)
{

	char szBuffer[100];

	UINT unTempUINT;

	switch(nAuthenticationMode) {
	  case 1:
		unTempUINT = Ndis802_11AuthModeOpen;
		TRACE ("nAuthenticationMode = Ndis802_11AuthModeOpen\n");
		break;
	  case 2:
		unTempUINT = Ndis802_11AuthModeShared;
		TRACE ("nAuthenticationMode = Ndis802_11AuthModeShared\n");
		break;
	  case 3:
		unTempUINT = Ndis802_11AuthModeAutoSwitch;
		TRACE ("nAuthenticationMode = Ndis802_11AuthModeAutoSwitch\n");
		break;
	  default:
		return ZDNDIS_FAIL;
		break;
	}

	sprintf(szBuffer, "The nAuthenticationMode = %d\n", unTempUINT);
	TRACE (szBuffer);
	if(SetWin32NDISOid(pWLAdapterInfoIn, OID_ZD_802_11_AUTHENTICATION_MODE, &unTempUINT,(DWORD)sizeof(unTempUINT)) == ZDNDIS_FAIL) {
		return ZDNDIS_FAIL;
	}
	return ZDNDIS_SUCCESS;
}

INT CZDWlanAdapter::QueryWL_CQSLCurrBSS(PWLADAPTERINFO pWLAdapterInfoIn, int *pnCQValue, int *pnSLValue, int *pnCount)
{
	RID_STRUCT	RidStruct;

	RidStruct.rid = RID_COMMS_QUALITY;		// FD43
	RidStruct.length = 4;
	if(QueryWin32NDISOid(pWLAdapterInfoIn, OID_ZD_GETRID,&RidStruct,sizeof(RidStruct)) == ZDNDIS_FAIL) {
		return ZDNDIS_FAIL;
	}
	*pnCQValue	= (int)(RidStruct.u.data[0]);
	*pnSLValue	= (int)(RidStruct.u.data[1]);
	*pnCount	= (int)(RidStruct.u.data[2]);

	return ZDNDIS_SUCCESS;
}

INT CZDWlanAdapter::QueryWL_PortStatus(PWLADAPTERINFO pWLAdapterInfoIn)
{

	RID_STRUCT	RidStruct;

	RidStruct.rid = RID_PORT_STATUS;		// FD40
	RidStruct.length = 2;
	if(QueryWin32NDISOid(pWLAdapterInfoIn, OID_ZD_GETRID,&RidStruct,sizeof(RidStruct)) == ZDNDIS_FAIL) {
		return ZDNDIS_FAIL;
	}
	//if(RidStruct.u.data[0] > 9)
	//	return ZDNDIS_FAIL;

	return (int)RidStruct.u.data[0];
}

INT CZDWlanAdapter::QueryWL_FirmwareVersion(PWLADAPTERINFO pWLAdapterInfoIn, char *pFirmwareVersion)
{

	RID_STRUCT	RidStruct;
	//char		*pCh;

	RidStruct.rid = 0xFD3F;		// FD3F
	RidStruct.length = 2;
	if(QueryWin32NDISOid(pWLAdapterInfoIn, OID_ZD_GETRID, &RidStruct, sizeof(RidStruct)) == ZDNDIS_FAIL) {
		return ZDNDIS_FAIL;
	}
	memcpy(pFirmwareVersion, (char*)&RidStruct.u.data[0], 5);
	//pCh = (char*)&RidStruct.u.data[0];
	//sprintf(pFirmwareVersion, "%s", pCh);

	return ZDNDIS_SUCCESS;
}

INT CZDWlanAdapter::WL_SiteSurveyStart(PWLADAPTERINFO pWLAdapterInfoIn)
{
	int	i;		// For dummy use.

	//if(WriteOid(pWLAdapterInfoIn, OID_802_11_BSSID_LIST_SCAN, &i, sizeof(i)) == ZDNDIS_FAIL)	{	// 
	if(SetWin32NDISOid(pWLAdapterInfoIn, OID_ZD_802_11_BSSID_LIST_SCAN, &i, sizeof(i)) == ZDNDIS_FAIL) {	// Edit by Kuma 2002-10-17 for Zero configuration problem.
		return ZDNDIS_FAIL;
	} else {
		return ZDNDIS_SUCCESS;
	}
}

INT CZDWlanAdapter::WL_RetrieveSiteSurveyData(PWLADAPTERINFO pWLAdapterInfoIn, PNDIS_802_11_BSSID_LIST pBSSIDList, int nBufferItemNo)
{
	int	i;
	int nZDDriverVer;

	if(QueryWin32NDISOid(pWLAdapterInfoIn, OID_ZD_802_11_BSSID_LIST, pBSSIDList, 4 + nBufferItemNo * sizeof(NDIS_WLAN_BSSID)) == ZDNDIS_FAIL) {
		return ZDNDIS_FAIL;
	}

	nZDDriverVer = QueryWL_DriverVersion(pWLAdapterInfoIn);		// Re-Add 105 to RSSI after driver version 1.30.xx.xx

	if(nZDDriverVer >= 0x01300000) {							//
		for(i=0; i<(int)(pBSSIDList->NumberOfItems); i++) {
			pBSSIDList->Bssid[i].Rssi += 105;
		}
	}
	
	return ZDNDIS_SUCCESS;
}

INT CZDWlanAdapter::WL_ReadEEPROM(PWLADAPTERINFO pWLAdapterInfoIn, int nChipVer, int nINTFType, UCHAR *pcDataBuffer, UINT nDataLength)
{
	TRACE( "WL_ReadEEPROM()\n" );

	UINT uTempUINT;
	UINT uTempAddr;
	int nCountBytes;
	int nTimes;
	int i;

	if(nChipVer != 0x1201)
		return ZDNDIS_FAIL;

	if(nINTFType == INTF_USB) {
		uTempAddr = 0x1D400;
	} else {
		uTempAddr = 0x1E000;
	}

	nCountBytes = 0;
	nTimes = nDataLength/2;

	for(i=0; i<nTimes; i++) {
		if(ReadMACRegister(pWLAdapterInfoIn, uTempAddr, &uTempUINT) == ZDNDIS_FAIL)
			return ZDNDIS_FAIL;

		*pcDataBuffer++ = (UCHAR)( uTempUINT      & 0x000000FF);
		*pcDataBuffer++ = (UCHAR)((uTempUINT>>16) & 0x000000FF);
		uTempAddr += 4;
	}
	return ZDNDIS_SUCCESS;

}

INT CZDWlanAdapter::WL_WriteEEPROM(PWLADAPTERINFO pWLAdapterInfoIn, UCHAR *pcDataBuffer, UINT nDataLength)
{
	PZD_IMAGE_BLOCK_STRUCT	pImageBlockStruct;
	UCHAR					DLTempBuf[sizeof(ZD_IMAGE_BLOCK_STRUCT) + (WL_MAX_EEPROM_SIZE * 2 - 1)];
	UCHAR					*pCh;
	UINT					i;

	char	szTempBuffer[200];
	TRACE( "WL_WriteEEPROM() Start-->\n" );
	sprintf(szTempBuffer, "WL_WriteEEPROM(): nDataLength = %d\n", nDataLength);
	TRACE( szTempBuffer );
	sprintf(szTempBuffer, "WL_WriteEEPROM(): pcDataBuffer = %d\n", pcDataBuffer);
	TRACE( szTempBuffer );

	if(nDataLength > WL_MAX_EEPROM_SIZE) {
		AfxMessageBox( "nDataLength > WL_MAX_EEPROM_SIZE!!\n" );
		char szBuffer1[200];
		sprintf(szBuffer1, "nDataLength = %d, WL_MAX_EEPROM_SIZE = %d\n", nDataLength, WL_MAX_EEPROM_SIZE);
		AfxMessageBox ( szBuffer1 );
		return ZDNDIS_FAIL;			// Data length is exceed the WL_MAX_EEPROM_SIZE.
	}

	pImageBlockStruct = (PZD_IMAGE_BLOCK_STRUCT)DLTempBuf;
	pImageBlockStruct->address	= 0;
	pImageBlockStruct->size		= 2 * nDataLength;
	pCh = pImageBlockStruct->buffer;

	TRACE( "WL_WriteEEPROM() : Fill write buffer\n" );
	for(i=0; i<(int)nDataLength; i++) {		// Transfer byte to word.
		*pCh++ = *pcDataBuffer++;
		*pCh++ = 0;
	}

	TRACE( "WL_WriteEEPROM() : Actual call driver to write EEPROM\n" );
	if(SetWin32NDISOid(pWLAdapterInfoIn, OID_ZD_DOWNLOAD_ROM	,(PVOID)pImageBlockStruct, (sizeof(ZD_IMAGE_BLOCK_STRUCT)+(nDataLength*2)-1)) == ZDNDIS_FAIL) {
		TRACE( "WL_WriteEEPROM() : Excute OID_ZD_DOWNLOAD_ROM Fail!!\n" );
		return ZDNDIS_FAIL;
	}
	TRACE( "WL_WriteEEPROM() : SUCCESS\n" );

	return ZDNDIS_SUCCESS;
}

INT CZDWlanAdapter::QueryWL_ExtEEPROM_IDData(UCHAR *pcDataBuffer, int nINTFType, int nID, UCHAR *pcOutBuffer, int *nLength)
{
	UCHAR*	pCh1;
	UCHAR	ID_Code, ID_Length;
	int		nExtStartAddr;
	
	ID_Code			= 0;
	ID_Length		= 0;

	switch(nINTFType) {
		case INTF_PCMCIA:
			nExtStartAddr = EEPROM_PCMCIA_EXT_ADDR;
			break;
		case INTF_PCI:
			nExtStartAddr = EEPROM_PCI_EXT_ADDR;
			break;
		case INTF_USB:
			nExtStartAddr = EEPROM_USB_EXT_ADDR;
			break;
	}
	pCh1 = pcDataBuffer + nExtStartAddr;

	while(1) {
		ID_Length = *pCh1++;
		ID_Code = (int)(*pCh1++);

		if(ID_Code == nID) {
			if( *nLength < (ID_Length-1) )
				return ZDNDIS_FAIL;

			memcpy(pcOutBuffer, pCh1, (ID_Length-1));
			*nLength = ID_Length - 1;
			return ZDNDIS_SUCCESS;
		}
		pCh1 = pCh1 + ID_Length - 1;
		if( pCh1 >= (pcDataBuffer + nExtStartAddr + 256) )
			return ZDNDIS_FAIL;

		if(ID_Code == 0)
			break;
	}

	return ZDNDIS_FAIL;
}

VOID CZDWlanAdapter::GetNICAdapterMAC(PWLADAPTERINFO pWLAdapterInfoIn, char *cMACBuffer)
{
	int i;
	for(i=0; i<6; i++)
		cMACBuffer[i] = 0;

	QueryWin32NDISOid(pWLAdapterInfoIn, OID_802_3_CURRENT_ADDRESS, cMACBuffer, 6);
}

INT CZDWlanAdapter::GetNICAdapterTally(PWLADAPTERINFO pWLAdapterInfoIn, PLOCAL_TALLY_STRUCT pTallyStruct)
{
	if(SetWin32NDISOid(pWLAdapterInfoIn, OID_ZD_SET_TALLIES, pTallyStruct, (DWORD)sizeof(LOCAL_TALLY_STRUCT)) == ZDNDIS_FAIL)
		return ZDNDIS_FAIL;
	if(QueryWin32NDISOid(pWLAdapterInfoIn, OID_ZD_GET_TALLIES, pTallyStruct, (DWORD)sizeof(LOCAL_TALLY_STRUCT)) == ZDNDIS_FAIL)
		return ZDNDIS_FAIL;

	return ZDNDIS_SUCCESS;
}

INT CZDWlanAdapter::GetTxRxFrameCount(PWLADAPTERINFO pWLAdapterInfoIn, PTXRX_FRAME_COUNT_STRUCT pTxRxFrameCount)
{
	if(QueryWin32NDISOid(pWLAdapterInfoIn, OID_GEN_XMIT_OK, &pTxRxFrameCount->TxOKFrameCount, (DWORD)sizeof(DWORD)) == ZDNDIS_FAIL)
		return ZDNDIS_FAIL;
	if(QueryWin32NDISOid(pWLAdapterInfoIn, OID_GEN_RCV_OK , &pTxRxFrameCount->RxOKFrameCount, (DWORD)sizeof(DWORD)) == ZDNDIS_FAIL)
		return ZDNDIS_FAIL;
	if(QueryWin32NDISOid(pWLAdapterInfoIn, OID_GEN_XMIT_ERROR, &pTxRxFrameCount->TxErrFrameCount, (DWORD)sizeof(DWORD)) == ZDNDIS_FAIL)
		return ZDNDIS_FAIL;
	if(QueryWin32NDISOid(pWLAdapterInfoIn, OID_GEN_RCV_ERROR , &pTxRxFrameCount->RxErrFrameCount, (DWORD)sizeof(DWORD)) == ZDNDIS_FAIL)
		return ZDNDIS_FAIL;

	return ZDNDIS_SUCCESS;
}

INT CZDWlanAdapter::SetWL_FirmwareTestCommand(PWLADAPTERINFO pWLAdapterInfoIn, WORD testmode, WORD param0, WORD param1)
{
	WORD	TestCommandCode;

	TestCommandCode = 0x38 +( testmode << 8);
	ZD_CMD_STRUCT	CmdStruct;

	CmdStruct.u.send.cmd	= TestCommandCode;
	CmdStruct.u.send.param0	= param0;
	CmdStruct.u.send.param1	= param1;
	if(SetWin32NDISOid(pWLAdapterInfoIn, OID_ZD_CMD,(PVOID)&CmdStruct, sizeof(ZD_CMD_STRUCT)) == ZDNDIS_FAIL)
		return ZDNDIS_FAIL;
	return ZDNDIS_SUCCESS;
}

INT CZDWlanAdapter::QueryWL_DriverVersion(PWLADAPTERINFO pWLAdapterInfoIn)
{
	UINT unTemp;

	if(QueryWin32NDISOid(pWLAdapterInfoIn, OID_GEN_VENDOR_DRIVER_VERSION, &unTemp, sizeof(unTemp)) == ZDNDIS_FAIL) {
		return ZDNDIS_FAIL;
	}

	return (int)unTemp;
}

INT CZDWlanAdapter::QueryWL_SearchEEExtID(BYTE *pcEEBuffer, int nBufferLen, BYTE cID)
{
	BYTE	tempLength;
	BYTE	tempID;
	int		nPosition;

	nPosition = 0;
	while(1) {
		tempLength	= pcEEBuffer[nPosition++];
		tempID		= pcEE

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -