| 
					阅读:1168回复:6
				 这样做对吗?关于传递数据
					由于某些原因我不能用writefile()传递数据到驱动层,因此想通过IOCTL×××来实现。
 应用层是: DeviceIoControl(m_transfer.hDevice, CTL_SECOND_WRITE_BUFFER, &cBuffer, BufferGetLength(), //input NULL, 0, //output &length,NULL)) 驱动层: case IOCTL_SECOND_WRITE_BUFFER: hEvent = (HANDLE) IrpStack-> Parameters.DeviceIoControl.Type3InputBuffer; status = ObReferenceObjectByHandle(hEvent, GENERIC_ALL, NULL, KernelMode, (PVOID*)(pdx->Buffer), NULL); 这样做为什么不行。 应用层提示错误号 : 6 无效句柄。 | |
| 
 | 
| 沙发#发布于:2002-07-24 13:38 
					驱动层获得输入缓冲区的数据怎么这样
 你从哪参考的 | |
| 
 | 
| 板凳#发布于:2002-07-24 13:40 
					参考事件的句柄传递。				 | |
| 
 | 
| 地板#发布于:2002-07-24 13:43 
					你这不是脱了裤子,唉,不说了:
 驱动中:(IOCTL BUffer方式有关); ioBuffer = Irp->AssociatedIrp.SystemBuffer;//与 inputBufferLength = irpStack->Parameters.DeviceIoControl.InputBufferLength; outputBufferLength = irpStack->Parameters.DeviceIoControl.OutputBufferLength; | |
| 
 | 
| 地下室#发布于:2002-07-24 13:48 
					胡涂了,当然还是基础不好。
 给分! 稍等片刻。 | |
| 
 | 
| 5楼#发布于:2002-07-24 13:50 
					两种获取输入缓冲区的方法:
 PULONG phandle = (PULONG) Irp->AssociatedIrp.SystemBuffer; PULONG phandle = (PULONG) MmGetSystemAddressForMdl(Irp->MdlAddress); 取决于你的ioctrl码的定义 | |
| 
 | 
| 6楼#发布于:2002-07-24 14:13 
					Buffer方式用第一个,Direct方式用第二个。				 | |
 
							
 
				 
				 
				