| 
			 
					阅读:1210回复:3
				 
				NT下开发驱动程序很简单的问题
					我发现NT下的驱动程序DriverEntry中都没有给AddDevice函数指针赋值,但我看了一下他的DriverObject结构,发现有这个指针,不知道为什么,请大虾指点。
 
							如果我按照2000中的写法,如下所述,会发生什么情况呢? DriverObject->DriverExtension->AddDevice = AddDevice;  | 
	|
					
						
						
						
						
  | 
	
| 
			 沙发# 
								发布于:2005-03-18 15:13				
			我发现NT下的驱动程序DriverEntry中都没有给AddDevice函数指针赋值,但我看了一下他的DriverObject结构,发现有这个指针,不知道为什么,请大虾指点。 AddDevice是由PnP管理器来调用的,在NT中,由于没有PnP功能,设备的探测是需要自己实现的,一般在DriverEntry中实现,且得自己调用HAL中的函数保留和申请设备资源,即便设备是PnP的,也得需要自己去探测,然后AddDevice而win2000加入PnP功能,所以PnP会自动分配资源,因此AddDevice被大大简化了,只需要建立FDO,然后把它attach到设备堆栈顶层就可以了。  | 
	|
					
						
  | 
	
| 
			 板凳# 
								发布于:2005-03-19 09:58				
			[quote]我发现NT下的驱动程序DriverEntry中都没有给AddDevice函数指针赋值,但我看了一下他的DriverObject结构,发现有这个指针,不知道为什么,请大虾指点。 AddDevice是由PnP管理器来调用的,在NT中,由于没有PnP功能,设备的探测是需要自己实现的,一般在DriverEntry中实现,且得自己调用HAL中的函数保留和申请设备资源,即便设备是PnP的,也得需要自己去探测,然后AddDevice而win2000加入PnP功能,所以PnP会自动分配资源,因此AddDevice被大大简化了,只需要建立FDO,然后把它attach到设备堆栈顶层就可以了。 [/quote] 说的不错,不过你必须把驱动编译为WDM然后以INF的形式安装才能为PNP管理器识别,也就无法随心所欲的加载与卸载了.....  | 
	|
					
						
  | 
	
| 
			 地板# 
								发布于:2005-03-21 09:28				
			
					多谢两位大虾!				 
							 | 
	|
					
						
  |