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

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

?? ne2000sw.h

?? 使用網絡驅動器接口標準開發的ne2000網卡的NT驅動.
?? H
?? 第 1 頁 / 共 2 頁
字號:
/*++

Copyright (c) 1990-1998 Microsoft Corporation, All Rights Reserved.

Module Name:

    ne2000sw.h

Abstract:

    The main header for an Novell 2000 Miniport driver.

Author:

    Sean Selitrennikoff

Environment:

    Architecturally, there is an assumption in this driver that we are
    on a little endian machine.

Notes:

    optional-notes

Revision History:

--*/

#ifndef _NE2000SFT_
#define _NE2000SFT_

#define NE2000_NDIS_MAJOR_VERSION 3
#define NE2000_NDIS_MINOR_VERSION 0

//
// This macro is used along with the flags to selectively
// turn on debugging.
//

#if DBG

#define IF_NE2000DEBUG(f) if (Ne2000DebugFlag & (f))
extern ULONG Ne2000DebugFlag;

#define NE2000_DEBUG_LOUD               0x00000001  // debugging info
#define NE2000_DEBUG_VERY_LOUD          0x00000002  // excessive debugging info
#define NE2000_DEBUG_LOG                0x00000004  // enable Ne2000Log
#define NE2000_DEBUG_CHECK_DUP_SENDS    0x00000008  // check for duplicate sends
#define NE2000_DEBUG_TRACK_PACKET_LENS  0x00000010  // track directed packet lens
#define NE2000_DEBUG_WORKAROUND1        0x00000020  // drop DFR/DIS packets
#define NE2000_DEBUG_CARD_BAD           0x00000040  // dump data if CARD_BAD
#define NE2000_DEBUG_CARD_TESTS         0x00000080  // print reason for failing

//
// Macro for deciding whether to print a lot of debugging information.
//

#define IF_LOUD(A) IF_NE2000DEBUG( NE2000_DEBUG_LOUD ) { A }
#define IF_VERY_LOUD(A) IF_NE2000DEBUG( NE2000_DEBUG_VERY_LOUD ) { A }

//
// Whether to use the Ne2000Log buffer to record a trace of the driver.
//
#define IF_LOG(A) IF_NE2000DEBUG( NE2000_DEBUG_LOG ) { A }
extern VOID Ne2000Log(UCHAR);

//
// Whether to do loud init failure
//
#define IF_INIT(A) A

//
// Whether to do loud card test failures
//
#define IF_TEST(A) IF_NE2000DEBUG( NE2000_DEBUG_CARD_TESTS ) { A }

#else

//
// This is not a debug build, so make everything quiet.
//
#define IF_LOUD(A)
#define IF_VERY_LOUD(A)
#define IF_LOG(A)
#define IF_INIT(A)
#define IF_TEST(A)

#endif




//
// Adapter->NumBuffers
//
// controls the number of transmit buffers on the packet.
// Choices are 1 through 12.
//

#define DEFAULT_NUMBUFFERS 12


//
// Create a macro for moving memory from place to place.  Makes
// the code more readable and portable in case we ever support
// a shared memory Ne2000 adapter.
//
#define NE2000_MOVE_MEM(dest,src,size) NdisMoveMemory(dest,src,size)

//
// The status of transmit buffers.
//

typedef enum {
    EMPTY = 0x00,
    FULL = 0x02
} BUFFER_STATUS;

//
// Type of an interrupt.
//

typedef enum {
    RECEIVE    = 0x01,
    TRANSMIT   = 0x02,
    OVERFLOW   = 0x04,
    COUNTER    = 0x08,
    UNKNOWN    = 0x10
} INTERRUPT_TYPE;

//
// Result of Ne2000IndicatePacket().
//
typedef enum {
    INDICATE_OK,
    SKIPPED,
    ABORT,
    CARD_BAD
} INDICATE_STATUS;



//
// Size of the ethernet header
//
#define NE2000_HEADER_SIZE 14

//
// Size of the ethernet address
//
#define NE2000_LENGTH_OF_ADDRESS 6

//
// Number of bytes allowed in a lookahead (max)
//
#define NE2000_MAX_LOOKAHEAD (252 - NE2000_HEADER_SIZE)

