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

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

?? interrup.c

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

Copyright (c) 1999 SDMC Co., Ltd.

Module Name:

    interrup.c
    rtsnt.c

Abstract:

    This is the main file for the DVB-S fast modem NIC.
    This driver conforms to the NDIS 5.0 miniport interface.

    The overall structure and much of the code is taken from
    the NE2000 driver included in Microsoft NT3.5 DDK.


Environment:

    Kernel Mode - Or whatever is the equivalent on OS/2 and DOS.

Revision History:

    12/11/96 ----- Vincent

--*/

#include <ndis.h>
#include "RTSNT_SW.H"
#include "bit.h"
//#include "descramble.h"
//
// On debug builds tell the compiler to keep the symbols for
// internal functions, otw throw them out.
//
#if DBG
#define STATIC
#else
#define STATIC static
#endif

#define RESET_BADDATA_NUM    32

/*++

Routine Description:

    This routine is used to turn on the interrupt mask.

Arguments:

    Context - The adapter for the RTL8139 to start.

Return Value:

    None.

--*/

VOID
RTFast_EnableInterrupt(
    IN NDIS_HANDLE MiniportAdapterContext
    )
{
}



/*++

Routine Description:

    This routine is used to turn off the interrupt mask.

Arguments:

    Context - The adapter for the RTL8139 to start.

Return Value:

    None.

--*/

VOID
RTFast_DisableInterrupt(
    IN NDIS_HANDLE MiniportAdapterContext
    )
{
}


VOID
RTFast_Isr(
    OUT PBOOLEAN InterruptRecognized,
    OUT PBOOLEAN QueueDpc,
    IN PVOID Context
    )
{
    PRTFAST_ADAPTER Adapter = ((PRTFAST_ADAPTER)Context);
    UCHAR TmpStatus, TmpMask;

#if DBG
    //DbgPrint("<<<<--- Enter RTFast Isr !\n");
#endif

	*InterruptRecognized = FALSE;
    *QueueDpc = FALSE;

    return;
}
/*++

Routine Description:

    This is the defered processing routine for interrupts.  It
    reads from the Interrupt Status Register any outstanding
    interrupts and handles them.

Arguments:

    MiniportAdapterContext - a handle to the adapter block.

Return Value:

    NONE.

--*/
VOID
RTFast_HandleInterrupt(
    IN NDIS_HANDLE MiniportAdapterContext
    )
{
    PRTFAST_ADAPTER     Adapter = ((PRTFAST_ADAPTER)MiniportAdapterContext);
    UCHAR               TmpStatus;//, imr_rxovw;
    BOOLEAN             DidSomething = TRUE;

#if DBG
    DbgPrint(" >>"); //"\n-->> Enter RTFast HandleInterrupt !\n");
#endif

	return;
}

#define MINDMABUFDATA  564           // 3*188
#define ONCE_DATASIZE  376
//#define MINDMABUFDATA  376           // 2*188
//#define ONCE_DATASIZE  376


/*++

Routine Description:

    This is the real interrupt handler for receive/overflow interrupt.

    Called when a receive interrupt is received. It first indicates
    all packets on the card and finally indicates ReceiveComplete().

Arguments:

    Adapter - Pointer to the adapter block.

Return Value:

    TRUE if done with all receives, else FALSE.

--*/

BOOLEAN
RTFast_RcvDpc(
    IN PRTFAST_ADAPTER Adapter
    )
{
    return (TRUE);              //Done
}

/*++
				
Routine Description:
				  
    Reads a packet off the card -- checking if the CRC is good.  This is
    a workaround for a bug where bytes in the data portion of the packet
    are shifted either left or right by two in some weird 8390 cases.
					
	This routine is a combination of Rtl8139TransferData (to copy up data
    from the card), CardCalculateCrc and CardCalculatePacketCrc.
					  
Arguments:
						
    Adapter - pointer to the adapter block.

    Return Value:

    TRUE if the packet seems ok, else false.

--*/


/*++

Routine Description:

    Indicates the first packet on the card to the protocols.

NOTE: For MP, non-x86 architectures, this assumes that the packet has been
    read from the card and into Adapter->PacketHeader and Adapter->Lookahead.

NOTE: For UP x86 systems this assumes that the packet header has been
    read into Adapter->PacketHeader and the minimal lookahead stored in
    Adapter->Lookahead

Arguments:

    Adapter - pointer to the adapter block.

Return Value:

    CARD_BAD if the card should be reset;
    INDICATE_OK otherwise.

--*/
										
