原创
CE下开发wifi miniport驱动之如何加载驱动
要写一个wifi miniport driver,首先得了解如何写一个基本的miniport driver。因为对于嵌入式系统来说,wifi大多是设计成chip on board,因此我这里也不涉对plug and play的支持。
首先,这个miniport driver是作为一个dll在系统启动时被加载的,暂且命名为WifiAdapter.DLL。通过配置注册表,我们可以决定让系统加载它:
先在注册表中添加一个实例,命名为WifiAdapterInstance1。
[HKEY_LOCAL_MACHINE \Comm \WifiAdapterName]
DisplayName="Wifi Adapter"
Group ="NDIS"
ImagePath="WifiAdapter.DLL"
[HKEY_LOCAL_MACHINE \Comm \WifiAdapterName\Linkage]
Route="WifiAdapterInstance1"
[HKEY_LOCAL_MACHINE \Comm \WifiAdapterInstance1]
DisplayName="Wifi Adapter"
Group ="NDIS"
ImagePath="WifiAdapter.DLL"
然后让系统在启动时加载并绑定这个实例。
[HKEY_LOCAL_MACHINE \Comm \Tcpip \Linkage]
Bind = "WifiAdapterInstance1"
这样就ok了,系统启动的时候你的dll就会被作为一个miniport驱动加载。
当然你在下面这个位置配置各种有用的参数,但有很多参数我也没搞明白,就以后再讨论。
[HKEY_LOCAL_MACHINE \Comm \WifiAdapterInstance1\Parms]
还有一种方法,注册表中不需要
[HKEY_LOCAL_MACHINE \Comm \WifiAdapterName\Linkage]
Route="WifiAdapterInstance1"
和
[HKEY_LOCAL_MACHINE \Comm \Tcpip \Linkage]
Bind = "WifiAdapterInstance1"
可以直接在代码中调用NdisRegisterAdapter来动态加载,这种方式更灵活,而且如果你的driver启动需要的时间比较长的话,放在系统启动时启动会增加开机时间,所以用动态加载更好。
对应的也有一个NdisDeregisterAdapter函数,这个函数调用后driver中注册的HaltHandler函数会被调用到。
文章评论(0条评论)
登录后参与讨论