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

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

?? interrup.c

?? 虛擬網絡驅動程序ndis for 數字電視 ip 數據接收
?? C
?? 第 1 頁 / 共 2 頁
字號:
                    );

        if(++ii == Adapter->IPFilterPIDNum)
            break;
    }

	Adapter->TotalReceiveBytes.LowPart += 188;
	if(Adapter->TotalReceiveBytes.LowPart < 188)
		Adapter->TotalReceiveBytes.HighPart++;

    NdisDprReleaseSpinLock(&Adapter->MPEdecSpinLock);
}



void ToMPESection(IN PRTFAST_ADAPTER Adapter,IN MPE_DECODER *pMPEdec,IN PUCHAR TsBuf)// Tsbuf len = 188Bytes
{
    TSHEAD *pTsheader = (TSHEAD *)TsBuf;
    USHORT  wPID = pTsheader->PID1*256+pTsheader->PID2;
    MPE_SECTION_HEAD *pSecheader = NULL;
    PUCHAR  pSection, pPayload;
    SHORT   TmpLen0,TmpLen,DataLen;

    //if(pTsheader->sync != TS_SYNC_BYTE)
    //    return;
    //if(pMPEdec->wPID != wPID)
    //    return;

    //check TS continuous counter
    pMPEdec->bTsContinuous = TRUE;
    pMPEdec->CurTsCounter = pTsheader->continuity_counter;
    if(pMPEdec->TotalTsNum == 0)
        pMPEdec->LastTsCounter = pMPEdec->CurTsCounter;
    else
    {
        /*UCHAR iLost = pMPEdec->LastTsCounter+1;
        for( ; ; iLost++)
        {
            if( (0x0f&iLost) == pMPEdec->CurTsCounter)
                break;
            pMPEdec->LostTsNum++;
            pMPEdec->bTsContinuous = FALSE;
            pMPEdec->SectionSync = FALSE;

        }*/

		if(pMPEdec->CurTsCounter != ((pMPEdec->LastTsCounter + 1) & 0x0f))
		{
			UCHAR iLost;

/*			iLost = pMPEdec->CurTsCounter + 0x10;
			iLost -= pMPEdec->LastTsCounter + 1;
			iLost &= 0x0f;

			if(iLost > 0)
			{
	            pMPEdec->LostTsNum += iLost;
				Adapter->ulLostCounter += iLost; //add by aoguihua
		        pMPEdec->bTsContinuous = FALSE;
			    pMPEdec->SectionSync = FALSE;
			}  */

			if (pMPEdec->CurTsCounter > ((pMPEdec->LastTsCounter + 1) & 0x0f))
			{
				iLost = pMPEdec->CurTsCounter - ((pMPEdec->LastTsCounter + 1) & 0x0f);

				pMPEdec->LostTsNum += iLost;
				Adapter->ulLostCounter += iLost; //add by aoguihua
		        pMPEdec->bTsContinuous = FALSE;
			    pMPEdec->SectionSync = FALSE;
				//DbgPrint(("cur > last.\n"));
			}
			else if (pMPEdec->CurTsCounter < ((pMPEdec->LastTsCounter + 1) & 0x0f))
			{
				iLost = pMPEdec->CurTsCounter + 0x10 - ((pMPEdec->LastTsCounter + 1) & 0x0f);

				pMPEdec->LostTsNum += iLost;
				Adapter->ulLostCounter += iLost; //add by aoguihua
		        pMPEdec->bTsContinuous = FALSE;
			    pMPEdec->SectionSync = FALSE;
				//DbgPrint(("cur < last.\n"));
			}
		}

        pMPEdec->LastTsCounter = pMPEdec->CurTsCounter;
    }

    pMPEdec->TotalTsNum++;

    // skip adaptation_field
    TmpLen0 = 0;
    if((pTsheader->adaptation_field == 0x02) || 
		(pTsheader->adaptation_field == 0x03))
    {
        TmpLen0 = 1+TsBuf[sizeof(TSHEAD)];
        if(TmpLen0 >= 184)
		{
		//	DbgPrint(("exit 1.\n"));
            return;
		}
    }

    // decoder section
    TmpLen = sizeof(TSHEAD) + TmpLen0 + 
		pTsheader->start_indicator*(TsBuf[sizeof(TSHEAD)+TmpLen0]+1);
    if(TmpLen >= 188)
	{
	//	DbgPrint(("exit 2.\n"));
        return;
	}

    pPayload = TsBuf+sizeof(TSHEAD)+TmpLen0;
    pSection = TsBuf+TmpLen;

    if(pTsheader->start_indicator)
    {
        // pMPEdec->SectionDone = FALSE;
        if((pMPEdec->SectionSync)&&(pPayload[0] != 0))
        {
            DataLen = pPayload[0];
            if((pMPEdec->CurSectionLen+DataLen) > MPE_MAXSECTIONLEN)
            {
                //Adapter->IPStatistic[pMPEdec->IndexPID].lLostStatistic++;
                //Adapter->ulLostCounter++;

				ToMACPacket(Adapter,pMPEdec);
                pMPEdec->SectionSync = FALSE;
			//	DbgPrint(("to mac 1.\n"));
                //return;
            }

            pSection = pPayload+1;
            NdisMoveMemory(pMPEdec->SectionBuf+pMPEdec->CurSectionLen,pSection,DataLen);
            //memcpy(pMPEdec->SectionBuf+pMPEdec->CurSectionLen,pSection,DataLen);
            pMPEdec->CurSectionLen += DataLen;
            if(pMPEdec->TotalSectionLen == 0)
            {
                pSecheader = (MPE_SECTION_HEAD *)pMPEdec->SectionBuf;
                pMPEdec->TotalSectionLen = pSecheader->section_length1*256+pSecheader->section_length2;
            }

            if(pMPEdec->TotalSectionLen+3 <= pMPEdec->CurSectionLen)
			{
                ToMACPacket(Adapter,pMPEdec);
			}
			else
			{
				//DbgPrint(("to mac 2.\n"));
				ToMACPacket(Adapter,pMPEdec);
			}

            pSection = TsBuf+TmpLen;
        }

        DataLen = 188-TmpLen;
        while(DataLen>0)
        {
            if(pSection[0] != 0x3e)
            {
				if (pMPEdec->SectionSync)
					ToMACPacket(Adapter,pMPEdec);

                pMPEdec->SectionSync = FALSE;
				//DbgPrint(("%x.\n"),pSection[0]);
				//DbgPrint(("exit 3.\n"));
                return;
            } 

            pMPEdec->CurSectionLen = DataLen;
            NdisMoveMemory(pMPEdec->SectionBuf,pSection,DataLen);
            //memcpy(pMPEdec->SectionBuf,pSection,DataLen);
            pMPEdec->SectionSync = TRUE; 
            if( pMPEdec->CurSectionLen >= sizeof(MPE_SECTION_HEAD) )
            {
                pSecheader = (MPE_SECTION_HEAD *)pMPEdec->SectionBuf;
                pMPEdec->TotalSectionLen = pSecheader->section_length1*256+pSecheader->section_length2;
                if( pMPEdec->TotalSectionLen+3 <= pMPEdec->CurSectionLen )
                {
                    ToMACPacket(Adapter,pMPEdec);
                    DataLen -= pMPEdec->TotalSectionLen+3;
                    pSection += pMPEdec->TotalSectionLen+3;

					/*if (pSection[0]>0)
					{
						DataLen -= (pSection[0] + 1);
						pSection += (pSection[0] + 1);
					}*/
                }
                else
				{
					//DbgPrint(("exit 4.\n"));
                    return;
				}
            }
            else
            {
                //Adapter->IPStatistic[pMPEdec->IndexPID].lLostStatistic += 2;
                //Adapter->ulLostCounter += 2;

                pMPEdec->TotalSectionLen = 0;
			//	DbgPrint(("exit 5.\n"));
                return;
            }
        }
    }
    else if(pMPEdec->SectionSync)
    {
        DataLen = 188-TmpLen;
        if( (pMPEdec->CurSectionLen+DataLen) >MPE_MAXSECTIONLEN)
        {
            //Adapter->IPStatistic[pMPEdec->IndexPID].lLostStatistic += 2;
            //Adapter->ulLostCounter += 2;
		//	DbgPrint(("to mac 4.\n"));
			ToMACPacket(Adapter,pMPEdec);

            pMPEdec->SectionSync = FALSE;
            return;
        }

        NdisMoveMemory(pMPEdec->SectionBuf+pMPEdec->CurSectionLen,pSection,DataLen);
        //memcpy(pMPEdec->SectionBuf+pMPEdec->CurSectionLen,pSection,DataLen);
        pMPEdec->CurSectionLen += DataLen;
        if( pMPEdec->TotalSectionLen == 0 )
        {
            pSecheader = (MPE_SECTION_HEAD *)pMPEdec->SectionBuf;
            pMPEdec->TotalSectionLen = pSecheader->section_length1*256+pSecheader->section_length2;
        }
        if( pMPEdec->TotalSectionLen+3 <= pMPEdec->CurSectionLen )
		{
            ToMACPacket(Adapter,pMPEdec);
		}
    }
}