//
// Maximum number of transmit buffers on the card.
//
#define MAX_XMIT_BUFS   12

//
// Definition of a transmit buffer.
//
typedef UINT XMIT_BUF;

//
// Number of 256-byte buffers in a transmit buffer.
//
#define BUFS_PER_TX 1

//
// Size of a single transmit buffer.
//
#define TX_BUF_SIZE (BUFS_PER_TX*256)




//
// This structure contains information about the driver
// itself.  There is only have one of these structures.
//
typedef struct _DRIVER_BLOCK {

    //
    // NDIS wrapper information.
    //
    NDIS_HANDLE NdisMacHandle;          // returned from NdisRegisterMac
    NDIS_HANDLE NdisWrapperHandle;      // returned from NdisInitializeWrapper

    //
    // Adapters registered for this Miniport driver.
    //
    struct _NE2000_ADAPTER * AdapterQueue;

} DRIVER_BLOCK, * PDRIVER_BLOCK;



//
// This structure contains all the information about a single
// adapter that this driver is controlling.
//
typedef struct _NE2000_ADAPTER {

    //
    // This is the handle given by the wrapper for calling ndis
    // functions.
    //
    NDIS_HANDLE MiniportAdapterHandle;

    //
    // Interrupt object.
    //
    NDIS_MINIPORT_INTERRUPT Interrupt;

    //
    // used by DriverBlock->AdapterQueue
    //
    struct _NE2000_ADAPTER * NextAdapter;

    //
    // This is a count of the number of receives that have been
    // indicated in a row.  This is used to limit the number
    // of sequential receives so that one can periodically check
    // for transmit complete interrupts.
    //
    ULONG ReceivePacketCount;

    //
    // Configuration information
    //

    //
    // Number of buffer in this adapter.
    //
    UINT NumBuffers;

    //
    // Physical address of the IoBaseAddress
    //
    PVOID IoBaseAddr;

    //
    // Interrupt number this adapter is using.
    //
    CHAR InterruptNumber;

    //
    // Number of multicast addresses that this adapter is to support.
    //
    UINT MulticastListMax;

    //
    // The type of bus that this adapter is running on.  Either ISA or
    // MCA.
    //
    UCHAR BusType;

    //
    // InterruptType is the next interrupt that should be serviced.
    //
    UCHAR InterruptType;


    //
    //  Type of ne2000 card.
    //
    UINT    CardType;

    //
    //  Address of the memory window.
    //
    ULONG   AttributeMemoryAddress;
    ULONG   AttributeMemorySize;

    //
    // Transmit information.
    //

    //
    // The next available empty transmit buffer.
    //
    XMIT_BUF NextBufToFill;

    //
    // The next full transmit buffer waiting to transmitted.  This
    // is valid only if CurBufXmitting is -1
    //
    XMIT_BUF NextBufToXmit;

    //
    // This transmit buffer that is currently transmitting.  If none,
    // then the value is -1.
    //
    XMIT_BUF CurBufXmitting;

    //
    // TRUE if a transmit has been started, and have not received the
    // corresponding transmit complete interrupt.
    //
    BOOLEAN TransmitInterruptPending;

    //
    // TRUE if a receive buffer overflow occurs while a
    // transmit complete interrupt was pending.
    //
    BOOLEAN OverflowRestartXmitDpc;

    //
    // The current status of each transmit buffer.
    //
    BUFFER_STATUS BufferStatus[MAX_XMIT_BUFS];

    //
    // Used to map packets to transmit buffers and visa-versa.
    //
    PNDIS_PACKET Packets[MAX_XMIT_BUFS];

    //
    // The length of each packet in the Packets list.
    //
    UINT PacketLens[MAX_XMIT_BUFS];

    //
    // The first packet we have pending.
    //
    PNDIS_PACKET FirstPacket;

    //
    // The tail of the pending queue.
    //
    PNDIS_PACKET LastPacket;

    //
    // The address of the start of the transmit buffer space.
    //
    PUCHAR XmitStart;

    //
    // The address of the start of the receive buffer space.
    PUCHAR PageStart;

    //
    // The address of the end of the receive buffer space.
    //
    PUCHAR PageStop;

    //
    // Status of the last transmit.
    //
    UCHAR XmitStatus;

    //
    // The value to write to the adapter for the start of
    // the transmit buffer space.
    //
    UCHAR NicXmitStart;

    //
    // The value to write to the adapter for the start of
    // the receive buffer space.
    //
    UCHAR NicPageStart;

    //
    // The value to write to the adapter for the end of
    // the receive buffer space.
    //
    UCHAR NicPageStop;




    //
    // Receive information
    //

    //
    // The value to write to the adapter for the next receive
    // buffer that is free.
    //
    UCHAR NicNextPacket;

    //
    // The next receive buffer that will be filled.
    //
    UCHAR Current;

    //
    // Total length of a received packet.
    //
    UINT PacketLen;




    //
    // Operational information.
    //

    //
    // Mapped address of the base io port.
    //
    ULONG_PTR IoPAddr;

    //
    // InterruptStatus tracks interrupt sources that still need to be serviced,
    // it is the logical OR of all card interrupts that have been received and not
    // processed and cleared. (see also INTERRUPT_TYPE definition in ne2000.h)
    //
    UCHAR InterruptStatus;

    //
    // The ethernet address currently in use.
    //
    UCHAR StationAddress[NE2000_LENGTH_OF_ADDRESS];

    //
    // The ethernet address that is burned into the adapter.
    //
    UCHAR PermanentAddress[NE2000_LENGTH_OF_ADDRESS];

    //
    // The adapter space address of the start of on board memory.
    //
    PUCHAR RamBase;

    //
    // The number of K on the adapter.
    //
    ULONG RamSize;

    //
    // The current packet filter in use.
    //
    ULONG PacketFilter;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品国产一区二区三区免费看| 精品久久久久久久人人人人传媒| 1024成人网色www| 99久久综合狠狠综合久久| 国产精品乱码一区二区三区软件| 成人综合在线观看| 自拍偷拍国产精品| 欧美日韩亚洲丝袜制服| 偷拍一区二区三区四区| 精品日韩成人av| 成人免费观看男女羞羞视频| 亚洲激情在线激情| 日韩午夜av一区| 国产成人免费视频 | 欧美日韩久久久| 日本网站在线观看一区二区三区| 日韩欧美在线影院| 99视频国产精品| 视频在线观看一区| 国产人伦精品一区二区| 色婷婷亚洲婷婷| 亚洲国产一区二区a毛片| 91精品婷婷国产综合久久| 九九精品视频在线看| 国产精品乱人伦| 欧美日韩黄色一区二区| 国产麻豆日韩欧美久久| 亚洲色图.com| 欧美日韩一本到| 国产精品性做久久久久久| 亚洲精品免费看| 久久免费视频色| 欧美体内she精高潮| 激情欧美日韩一区二区| 亚洲女性喷水在线观看一区| 欧美videossexotv100| 91免费国产视频网站| 亚洲一区在线免费观看| 精品国产免费一区二区三区香蕉 | 亚洲欧美影音先锋| 欧美一区二区三区日韩| 一本一本大道香蕉久在线精品| 久久电影国产免费久久电影 | 欧美午夜寂寞影院| 国产精品羞羞答答xxdd| 全部av―极品视觉盛宴亚洲| 亚洲欧洲日本在线| 精品免费视频.| 欧美日韩另类一区| 91免费版在线| 国产成人av福利| 久久激情综合网| 午夜精品一区二区三区三上悠亚| 中文字幕一区二区三区精华液 | 久久先锋资源网| 欧美一区二区三区在线观看视频| 91亚洲国产成人精品一区二三| 国模无码大尺度一区二区三区| 日韩av在线播放中文字幕| 亚洲精品免费播放| 亚洲天堂2016| 亚洲美女屁股眼交3| 国产精品三级视频| 欧美国产一区在线| 久久精品一二三| 久久久蜜臀国产一区二区| 精品国精品自拍自在线| 日韩一级黄色大片| 日韩三级电影网址| 日韩欧美视频在线| 欧美成人a在线| 精品国产91洋老外米糕| 精品国产乱码久久久久久1区2区| 日韩一区二区在线观看| 91精品国产综合久久久久久久久久| 欧美特级限制片免费在线观看| 99国产精品久久久久久久久久| 成人影视亚洲图片在线| 成a人片国产精品| 99精品久久免费看蜜臀剧情介绍| 丁香激情综合国产| av高清久久久| 欧美影院午夜播放| 欧美肥大bbwbbw高潮| 51精品视频一区二区三区| 91精品国产入口| 精品福利一二区| 久久精品视频在线看| 国产欧美日韩视频在线观看| 国产精品美女久久久久aⅴ国产馆| 欧美激情一区二区三区四区| 成人免费在线视频观看| 亚洲乱码国产乱码精品精小说 | 日韩**一区毛片| 国内精品国产成人| 成人精品视频一区二区三区 | 青青草一区二区三区| 久久99精品国产麻豆不卡| 国产精品影视网| 97精品国产97久久久久久久久久久久 | 亚洲精品免费视频| 亚洲国产精品久久艾草纯爱| 人妖欧美一区二区| 国产乱人伦偷精品视频不卡| www.日韩av| 91精品国产综合久久久久久| 欧美精品一区二区三区一线天视频| 国产精品午夜在线| 水蜜桃久久夜色精品一区的特点| 韩国理伦片一区二区三区在线播放| av毛片久久久久**hd| 91精品国产综合久久精品app | 日韩一区和二区| 中文av字幕一区| 日韩精品五月天| 成人免费视频一区| 欧美高清一级片在线| 中文字幕第一页久久| 午夜精品久久久久久久99水蜜桃| 国内成人自拍视频| 欧美日韩一区二区在线视频| 久久久蜜桃精品| 丝袜a∨在线一区二区三区不卡| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 国产成人av电影在线观看| 欧美丝袜丝交足nylons图片| www国产精品av| 亚洲国产一区二区视频| 成人黄色网址在线观看| 在线观看91精品国产麻豆| 国产精品入口麻豆原神| 美国十次了思思久久精品导航| 99久久精品免费| 国产欧美中文在线| 琪琪久久久久日韩精品| 色国产综合视频| 国产视频一区在线播放| 日韩精彩视频在线观看| 色综合久久久久| 国产精品美女久久久久久| 久久9热精品视频| 91精品欧美综合在线观看最新| 亚洲激情图片qvod| 成人高清免费观看| 久久久www成人免费毛片麻豆| 日韩精品电影一区亚洲| 91成人国产精品| 亚洲欧美日韩久久| 成人黄色国产精品网站大全在线免费观看 | 午夜成人在线视频| 色婷婷综合久久久久中文一区二区| 欧美极品另类videosde| 国产伦精一区二区三区| 日韩免费高清电影| 免费看欧美女人艹b| 欧美一区二区人人喊爽| 午夜视频一区二区| 欧美日韩一级二级| 偷拍亚洲欧洲综合| 欧美精品久久一区二区三区| 亚洲成人免费视| 欧美日韩视频一区二区| 亚洲国产一区二区三区| 欧美色视频在线| 视频一区视频二区中文| 在线播放91灌醉迷j高跟美女 | 一区二区在线免费| 在线免费av一区| 亚洲国产精品人人做人人爽| 色成年激情久久综合| 一区二区三区在线免费播放| 91久久精品一区二区三区| 一区二区三区在线观看网站| 91理论电影在线观看| 亚洲精品乱码久久久久久久久| 欧美亚洲日本国产| 天天射综合影视| 精品国产一区二区三区不卡| 精彩视频一区二区| 国产日本一区二区| 色老头久久综合| 天天色天天操综合| 亚洲精品一区二区三区香蕉| 国产成人自拍高清视频在线免费播放| 久久精品一区蜜桃臀影院| 成人午夜又粗又硬又大| 成人免费在线视频| 欧美丰满少妇xxxbbb| 极品少妇一区二区三区精品视频| 久久九九国产精品| 色天天综合色天天久久| 亚洲成人午夜影院| 久久久久久久久久久电影| 成人av综合在线| 日韩精品高清不卡| 久久美女高清视频| 欧美系列在线观看| 国内久久精品视频| 亚洲精品成人天堂一二三| 欧美成人激情免费网|