Ndisedge小端口网卡驱动 学习笔记

DriverEntry

使用WDF框架

WDF_DRIVER_CONFIG               config;
WDF_DRIVER_CONFIG_INIT(&config, WDF_NO_EVENT_CALLBACK);  //这是设置添加设备的回调函数(PNP)
//不处理任何IRP
config.DriverInitFlags |= WdfDriverInitNoDispatchOverride;
ntStatus = WdfDriverCreate(DriverObject,
                                            RegistryPath,
                                            WDF_NO_OBJECT_ATTRIBUTES,
                                            &config,
                                            WDF_NO_HANDLE);
//初始化包装句柄 是一个固定用法,给NDIS函数提供参数                                            
NdisMInitializeWrapper(
            &NdisWrapperHandle,
            DriverObject,
            RegistryPath,
            NULL
            );  
//小端口特征            
NDIS_MINIPORT_CHARACTERISTICS   MPChar;                                                 
// 注册小端口。注意需要包装句柄与小端口特征。
Status = NdisMRegisterMiniport(
                    NdisWrapperHandle,
                    &MPChar,
                    sizeof(NDIS_MINIPORT_CHARACTERISTICS));
                    
初始化一些全局变量
                                            

特征之MPINIT

该回调函数在WINDOWS内核发现每个实例(Adapter 适配器 也就是网卡)时调用,初始化一个数据结构Adapter管理网卡。

		检测媒体介质类型是否为802——3//分配初始化适配器结构
		Status = NICAllocAdapter(&Adapter);
        // 增加引用计数。这个引用计数对应的在MPHalt中减少。
        MP_INC_REF(Adapter);
        //获取这个适配器句柄(传入参数)的PDO FDO NDO 
        NdisMGetDeviceProperty(MiniportAdapterHandle,
                           &Adapter->Pdo,
                           &Adapter->Fdo,
                           &Adapter->NextDeviceObject,
                           NULL,
                           NULL);
                           //获取设备物理描述信息
		ntStatus = IoGetDeviceProperty (Adapter->Pdo,
                                      DevicePropertyDeviceDescription,
                                      NIC_ADAPTER_NAME_SIZE,
                                      Adapter->AdapterDesc,
                                      &nameLength);
       //获取信息....
       生成小端口设备,报道村在Adpater中 
       最后启动网卡
       NICInitializeAdapter(Adapter, WrapperConfigurationContext);                                                         
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值