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

📄 itek_init.h

📁 win9x下的一个网卡驱动程序。
💻 H
字号:
//
// ITEK MAC driver initialization header file
//
#ifndef	_ITEK_INIT_H_
#define	_ITEK_INIT_H_

#define ITEK_DESCRIPTION	"ImpressTek MAC Driver"

#define	ITEK_DRIVER_MAJOR	0x03
#define	ITEK_DRIVER_MINOR	0x00

#define	ITEK_VENDOR_ID			(0x0000)
#define	ITEK_DEVICE_ID			(0x0000)

#define	NIC_TOTAL_BITRATE	(10)	//in Mbps

//lookahead and pdu size definition (tightly bound to Ethernet topology)
#define	ITEK_ADDRESS_SIZE	(6)		
#define ITEK_PDU_HDRSIZE	(14)
#define	ITEK_SDU_MAXSIZE	(1500)
#define ITEK_TX_MAXSIZE	(1520)		// 
#define ITEK_TX_MINSIZE	(526)			// 
#define	ITEK_MAX_LOOKAHEAD	(ITEK_SDU_MAXSIZE)

#define	ITEK_MOD_INC(x,y)	(((x)+1) % (y))
#define	ITEK_MULTICASTLIST_MAX	(10)
#define	ITEK_TIMEOUT_MSEC		(2000)

struct _ITEK_OPEN;
// Mac reserved data structure, total size of 16 bytes
typedef	struct {
	struct _ITEK_OPEN	*pITekOpen;
	PNDIS_PACKET		pNextPacket;		//Next Packet to be sent
} ITEK_RESERVED_STRU, *PITEK_RESERVED_STRU;

#define	ITEK_RESERVED(pNdisPacket)	((PITEK_RESERVED_STRU)(pNdisPacket)->MacReserved)

extern NDIS_PHYSICAL_ADDRESS HighestPhysicalAddress;

typedef struct	_DRIVER_BLOCK {
    //
    // NDIS wrapper information.
    //
    NDIS_HANDLE NdisMacHandle;          // returned from NdisRegisterMac
    NDIS_HANDLE NdisWrapperHandle;      // returned from NdisInitializeWrapper
    NDIS_MAC_CHARACTERISTICS MacCharacteristics;

	PDRIVER_OBJECT DriverObject;

    //
    // Adapters registered for this Mac driver.
    //
    struct	_ITEK_ADAPTER	*NextITek;
} DRIVER_BLOCK, *PDRIVER_BLOCK;
extern DRIVER_BLOCK        gDriverBlock;

// ITEK NIC driver object
typedef	struct	_ITEK_ADAPTER {
	// NIC status
	NIC_STATUS		NicStatus;

	//Spin Lock
	NDIS_SPIN_LOCK	Lock;			//For Windows95, set to ZERO

	//MacAdapter handle
	NDIS_HANDLE	ITekAdapterHandle;
	//Configuration handle
	NDIS_HANDLE	ConfigurationHandle;
	//Wrapper Handle
	NDIS_HANDLE	WrapperHandle;
	//Bus type - ???NdisInterfaceInternal
	NDIS_INTERFACE_TYPE	AdapterType;
	//Multicast List Max
	UINT		MulticastListMax;
	//ITEK NIC parameters
	USHORT		VendorID;
	USHORT		DeviceID;

	//Packet Filter
	UCHAR		PermanentAddress[ITEK_ADDRESS_SIZE];
	UCHAR		CurrentAddress[ITEK_ADDRESS_SIZE];
	UCHAR		DestinationAddress[ITEK_ADDRESS_SIZE];

	PETH_FILTER	FilterDB;
#ifdef	ITEK_TIMER
	NDIS_TIMER	NdisTimer;
#endif

	PNDIS_PACKET		pHeadPacket;
	PNDIS_PACKET		pTailPacket;

	struct	_ITEK_ADAPTER	*NextITek;
	UINT				ReferenceCount;
	struct	_ITEK_OPEN		*NextOpen;
} ITEK_ADAPTER, *PITEK_ADAPTER;


typedef struct _ITEK_OPEN {
	// NDIS wrapper information.
	NDIS_HANDLE	NdisBindingContext;		// passed to MacOpenAdapter

	UINT		OpenOptions;
	PSTRING		AddressingInformation;	// not used currently
	
	// Links to our adapter.
	PITEK_ADAPTER	pITekAdapter;
	struct _ITEK_OPEN	*NextOpen;

	// Links to our MAC.
	PDRIVER_BLOCK	pDriverBlock;

	// Index of this adapter in the filter database.
	NDIS_HANDLE	NdisFilterHandle;

	// Indication information
	UINT	MaxLookAhead;
	ULONG	PacketFilter;

	// Reset/Close information.
	UINT	ReferenceCount;
	BOOLEAN	Closing;			// is a close pending

	//NDIS_REQUEST CloseFilterRequest; // Holds Requests for pending close op
	//NDIS_REQUEST CloseAddressRequest;// Holds Requests for pending close op

	UINT ProtOptionFlags;			//Holds the value of OID_GENERAL_PROTOCOL_OPTIONS
} ITEK_OPEN, *PITEK_OPEN;


