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

📄 lan91c111_ndis.c

📁 PXA255/270平台的 LAN91C111网卡驱动程序
💻 C
字号:
/*
 *
 *    Copyright (c) Standard MicroSystems Corporation.  All Rights Reserved.
 *
 *				    LAN91C111 Driver for Windows CE .NET
 *
 *							 Revision History
 *_______________________________________________________________________________
 *     Author		  Date		Version		Description
 *_______________________________________________________________________________
 * Pramod Bhardwaj  6/18/2002	  0.1		Beta Release
 *					7/15/2002	  1.0       Release 
 *					1/22/2003     1.1		Removed some platform dependencies
 *					3/27/2003     1.2       Used alloc interrupt
 * TScho			2/15/2004	  1.2.0		Performance changes (Beta)
 * TScho			2/20/2004	  1.2.1		Multi-packet indication (Beta)
 * TScho			2/25/2004	  1.2.2		Multicast fixed (Beta)
 * TScho			2/26/2004	  2.1		Release for CE 5.0
 *_______________________________________________________________________________
 *
 *Description:
 *      Contains the functions to be exported.
 */

#include <Ndis.h>
#include "LAN91C111_Adapter.h"
#include "LAN91C111_Proto.h"

static char _LAN91C111_NDIS_C_Date_Code_[] = "082304";

DBGPARAM dpCurSettings = {
	TEXT("LAN91C111"), {
		TEXT("Init"), TEXT("Interrupt"), TEXT("Transmit"), TEXT("Receive"),
		TEXT("Receive Overrun"), TEXT("MultiCast"), TEXT(""), TEXT(""),
		TEXT(""), TEXT(""), TEXT(""), TEXT(""),
		TEXT(""), TEXT(""), TEXT("Warnings"), TEXT("Errors")},
	0xffffffff
};


const NDIS_PHYSICAL_ADDRESS HighestAcceptedMax = NDIS_PHYSICAL_ADDRESS_CONST(-1,-1);


NTSTATUS DriverEntry(IN PDRIVER_OBJECT  DriverObject, IN PUNICODE_STRING RegistryPath)
{
	NDIS_MINIPORT_CHARACTERISTICS 	Characteristics;
	NDIS_HANDLE						LAN91C111_WrapperHandle;
	NDIS_STATUS						Status = NDIS_STATUS_SUCCESS;

	RETAILMSG(1, (TEXT("\tSMSC LAN91C111 WindowsCE 5.0 (NDIS%d.%d) Driver V2.1 Build#%d\r\n"), DRIVER_NDIS_MAJOR_VERSION, DRIVER_NDIS_MINOR_VERSION, DRIVER_BUILD_NUM));

	//Initialize the Wrapper.
	NdisMInitializeWrapper(&LAN91C111_WrapperHandle, DriverObject, RegistryPath, NULL);

	//Set up our Characteristics, but clear it first
	NdisZeroMemory((PVOID) &Characteristics, sizeof(Characteristics));

	Characteristics.MajorNdisVersion        = DRIVER_NDIS_MAJOR_VERSION;
	Characteristics.MinorNdisVersion        = DRIVER_NDIS_MINOR_VERSION;
	Characteristics.CheckForHangHandler     = LAN91C111_MiniportCheckforHang;		//Optional
	Characteristics.DisableInterruptHandler = LAN91C111_MiniportDisableInterrupt;
	Characteristics.EnableInterruptHandler  = NULL;
	Characteristics.HaltHandler             = LAN91C111_MiniportHalt;				//Required
	Characteristics.HandleInterruptHandler  = LAN91C111_MiniPortHandleInterrupt;	//Required
	Characteristics.InitializeHandler       = LAN91C111_MiniportInitialize;			//Required
	Characteristics.ISRHandler              = LAN91C111_MiniportISR;				//Required
	Characteristics.QueryInformationHandler = LAN91C111_MiniportQueryInformation;	//Required
	Characteristics.ReconfigureHandler      = NULL;
	Characteristics.ResetHandler            = LAN91C111_MiniportReset;				//Required
	Characteristics.SendHandler             = LAN91C111_MiniportSend;				//Required
	Characteristics.SetInformationHandler   = LAN91C111_MiniportSetInformation;
	Characteristics.ReturnPacketHandler     = NULL;

	//Register as an NDIS MiniPort Driver
	Status = NdisMRegisterMiniport(LAN91C111_WrapperHandle,
								   (NDIS_MINIPORT_CHARACTERISTICS *) &Characteristics,
								   sizeof(NDIS_MINIPORT_CHARACTERISTICS));

	if(Status != NDIS_STATUS_SUCCESS)
	{
		NdisTerminateWrapper (LAN91C111_WrapperHandle, NULL);
		PrintDebugMsg(ZONE_INIT, (TEXT("LAN91C111 : NdisMRegisterMiniport Failed (%04x) !!\r\n"), Status));
	}

	PrintDebugMsg(ZONE_INIT, (TEXT("LAN91C111 <= DriverEntry\r\n")));
	return(Status);
}


BOOL __stdcall DllEntry	(HANDLE hDLL, DWORD dwReason, LPVOID lpReserved)
{
	switch (dwReason) 
	{
		case DLL_PROCESS_ATTACH:
				DEBUGREGISTER(hDLL);
				PrintDebugMsg(ZONE_INIT, (TEXT("LAN91C111: DLL Process Attach\r\n")));
				break;
		case DLL_PROCESS_DETACH:
				PrintDebugMsg(ZONE_INIT, (TEXT("LAN91C111: DLL Process Detach\r\n")));
				break;
	}
	return TRUE;
}

⌨️ 快捷键说明

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