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

📄 driver.h

📁 网络控制器dm9000的wince5.0驱动源码
💻 H
字号:
/******************************************************************************** *  * $Id: driver.h,v 2.0.4.2 2002/12/24 07:56:36 dvi175 Exp $ * * File: Driver.h * * Optimizations: *	When build in RETAIL mode, the compiler options is set to /Oxs, *  which means maximum opts.(x) and favor for code space(s). *  Option Ox stands for Ogityb1 and Gs, for more detail information, *  type CL/? at command your DOS command prompt. * * Copyright (c) 2000-2002 Davicom Inc.  All rights reserved. * ********************************************************************************/ #ifndef	__WINCE_DRIVER_H__#define	__WINCE_DRIVER_H__#include	"types.h"#include	"common.h"#define PRJ_NDIS_MAJOR_VERSION   4#define PRJ_NDIS_MINOR_VERSION   0#ifndef	VENDOR_DESC#define	VENDOR_DESC	"Davicom Semiconductor, Inc"#endif/******************************************************************************** * * Driver behaviors * ********************************************************************************///#define	IMPL_SEND_INDICATION#define	IMPL_STATISTICS#define	IMPL_RESET#define	IMPL_SHARED_TX#define	SHARED_TX_LEVEL	2//#define	IMPL_DEVICE_ISR/******************************************************************************** * * PCI MAP * ********************************************************************************/#define PCI_OFFSET_ID			0x00#define PCI_OFFSET_CMD			0x04#define PCI_OFFSET_STATUS		0x04#define PCI_OFFSET_REV			0x08#define PCI_OFFSET_MISC			0x0C#define PCI_OFFSET_IO_BASE		0x10#define PCI_OFFSET_MEM_BASE		0x14#define PCI_OFFSET_SUB_ID		0x2C#define PCI_OFFSET_INT			0x3C#define PCI_OFFSET_USR			0x40#define PCI_OFFSET_PMR			0x50/****************************************************************************************** * * Ethernet definitions * *******************************************************************************************/#define ETH_MAX_FRAME_SIZE  1514#define ETH_HEADER_SIZE     14#define ETH_ADDRESS_LENGTH  6#define ETH_CRC_SIZE     	4#define	MAX_MULTICAST_LIST	64#define	DRIVER_BUFFER_SIZE	0x5F0/****************************************************************************************** * * NIC_DRIVER_OBJECT definition * *******************************************************************************************/typedef	struct	_CONFIG_PARAMETER{	U32				uId;	U32				uDefValue;	NDIS_STRING		szName;}	CONFIG_PARAMETER, *PCONFIG_PARAMETER;typedef	enum {	CID_CONNECTION_TYPE=0,	CID_SLOT_NUMBER,	CID_BUFFER_PHYSICAL_ADDRESS,	CID_TXBUFFER_NUMBER,	CID_RXBUFFER_NUMBER,	CID_ADAPTER_NUMBER,	CID_IO_BASE_ADDRESS,	CID_IO_RANGE,	CID_IRQ_NUMBER,		// irq pin or line number	CID_IRQ_LEVEL,		// to raise irql level	CID_IRQ_GEN_TYPE,	// level sensitive(pci) or latched(isa)	CID_IRQ_SHARED,		// shared or not	CID_INTERFACE_TYPE,	// isa or pci device	CID_BUS_MASTER,		// is a bus master or not	CID_INTERMEDIATE,	// is a intermediate miniport	CID_CHECK_FOR_HANG_PERIOD,	// in seconds	CID_CHIP_STEPPING,	CID_NEED_IO_SPACE,	CID_NEED_INTERRUPT,		/* wireless settings */	CID_WLAN_NETWORK_TYPE,		CID_SIZE} DEVICE_CID_TYPE;#if 0typedef struct _SYSTEM_PARAM{	U8		szClientName[MAX_ID_LEN];	U32		uIpAddress;	U8		szBSSID[IEEE_ADDR_LEN];	U8		szSSID1[IEEE_ADDR_LEN];	U8		szSSID2[IEEE_ADDR_LEN];	int		nNetworkType;		/* 0: ad hoc, 1: infras */	int		nPowerMode;			/* D0..D2 */	int		nWakeupDuration;	/* in KuS */	int		nBeaconInterval;	/* in KuS */	int		nPrivacy;			/* 0: disable, 1: 48bit, 2: 128 bit */	int		nAuthMethod;		/* 0: Open, 1: Shared key */}	SYSTEM_PARAM, *PSYSTEM_PARAM;typedef	struct	_TRANS_PARAM{	int		nShortPreemble;		/* 0: false, 1: true */	int		nDataRate;			/* 0: for auto, others: Mbps times 10 */	int		nChannel;			/* 0: for auto, 1..13 */	int		nTransmitPower;		/* in mW */	int		nTxAntenna;			/* 0: for both, 1: left, 2: right */	int		nRxAntenna;			/* 0: for both, 1: left, 2: right */	int		nRTSThreshold;		/* 0..2312 */	int		nRTSRetries;		/* 0..? */	int		nFragmentThreshold;	/* 256..2312 */	int		nFragmentRetries;	/* 0..? */	int		nDateLength;		/* test purpose, 1..2312 */	int		nDebugCode;			/* debug purpose only */	int		nRSSICode;			/* debug RSSI value */	int		nTransmitCode;		/* debug TX command */	int		nReceiveCode;		/* debug RX command */	U8		szTargetAddress[IEEE_ADDR_LEN];	int		nTxTimeout;	int		nRxTimeout;	}	TRANS_PARAM, *PTRANS_PARAM;#endiftypedef	enum {	SID_HW_STATUS,	SID_OP_MODE,	SID_INT_MASK,	SID_INT_GEN_MASK,	SID_PORT_BASE_ADDRESS,	SID_PHY_NUMBER,	SID_MEDIA_SUPPORTED,    SID_MEDIA_IN_USE,	SID_MEDIA_CONNECTION_STATUS,	SID_MAXIMUM_LOOKAHEAD,	SID_MAXIMUM_FRAME_SIZE,    SID_MAXIMUM_TOTAL_SIZE,    SID_BUFFER_SIZE,    SID_MAXIMUM_SEND_PACKETS,    SID_LINK_SPEED,	SID_GEN_MAC_OPTIONS,	SID_802_3_PERMANENT_ADDRESS,	SID_802_3_CURRENT_ADDRESS,	SID_802_3_MAXIMUM_LIST_SIZE,	SID_802_3_MULTICAST_LIST,	SID_GEN_CURRENT_PACKET_FILTER,	SID_GEN_TRANSMIT_BUFFER_SPACE,	SID_GEN_RECEIVE_BUFFER_SPACE,	SID_GEN_TRANSMIT_BLOCK_SIZE,	SID_GEN_RECEIVE_BLOCK_SIZE,	SID_GEN_VENDOR_ID,	SID_GEN_VENDOR_DESCRIPTION,	SID_GEN_CURRENT_LOOKAHEAD,	SID_GEN_DRIVER_VERSION,	SID_GEN_VENDOR_DRIVER_VERSION,	SID_GEN_PROTOCOL_OPTIONS,	SID_SIZE} DEVICE_SID_TYPE;typedef	enum {	TID_GEN_XMIT_OK,	TID_GEN_RCV_OK,	TID_GEN_XMIT_ERROR,	TID_GEN_RCV_ERROR,	TID_GEN_RCV_NO_BUFFER,	TID_GEN_RCV_CRC_ERROR,    TID_802_3_RCV_ERROR_ALIGNMENT,	TID_802_3_RCV_OVERRUN,    TID_802_3_XMIT_ONE_COLLISION,    TID_802_3_XMIT_MORE_COLLISIONS,    TID_802_3_XMIT_DEFERRED,    TID_802_3_XMIT_MAX_COLLISIONS,    TID_802_3_XMIT_UNDERRUN,    TID_802_3_XMIT_HEARTBEAT_FAILURE,    TID_802_3_XMIT_TIMES_CRS_LOST,    TID_802_3_XMIT_LATE_COLLISIONS,	TID_NIC_RXPS,	TID_NIC_RXCI,		TID_RX_FIFO_OVERFLOW,	TID_RX_FIFO_OVERFLOW_OVERFLOW,	TID_SIZE}	DEVICE_TID_TYPE;typedef	enum{	EID_MAC_ADDRESS,	EID_VENDOR_ID,	EID_PRODUCT_ID,	EID_SIZE}	DEVICE_EID_TYPE;typedef	enum{	NIC_IND_TX_IDLE=0,	AID_ERROR=0x8000,	AID_LARGE_INCOME_PACKET,} NIC_IND_TYPE;typedef	struct	_DATA_BLOCK{	CQUEUE_GEN_HEADER	Header;	unsigned char		Buffer[DRIVER_BUFFER_SIZE];} DATA_BLOCK, *PDATA_BLOCK;/****************************************************************************************** * * NIC_DRIVER_OBJECT definition * *******************************************************************************************/class	NIC_DEVICE_OBJECT;class	NIC_DRIVER_OBJECT{public:	NIC_DRIVER_OBJECT(NDIS_HANDLE	pHandle,NDIS_HANDLE	pWrapper)	{		m_NdisHandle = pHandle;		m_NdisWrapper = pWrapper;		m_bSystemHang = 0;		m_bOutofResources = 0;		m_pLower = NULL;	};	~NIC_DRIVER_OBJECT()	{	};public:	// routines that may throw exceptions	virtual void EDriverInitialize(		OUT PNDIS_STATUS OpenErrorStatus,		OUT PUINT SelectedMediaIndex, 		IN PNDIS_MEDIUM MediaArray, 		IN UINT MediaArraySize);	// routines that return void or error code	virtual void	DriverStart(void);	virtual void	DriverIndication(U32);	virtual	void	DriverSendCompleted(PCQUEUE_GEN_HEADER);		virtual	void	DriverReceiveIndication(int,PVOID,int);		NDIS_HANDLE	GetNdisHandle() { return m_NdisHandle; };	NDIS_HANDLE	GetNdisWrapper() { return m_NdisWrapper; };	U32	GetRecentInterruptStatus() { return m_uRecentInterruptStatus; };		PVOID	DriverBindAddress(U32,U32);	// miniport driver callback	virtual	void DriverIsr(		OUT PBOOLEAN InterruptRecognized, 		OUT PBOOLEAN QueueInterrupt);	virtual	VOID	DriverInterruptHandler(void);	virtual NDIS_STATUS DriverQueryInformation(		IN NDIS_OID		Oid,		IN PVOID		InfoBuffer, 		IN ULONG		InfoBufferLength, 		OUT PULONG		BytesWritten,		OUT PULONG		BytesNeeded);	virtual NDIS_STATUS DriverSetInformation(		IN NDIS_OID		Oid,		IN PVOID		InfoBuffer, 		IN ULONG		InfoBufferLength, 		OUT PULONG		BytesRead,		OUT PULONG		BytesNeeded);	virtual	VOID	DriverEnableInterrupt(void);	virtual	VOID	DriverDisableInterrupt(void);	virtual	BOOL	DriverCheckForHang(void);	virtual	VOID	DriverHalt(void);	virtual	NDIS_STATUS DriverReset(OUT PBOOLEAN);	virtual	NDIS_STATUS	DriverSend(IN PNDIS_PACKET,IN UINT);		virtual int DriverIsOutOfResource(void)	{		return m_bOutofResources;	};	public:	int		m_bSystemHang;	int		m_bOutofResources;		NIC_DEVICE_OBJECT	*m_pLower;	U32	m_uRecentInterruptStatus;	NDIS_HANDLE	m_NdisHandle;	NDIS_HANDLE	m_NdisWrapper;	CQueue	m_TQueue;		};/********************************************************************************* * * External functions * *********************************************************************************/extern "C"BOOL VirtualCopy ( LPVOID lpvDest, LPVOID lpvSrc, DWORD cbSize, DWORD fdwProtect );extern "C" NIC_DEVICE_OBJECT	*DeviceEntry(	NIC_DRIVER_OBJECT	*pDriverObject,	PVOID				pVoid);#endif	// of __PROJECT_H__

⌨️ 快捷键说明

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