// prototypes of our callbacks
#ifdef	__cplusplus
extern "C" {
#endif

NTSTATUS NDIS_API
DriverEntry(
	IN PDRIVER_OBJECT	DriverObject,	// NULL in Windows95 CHICAGO 
	IN PUNICODE_STRING	RegistryPath	// NULL in Windows95 CHICAGO
	);

NDIS_STATUS	NDIS_API
ITekAddAdapter(
	IN	NDIS_HANDLE	MacMacContext,
    IN NDIS_HANDLE ConfigurationHandle,
	IN	PNDIS_STRING	AdapterName
	);

VOID	NDIS_API
ITekRemoveAdapter(
    IN PVOID MacAdapterContext
    );

NDIS_STATUS	NDIS_API
ITekOpenAdapter(
    OUT PNDIS_STATUS OpenErrorStatus,
    OUT NDIS_HANDLE * MacBindingHandle,
    OUT PUINT SelectedMediumIndex,
    IN PNDIS_MEDIUM MediumArray,
    IN UINT MediumArraySize,
    IN NDIS_HANDLE NdisBindingContext,
    IN NDIS_HANDLE MacAdapterContext,
    IN UINT OpenOptions,
    IN PSTRING AddressingInformation OPTIONAL
    );

NDIS_STATUS	NDIS_API
ITekCloseAdapter(
    IN NDIS_HANDLE MacBindingHandle
    );

NDIS_STATUS	NDIS_API
ITekReset(
    IN NDIS_HANDLE MacBindingHandle
    );

NDIS_STATUS	NDIS_API
ITekRequest(
    IN NDIS_HANDLE MacBindingHandle,
    IN PNDIS_REQUEST NdisRequest
    );


NDIS_STATUS	NDIS_API
ITekQueryGlobalStatistics(
    IN NDIS_HANDLE MacBindingHandle,
    IN PNDIS_REQUEST NdisRequest
    );

VOID	NDIS_API
ITekUnload(
    IN NDIS_HANDLE MacMacContext
    );

NDIS_STATUS	NDIS_API
ITekTransferData(
    IN NDIS_HANDLE MacBindingHandle,
    IN NDIS_HANDLE MacReceiveContext,
    IN UINT ByteOffset,
    IN UINT BytesToTransfer,
    OUT PNDIS_PACKET Packet,
    OUT PUINT BytesTransferred
    );

NDIS_STATUS	NDIS_API
ITekSend(
    IN NDIS_HANDLE MacBindingHandle,
    IN PNDIS_PACKET Packet
    );

NDIS_STATUS NDIS_API 
ITekQueryInformation(
		IN  NDIS_HANDLE ITekAdapterContext,
		IN	NDIS_HANDLE	ITekOpenContext,
		IN  NDIS_OID    Oid,
		IN  PVOID       InformationBuffer,
		IN  ULONG       InformationBufferLength,
		OUT PULONG      BytesWritten,
		OUT PULONG      BytesNeeded
		);

NDIS_STATUS NDIS_API 
ITekSetInformation(
		IN  NDIS_HANDLE ITekAdapterContext,
		IN	NDIS_HANDLE	ITekOpenContext,
		IN	PNDIS_REQUEST	NdisRequest,
		IN  NDIS_OID    Oid,
		IN  PVOID       InformationBuffer,
		IN  ULONG       InformationBufferLength,
		OUT PULONG      BytesRead,
		OUT PULONG      BytesNeeded
		);

NDIS_STATUS	NDIS_API
ITekAddressChangeAction(
	IN	UINT			OldFilterCount,
	IN	CHAR			OldAddresses[][ETH_LENGTH_OF_ADDRESS],
	IN	UINT			NewFilterCount,
	IN	CHAR			NewAddresses[][ETH_LENGTH_OF_ADDRESS],
	IN	NDIS_HANDLE		MacBindingHandle,
	IN	PNDIS_REQUEST	NdisRequest,
	IN	BOOLEAN Set
	);

NDIS_STATUS	NDIS_API
ITekFilterChangeAction(
    IN	UINT			OldFilterClasses,
    IN	UINT			NewFilterClasses,
    IN	NDIS_HANDLE		MacBindingHandle,
    IN	PNDIS_REQUEST	NdisRequest,
    IN	BOOLEAN			Set
    );


VOID	NDIS_API
ITekCloseAction(
	IN NDIS_HANDLE MacBindingHandle
	);

#ifdef	__cplusplus
}
#endif

#endif	/* _ITEK_INIT_H_	*/

⌨️ 快捷键说明

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