📄 driverentry.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 + -