/*++

Routine Description:

    A protocol calls the Rtl8139TransferData request (indirectly via
    NdisTransferData) from within its Receive event handler
    to instruct the driver to copy the contents of the received packet
    a specified packet buffer.

Arguments:

    MiniportAdapterContext - Context registered with the wrapper, really
        a pointer to the adapter.

    MiniportReceiveContext - The context value passed by the driver on its call
    to NdisMEthIndicateReceive.  The driver can use this value to determine
    which packet, on which adapter, is being received.

    ByteOffset - An unsigned integer specifying the offset within the
    received packet at which the copy is to begin.  If the entire packet
    is to be copied, ByteOffset must be zero.

    BytesToTransfer - An unsigned integer specifying the number of bytes
    to copy.  It is legal to transfer zero bytes; this has no effect.  If
    the sum of ByteOffset and BytesToTransfer is greater than the size
    of the received packet, then the remainder of the packet (starting from
    ByteOffset) is transferred, and the trailing portion of the receive
    buffer is not modified.

    Packet - A pointer to a descriptor for the packet storage into which
    the MAC is to copy the received packet.

    BytesTransfered - A pointer to an unsigned integer.  The MAC writes
    the actual number of bytes transferred into this location.  This value
    is not valid if the return status is STATUS_PENDING.

Notes:

  - The MacReceiveContext will be a pointer to the open block for
    the packet.

--*/
NDIS_STATUS
RTFast_TransferData(
    OUT PNDIS_PACKET Packet,
    OUT PUINT BytesTransferred,
    IN NDIS_HANDLE MiniportAdapterContext,
    IN NDIS_HANDLE MiniportReceiveContext,
    IN UINT ByteOffset,
    IN UINT BytesToTransfer
    )
{
    //
    // Variables for the number of bytes to copy, how much can be
    // copied at this moment, and the total number of bytes to copy.
    //
    UINT BytesLeft, BytesNow, BytesWanted;

    //
    // Current NDIS_BUFFER to copy into
    //
    PNDIS_BUFFER CurBuffer;

    //
    // Virtual address of the buffer.
    //
    PUCHAR BufStart;
    PUCHAR XferPageStart;

    //
    // Length and offset into the buffer.
    //
    UINT BufLen, BufOff;

    //
    // The adapter to transfer from.
    //
    PRTFAST_ADAPTER Adapter = (PRTFAST_ADAPTER)MiniportReceiveContext;
    MPE_DECODER *CurMPEdec = Adapter->CurMPEdec;

    //
    // Add the packet header onto the offset.
    //
    XferPageStart = (UCHAR *)CurMPEdec->IPbuf;
    XferPageStart += ByteOffset;

    //
    // See how much data there is to transfer.
    //
    if(ByteOffset+BytesToTransfer > CurMPEdec->IPPacketLen)
    {
        if((CurMPEdec->IPPacketLen) < ByteOffset)
        {
            *BytesTransferred = 0;

            return(NDIS_STATUS_FAILURE);
        }
        BytesWanted = CurMPEdec->IPPacketLen - ByteOffset;
    }
    else
    {
        BytesWanted = BytesToTransfer;
    }

    //
    // Set the number of bytes left to transfer
    //
    NdisDprAcquireSpinLock(&Adapter->RTFAST_SpinLock);
    BytesLeft = BytesWanted;

    {
        //
        // Address on the adapter to copy from
        //
        PUCHAR CurCardLoc;
        //
        // Copy data from the card -- it is not completely stored in the
        // adapter structure.
        //
        // Determine where the copying should start.
        //
        CurCardLoc = XferPageStart;

        //
        // Get location to copy into
        //
        NdisQueryPacket(Packet, NULL, NULL, &CurBuffer, NULL);

        NdisQueryBuffer(CurBuffer, (PVOID *)&BufStart, &BufLen);
        BufOff = 0;
        // Loop, filling each buffer in the packet until there
        // are no more buffers or the data has all been copied.
        while (BytesLeft > 0)
        {
            // See how much data to read into this buffer.
            if((BufLen-BufOff) > BytesLeft)
            {
                BytesNow = BytesLeft;
            }
            else
            {
                BytesNow = (BufLen - BufOff);
            }
            // Copy up the data.
            NdisMoveMemory(BufStart+BufOff, CurCardLoc, BytesNow);
            // Update offsets and counts
            CurCardLoc += BytesNow;
            BytesLeft -= BytesNow;
            // Is the transfer done now?
            if(BytesLeft == 0)
            {
                break;
            }
            // Was the end of this packet buffer reached?
            BufOff += BytesNow;
            if(BufOff == BufLen)
            {
                NdisGetNextBuffer(CurBuffer, &CurBuffer);
                if(CurBuffer == (PNDIS_BUFFER)NULL)
                {
                    break;
                }
                NdisQueryBuffer(CurBuffer, (PVOID *)&BufStart, &BufLen);
                BufOff = 0;
            }
        }

        NdisDprReleaseSpinLock(&Adapter->RTFAST_SpinLock);

        *BytesTransferred = BytesWanted - BytesLeft;

        return(NDIS_STATUS_SUCCESS);
    }
}


