| 
			 
					阅读:1613回复:3
				 
				关于IOCTL的两个问题
					请问:
 
							编写wdn的pci驱动程序中, (1)在那里声明我自定义的ioctl代码? (2)在那里写实现这些ioctl代码的dispatch呢? 恳请大侠指点迷津.  | 
	|
					
						
						
						
						
  | 
	
| 
			 沙发# 
								发布于:2001-09-18 08:51				
			
					1)自己定义一个IOCTL。H的头文件就可以啦
 
							形式如下: #define IOCTL_CARD_READ \ CTL_CODE(\ FILE_DEVICE_UNKNOWN,\ 0x807,\ *** METHOD_BUFFERED,\ FILE_ANY_ACCESS) ***处的数值要大于等于800(对WDM而言) 2)在你的DriverEntry()中 DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL]=DeviceIoControl; 就可以定义你自己的dispacth了。 如果你不想排队IOCTL,则可以用switch-case语句直接处理这些IOCTL了  | 
	|
| 
			 板凳# 
								发布于:2001-09-18 19:53				
			
					再次请教大侠:
 
							你说在driverentry中初始化函数指针,但是我用的是driverwork2.0向导生成的pci WDM程序。 生成的程序的driverentry()只有一个注册表指针参数, 没有driverobject参数。 请问我怎么样再没有driverobject的driverentry()中初始化 dispatch函数指针呢? 先谢谢!  | 
	|
					
						
  | 
	
| 
			 地板# 
								发布于:2001-09-19 16:12				
			
					把向导看仔细一些,在生成向导的某一步中有如下提示
 
							before control codes used to communicate with applications or others drivers... 这里就是定义IOCTL的 你没有定义,你的程序里当然找不到 定义了之后,你可以在XXXDevice.cpp中找到 NTSTATUS XXXDevice::DeviceControl(KIrp I)  | 
	|