typedef unsigned char       BYTE;
typedef unsigned short      WORD;
typedef unsigned long       DWORD;


WORD IPchksum(WORD* pDATA,WORD len)
{
	DWORD sum;
	
	sum=0x00000000;
	while(len>1)
	{
		sum+=*pDATA++;
		len-=2;
	}
	
	if(len==1)
	        sum+=(*(BYTE*)pDATA);
	        
	sum=(sum>>16)+(sum&0x0000FFFF);
	sum+=(sum>>16);
	
	return ( (WORD)( (~sum)&0x0000FFFF) );	
	
}



void ToMACPacket(IN PRTFAST_ADAPTER Adapter, IN MPE_DECODER *pMPEdec)
{
    MPE_SECTION_HEAD *pSecheader = (MPE_SECTION_HEAD *)pMPEdec->SectionBuf;
    SHORT IPLen, SectionDataLen;
	WORD crc,continueCnt;
    PUCHAR pIPstart = pMPEdec->SectionBuf + sizeof(MPE_SECTION_HEAD);
	PUCHAR temp;
	WORD i,j;
    ULONG ulRecIP, IndicateLen, ulRecMAC;
    UCHAR bFilterPass = 0, DstMAC[RTFAST_LENGTH_OF_ADDRESS] = {0x01,0x00,0x5e,};
    int ii;

    IPLen = (pIPstart[2]<<8) + pIPstart[3];

    /*SectionDataLen = pMPEdec->CurSectionLen-sizeof(MPE_SECTION_HEAD)-4;
    if( IPLen > SectionDataLen )
    {
        //Adapter->IPStatistic[pMPEdec->IndexPID].lLostStatistic++;
        //Adapter->ulLostCounter++;
        return;
    }*/

	// destination
    pMPEdec->MACheader[0] = pSecheader->MAC_address1;
    pMPEdec->MACheader[1] = pSecheader->MAC_address2;
    pMPEdec->MACheader[2] = pSecheader->MAC_address3;
    pMPEdec->MACheader[3] = pSecheader->MAC_address4;
    pMPEdec->MACheader[4] = pSecheader->MAC_address5;
    pMPEdec->MACheader[5] = pSecheader->MAC_address6;
    NdisZeroMemory(pMPEdec->MACheader+6,6);// source
    //memset(pMPEdec->MACheader+6,0x00,6);// source
    pMPEdec->MACheader[12] = 0x08;  // MAC protocol
    pMPEdec->MACheader[13] = 0x00;

	//DbgPrint(("num=%d,last=%d.\n"),pSecheader->section_number,pSecheader->last_section_number);
    
    pMPEdec->SectionSync = FALSE;

    pMPEdec->IPbuf = pIPstart;
    pMPEdec->IPPacketLen = IPLen;
    Adapter->CurMPEdec = pMPEdec;

    if(Adapter->PacketFilter & (NDIS_PACKET_TYPE_ALL_MULTICAST |
                                 NDIS_PACKET_TYPE_PROMISCUOUS))
    {
        bFilterPass = 1;
    }

    //statistics
    ulRecIP = ( (pIPstart[16]<<24)|(pIPstart[17]<<16)|(pIPstart[18]<<8)|(pIPstart[19]) );
	ulRecMAC = (pMPEdec->MACheader[0] << 16) | (pMPEdec->MACheader[1] << 8) | pMPEdec->MACheader[2];


    //if(((pIPstart[16]&0xF0) == 0xE0) || (ulRecMAC == 0x01005e))//Muticast
	if( (pIPstart[16]&0xF0)==0xE0 )//Muticast
    {

        /*if(!bFilterPass)
        {
            DstMAC[3] = 0x7F&pIPstart[17];
            DstMAC[4] = pIPstart[18];
            DstMAC[5] = pIPstart[19];
            for(ii = 0; ii<MAX_IP_FILTERPID_NUM; ii++)
			{
                if(!memcmp(Adapter->Addresses[ii],DstMAC,RTFAST_LENGTH_OF_ADDRESS))
                {
                    bFilterPass = 1;
                   break;
                }
			}
        }*/

		DbgPrint(("to multi.\n"));
       // if(bFilterPass)
            Adapter->llRxMulticastBytes += IPLen+RTFAST_HEADER_SIZE; 

    } 
    else if( ((pIPstart[16]&0x80) == 0x00)||((pIPstart[16]&0xC0) == 0x80)||((pIPstart[16]&0xE0) == 0xC0))//Unicast
    {
        //unicast filter
        BOOLEAN  bMACpass = FALSE, bIPpass = FALSE;

        if(Adapter->bMACorIPfiltr == FALSE)
        {
            if( (pMPEdec->MACheader[0] == Adapter->StationAddress[0]) &&
                (pMPEdec->MACheader[1] == Adapter->StationAddress[1]) &&
                (pMPEdec->MACheader[2] == Adapter->StationAddress[2]) &&
                (pMPEdec->MACheader[3] == Adapter->StationAddress[3]) &&
                (pMPEdec->MACheader[4] == Adapter->StationAddress[4]) &&
                (pMPEdec->MACheader[5] == Adapter->StationAddress[5]))
                bMACpass = TRUE;

			DbgPrint(("to 2.\n"));
        }
        else
        {
            if(ulRecIP == Adapter->UnicastIPFilter)
            {
                pMPEdec->MACheader[0] = Adapter->StationAddress[0];
                pMPEdec->MACheader[1] = Adapter->StationAddress[1];
                pMPEdec->MACheader[2] = Adapter->StationAddress[2];
                pMPEdec->MACheader[3] = Adapter->StationAddress[3];
                pMPEdec->MACheader[4] = Adapter->StationAddress[4];
                pMPEdec->MACheader[5] = Adapter->StationAddress[5];
                bIPpass = TRUE;
				DbgPrint(("to 3.\n"));
            }
        }

        if( !( bMACpass||bIPpass ) )
		{
			DbgPrint(("to 4.\n"));
            return;
		}

        Adapter->llRxUnicastBytes = IPLen+RTFAST_HEADER_SIZE;
        Adapter->ulRxUnicastIP = ulRecIP;

        bFilterPass = 1;

		DbgPrint(("to 5.\n"));
		pMPEdec->RxStatistic += IPLen+RTFAST_HEADER_SIZE;
    }  
    
   // if(!bFilterPass)
  //      return;

    // Modified by hanney on May 28th 2005
    //pMPEdec->RxStatistic += IPLen+RTFAST_HEADER_SIZE;
    Adapter->IPStatistic[pMPEdec->IndexPID].lRxStatistic += IPLen+RTFAST_HEADER_SIZE;
    Adapter->IPStatistic[pMPEdec->IndexPID].lRxFrameStatistic++;
    // ****
    Adapter->TotalTransmitBytes.LowPart += IPLen+RTFAST_HEADER_SIZE;
    if(Adapter->TotalTransmitBytes.LowPart < (ULONG)IPLen+RTFAST_HEADER_SIZE)
        Adapter->TotalTransmitBytes.HighPart++;

    Adapter->FramesRcvGood++;

    IndicateLen = ((UINT)IPLen+RTFAST_HEADER_SIZE) > (Adapter->MaxLookAhead + RTFAST_HEADER_SIZE) ?
            (Adapter->MaxLookAhead + RTFAST_HEADER_SIZE) :
            (IPLen+RTFAST_HEADER_SIZE);


    NdisMEthIndicateReceive(
            Adapter->MiniportAdapterHandle,
            (NDIS_HANDLE)Adapter,
            (PCHAR)(pMPEdec->MACheader),
            RTFAST_HEADER_SIZE,
            (PCHAR)pIPstart,
            IndicateLen,
            IPLen
            ); 
    Adapter->IndicateReceiveDone = TRUE;

//19970721
    //
    // Finally, indicate ReceiveComplete to all protocols which received packets
    //
    if(Adapter->IndicateReceiveDone)
    {
        NdisMEthIndicateReceiveComplete(Adapter->MiniportAdapterHandle);
        Adapter->IndicateReceiveDone = FALSE;
    }
//19970721

	Adapter->FramesXmitGood++;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美激情综合五月色丁香小说| 欧美视频在线观看一区| 丰满少妇在线播放bd日韩电影| 色综合久久综合| 欧美精品一区二区三区蜜桃| 一区二区视频在线看| 久久国内精品自在自线400部| 日本高清成人免费播放| 久久网站热最新地址| 亚洲成国产人片在线观看| 成人深夜在线观看| 欧美电视剧在线看免费| 午夜精品免费在线观看| 99视频一区二区三区| 26uuu欧美日本| 麻豆国产欧美一区二区三区| 欧美三级在线播放| 亚洲日本护士毛茸茸| 久久国产精品72免费观看| 欧美日韩国产精品自在自线| 一区二区三区四区中文字幕| caoporen国产精品视频| 中文字幕欧美日韩一区| 国产精品综合一区二区三区| 欧美成人一区二区三区| 人人狠狠综合久久亚洲| 欧美日韩黄色一区二区| 婷婷综合久久一区二区三区| 欧美三级中文字| 午夜一区二区三区视频| 成人高清视频免费观看| 国产欧美1区2区3区| 麻豆精品在线播放| 欧美另类z0zxhd电影| 亚洲韩国精品一区| 欧美日韩亚洲国产综合| 亚洲永久免费视频| 欧美网站大全在线观看| 亚洲午夜一区二区三区| 91精品国产综合久久精品app| 五月天亚洲精品| 欧美一区二区在线免费播放| 日本不卡视频在线| 精品日韩在线观看| 国产精品一卡二| 亚洲欧洲av在线| 在线观看成人小视频| 五月天亚洲婷婷| 久久综合久久综合久久综合| 成人性生交大片免费| 亚洲欧美一区二区不卡| 欧美色区777第一页| 日韩电影在线一区| 久久久久久**毛片大全| 成人av在线播放网址| 亚洲另类色综合网站| 欧美日本一区二区三区| 久久99精品久久久久久| 欧美激情艳妇裸体舞| 色综合欧美在线视频区| 美女视频黄免费的久久 | 午夜天堂影视香蕉久久| 欧美成人精品高清在线播放| 丰满白嫩尤物一区二区| 亚洲国产精品嫩草影院| 久久精品人人爽人人爽| 欧美日韩亚洲综合一区二区三区| 麻豆成人综合网| 亚洲欧洲精品一区二区精品久久久 | 国产精品视频看| 国产91色综合久久免费分享| 综合在线观看色| 欧美精品tushy高清| 国产成人小视频| 午夜影院久久久| 国产精品久久久久7777按摩| 欧美剧在线免费观看网站| 国产成人一级电影| 亚洲成av人片一区二区三区| 日本一区二区成人在线| 欧美一区二区啪啪| 91一区二区三区在线观看| 极品瑜伽女神91| 亚洲国产中文字幕在线视频综合| 欧美高清在线精品一区| 精品国产成人在线影院 | 亚洲一区二区三区影院| 久久婷婷综合激情| 欧美日韩精品一区二区三区蜜桃 | 久久久国产午夜精品| 欧美日韩一级二级三级| 成人免费毛片aaaaa**| 日韩中文字幕1| 亚洲综合色成人| 中文字幕一区二区三区在线不卡| 欧美成人乱码一区二区三区| 欧美伦理电影网| 91福利在线看| 91视频com| zzijzzij亚洲日本少妇熟睡| 国产精品一卡二卡| 国模一区二区三区白浆| 麻豆视频一区二区| 日韩有码一区二区三区| 五月综合激情婷婷六月色窝| 亚洲夂夂婷婷色拍ww47| 亚洲伦理在线精品| 国产精品久久久久久亚洲毛片| 欧美大胆一级视频| 91精品国产全国免费观看| 欧美日韩久久久久久| 欧洲激情一区二区| 色欧美乱欧美15图片| 色屁屁一区二区| 欧美三级视频在线观看 | 成人精品视频.| 国产99精品在线观看| 成人免费视频免费观看| 99国内精品久久| 色婷婷综合久久久中文一区二区 | 91亚洲国产成人精品一区二三 | 久久99精品视频| 黄色小说综合网站| 激情另类小说区图片区视频区| 国产麻豆一精品一av一免费 | 国产人伦精品一区二区| 久久久一区二区三区| 亚洲精品va在线观看| 精品蜜桃在线看| 久久久蜜臀国产一区二区| 久久精品一区二区| 中文字幕一区二区三区精华液| 1000精品久久久久久久久| 亚洲黄色尤物视频| 日韩精品免费视频人成| 黑人巨大精品欧美黑白配亚洲| 国产成人精品1024| 色哟哟在线观看一区二区三区| 精品视频一区三区九区| 日韩精品一区在线| 亚洲国产精华液网站w| 亚洲黄一区二区三区| 蜜桃视频一区二区| 国产不卡高清在线观看视频| 色屁屁一区二区| 日韩精品一区二区三区中文精品| 国产欧美一区二区在线观看| 亚洲欧美日韩综合aⅴ视频| 午夜精品123| 国产成人av自拍| 欧美日韩在线三级| 国产无一区二区| 日精品一区二区三区| 成人激情开心网| 欧美一级午夜免费电影| 欧美日韩免费电影| 国产一区二区三区四区在线观看| 成人一道本在线| 欧美乱熟臀69xxxxxx| 国产日韩精品一区二区三区在线| 怡红院av一区二区三区| 国产一区二区主播在线| 欧美无人高清视频在线观看| 国产午夜精品美女毛片视频| 亚洲成人黄色小说| a4yy欧美一区二区三区| 精品国产乱子伦一区| 亚洲在线视频一区| 国产99精品在线观看| 日韩欧美电影一二三| 国产精品国产三级国产aⅴ中文| 青椒成人免费视频| 91福利资源站| 国产精品萝li| 国产精品一二三在| 91精品国产综合久久香蕉麻豆| 伊人夜夜躁av伊人久久| 国产伦精品一区二区三区免费| 这里是久久伊人| 亚洲午夜在线观看视频在线| 99国产精品一区| 中文一区在线播放| 韩国精品久久久| 4438x亚洲最大成人网| 亚洲一区日韩精品中文字幕| 成人精品视频网站| 国产午夜三级一区二区三| 久久机这里只有精品| 日韩一级片网站| 日本美女视频一区二区| 欧美午夜片在线看| 亚洲综合999| 欧美三级韩国三级日本一级| 一区二区三区加勒比av| 色成人在线视频| 亚洲欧美电影一区二区| 色哟哟国产精品免费观看| 亚洲欧美日韩国产手机在线| 99re热这里只有精品免费视频| 国产精品国产自产拍高清av王其|