void DecodeIP(IN PRTFAST_ADAPTER Adapter,IN PUCHAR TsBuf)
{
    PLIST_ENTRY thisEntry; //, listHead;
    MPE_DECODER *CurMPEdec;
    USHORT wPID = 0x1FFF & ((TsBuf[1]<<8)|TsBuf[2]);
    UCHAR  ii = 0;

    NdisDprAcquireSpinLock(&Adapter->MPEdecSpinLock);
    while(thisEntry = NdisInterlockedRemoveHeadList(
                        &Adapter->ListMPEdec,
                        &Adapter->MPEListSpinLock
                        ))
    {
        CurMPEdec = CONTAINING_RECORD(thisEntry,
                                MPE_DECODER,
                                ListEntry);

        if(CurMPEdec->wPID == wPID)
        {
            ToMPESection(Adapter, CurMPEdec, TsBuf);
            NdisInterlockedInsertHeadList(
                    &Adapter->ListMPEdec,
                    thisEntry,
                    &Adapter->MPEListSpinLock
                    );
            break;
        }
        else
            NdisInterlockedInsertTailList(
                    &Adapter->ListMPEdec,
                    thisEntry,
                    &Adapter->MPEListSpinLock

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
高清成人在线观看| 国产日韩三级在线| 丝袜国产日韩另类美女| 欧美性生交片4| 日韩精品色哟哟| 欧美一级一区二区| 久久91精品国产91久久小草| 日韩一区二区在线看片| 国产很黄免费观看久久| 国产精品久久网站| 色综合天天综合狠狠| 一区二区三区精品久久久| 欧美日韩国产小视频| 肉色丝袜一区二区| 久久亚洲综合av| av爱爱亚洲一区| 日日摸夜夜添夜夜添国产精品 | 最近日韩中文字幕| 一本到高清视频免费精品| 亚洲超碰97人人做人人爱| 欧美一区二区精品| 成人午夜看片网址| 日本中文字幕一区二区有限公司| 欧美xxxxx裸体时装秀| 成人毛片视频在线观看| 亚洲不卡在线观看| 欧美激情在线一区二区三区| 在线观看一区二区视频| 九色综合狠狠综合久久| 亚洲欧美在线aaa| 欧美一二三区在线| 色婷婷狠狠综合| 国产美女在线观看一区| 一片黄亚洲嫩模| 久久午夜老司机| 欧美日韩中字一区| 成熟亚洲日本毛茸茸凸凹| 日韩精品一二三四| 欧美经典一区二区| 337p亚洲精品色噜噜噜| 99精品视频在线观看| 麻豆国产欧美日韩综合精品二区 | 国产精品天美传媒| 欧美一区二区视频在线观看2020 | 午夜久久久久久久久| 中文字幕乱码日本亚洲一区二区 | 国产精品一区专区| 亚洲成人综合视频| 一区二区中文视频| 久久精品人人做| 欧美一级一级性生活免费录像| 91老师国产黑色丝袜在线| 国产精品一级在线| 美女任你摸久久 | 免费人成黄页网站在线一区二区| 中文字幕永久在线不卡| 欧美精品一区二区蜜臀亚洲| 欧美日韩一区三区| 欧洲精品在线观看| 91麻豆免费看片| 成人国产电影网| 国产一区欧美日韩| 久久99久久久欧美国产| 日韩电影在线一区二区| 亚洲一卡二卡三卡四卡| 亚洲丝袜美腿综合| 国产精品视频一二三区| 国产亚洲精品超碰| 国产亚洲va综合人人澡精品| 日韩欧美国产一区二区在线播放| 欧美精品一卡二卡| 5858s免费视频成人| 欧美日韩日本视频| 欧美日本一区二区三区四区| 欧美在线高清视频| 欧洲精品在线观看| 欧美日韩国产精选| 在线不卡a资源高清| 欧美久久一区二区| 6080午夜不卡| 日韩欧美国产一二三区| 精品美女在线播放| 欧美精品一区二区三区很污很色的| 日韩欧美国产一区二区在线播放 | 白白色亚洲国产精品| 成人免费观看av| 99久久777色| 欧美影院精品一区| 91精品国产色综合久久不卡蜜臀| 91精品国产综合久久精品app| 欧美—级在线免费片| 欧美极品少妇xxxxⅹ高跟鞋 | 国产片一区二区| 国产精品电影一区二区| 亚洲精品国久久99热| 亚洲一区二区偷拍精品| 五月天中文字幕一区二区| 美国精品在线观看| 国产大陆a不卡| 91香蕉视频mp4| 欧美精品v国产精品v日韩精品| 日韩精品一区二区三区视频播放| 久久美女艺术照精彩视频福利播放| 欧美国产欧美亚州国产日韩mv天天看完整 | 日韩美女视频一区| 亚洲综合区在线| 日本午夜精品视频在线观看| 国产精品一区免费在线观看| 99久久综合99久久综合网站| 欧美日韩在线播放三区| 欧美va亚洲va在线观看蝴蝶网| 国产人成一区二区三区影院| 亚洲精品高清在线观看| 免费亚洲电影在线| 91在线视频官网| 7777精品伊人久久久大香线蕉经典版下载 | 亚洲成av人片在线观看无码| 国产真实乱偷精品视频免| 91免费观看在线| 91精品国产入口在线| 国产精品入口麻豆九色| 午夜精品久久一牛影视| 国产白丝网站精品污在线入口| 欧美在线短视频| 国产亚洲精品免费| 污片在线观看一区二区| 成+人+亚洲+综合天堂| 8x8x8国产精品| 综合久久一区二区三区| 毛片av中文字幕一区二区| 97成人超碰视| 精品国产伦一区二区三区免费| 亚洲女同一区二区| 国产一区二区三区免费看| 欧美日韩一区二区三区免费看| 国产丝袜在线精品| 免费观看在线色综合| 欧美丝袜丝交足nylons图片| 国产片一区二区三区| 麻豆成人久久精品二区三区红 | 99国产精品久久久久久久久久| 欧美日韩国产综合视频在线观看| 国产欧美一区二区三区鸳鸯浴 | 欧美日韩国产不卡| 国产精品女同互慰在线看| 久久精品国产亚洲a| 欧美三级电影在线看| 亚洲丝袜精品丝袜在线| 国产成人精品免费在线| 日韩欧美二区三区| 日韩av一区二区在线影视| 欧美性色aⅴ视频一区日韩精品| 中文字幕亚洲综合久久菠萝蜜| 韩国中文字幕2020精品| 日韩亚洲欧美高清| 喷白浆一区二区| 91精品在线免费| 视频一区视频二区在线观看| 欧美日韩中文国产| 亚洲国产精品久久人人爱| 色欧美88888久久久久久影院| 国产精品女人毛片| 成人avav在线| 中文字幕一区二区三区在线播放 | 欧美亚洲图片小说| 亚洲免费观看高清完整版在线观看| av成人老司机| 亚洲伦理在线精品| 91久久精品一区二区| 亚洲欧美一区二区久久| 色综合久久六月婷婷中文字幕| 成人欧美一区二区三区黑人麻豆| 成人免费观看男女羞羞视频| 中文字幕视频一区| 色综合久久中文综合久久97| 一区二区三区在线视频观看58| 在线一区二区三区四区五区| 一区二区三区精品| 欧美日韩一级二级三级| 三级欧美韩日大片在线看| 欧美大片拔萝卜| 国产综合久久久久影院| 中日韩免费视频中文字幕| av一本久道久久综合久久鬼色| 亚洲人精品午夜| 在线免费不卡视频| 91视视频在线观看入口直接观看www| 国产精品久久久久久久久免费相片 | 欧美日韩一区久久| 美女视频一区在线观看| 欧美激情在线一区二区| 色婷婷av一区二区三区大白胸| 亚洲电影视频在线| 欧美成人福利视频| 丰满放荡岳乱妇91ww| 有码一区二区三区| 日韩一二三区视频| 波多野结衣在线一区| 亚洲一区二区在线免费观看视频 | 久久久精品综合|