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

📄 driverentry.cpp

📁 This is a source code for Ethernet Driver This driver was developed on RMI AU1250 CPU for Windows
💻 CPP
字号:


#include	"stdAfx.h"
#include	"exception.h"
#include	"mutex.h"
#include	"queue.h"
#include	"driver.h"
//#include	"usbdrv.h"
#include	"ver.h" //[driver]


#ifdef	__cplusplus
extern "C" {	// miniport driver trunk functions
#endif

NDIS_STATUS MiniportInitialize(
	OUT PNDIS_STATUS OpenErrorStatus,
	OUT PUINT SelectedMediaIndex, 
	IN PNDIS_MEDIUM MediaArray, 
	IN UINT MediaArraySize,
    IN NDIS_HANDLE MiniportHandle, 
	IN NDIS_HANDLE WrapperConfigHandle)
{
	SETFNAME("DM9::MiniportIntialize()");
	FUNCTION_ENTER_MSG();

	//(+)2007-11-27 Richard Chung
	NIC_DRIVER_OBJECT	*pnic;

	if(!(pnic = new NIC_DRIVER_OBJECT(
		MiniportHandle,WrapperConfigHandle)))	
		return	NDIS_STATUS_FAILURE;
	//(-)2007-11-27 Richard Chung

	CException	*pexp;
	TRY
	{
		pnic->MiniportInitialize(
			OpenErrorStatus,
			SelectedMediaIndex, 
			MediaArray, 
			MediaArraySize);

		FI;
	}
	CATCH(pexp)
	{
		pexp->PrintErrorMessage();
		CLEAN(pexp);
		delete pnic;
		return NDIS_STATUS_FAILURE;
	}
	
	FUNCTION_LEAVE_MSG();
	WNextLine();
	WNextLine();
	WNextLine();
	return NDIS_STATUS_SUCCESS;
}

#ifdef	__cplusplus   
}	// of miniport trunk functions
#endif

/********************************************************************************************
 *
 * DriverEntry
 *
 ********************************************************************************************/

extern "C" NTSTATUS DriverEntry(IN PDRIVER_OBJECT pDriverObject, IN PUNICODE_STRING pRegistryPath)
{
	NDIS_STATUS		status;
	NDIS_HANDLE		hwrapper;

	NDIS40_MINIPORT_CHARACTERISTICS	ndischar;

//	DEBUG_PRINTF(_T("\r\n"));
//	DEBUG_PRINTF(_T("==============================================\r\n"));
	DEBUG_PRINTF(_T("=== Davicom (_DriverEntry.) \r\n"));
//.	DEBUG_PRINTF(_T("----------------------------------------------\r\n"));
//	DEBUG_PRINTF(_T("Based Driver Version : %s\r\n"),DAVICOM_NIC_DRIVER_VERSION);
//.	DEBUG_PRINTF(_T("Based Release Date   : %s\r\n"),DAVICOM_NIC_DRIVER_RELEASE);
//	DEBUG_PRINTF(_T("==============================================\r\n"));	 	

	NdisMInitializeWrapper(&hwrapper, pDriverObject, pRegistryPath,	NULL);

	memset((void*)&ndischar,0,sizeof(ndischar));
    
    ndischar.Ndis30Chars.MajorNdisVersion = PRJ_NDIS_MAJOR_VERSION;
	ndischar.Ndis30Chars.MinorNdisVersion = PRJ_NDIS_MINOR_VERSION;
    
	ndischar.Ndis30Chars.InitializeHandler			= MiniportInitialize;
    ndischar.Ndis30Chars.ResetHandler				= MiniportReset;
    ndischar.Ndis30Chars.CheckForHangHandler		= MiniportCheckForHang;			// CheckForHang
    ndischar.Ndis30Chars.HaltHandler				= MiniportHalt;
    ndischar.Ndis30Chars.HandleInterruptHandler		= MiniportInterruptHandler;
    ndischar.Ndis30Chars.ISRHandler					= MiniportISRHandler;			// ISR
    ndischar.Ndis30Chars.QueryInformationHandler	= MiniportQueryInformation;
    ndischar.Ndis30Chars.SetInformationHandler		= MiniportSetInformation;		// SetInformation
    ndischar.Ndis30Chars.SendHandler				= MiniportSend;

	if((status = NdisMRegisterMiniport(
		hwrapper,
		(PNDIS_MINIPORT_CHARACTERISTICS)&ndischar,
		sizeof(ndischar)) != NDIS_STATUS_SUCCESS))
	{
		NdisTerminateWrapper(hwrapper,NULL);
		return status;
	}

#ifndef	IMPL_DLL_ENTRY	
	INIT_EXCEPTION();
#endif

    return NDIS_STATUS_SUCCESS;
}

⌨️ 快捷键说明

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