阅读:1149回复: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 14:13
Buffer方式用第一个,Direct方式用第二个。
|
|
板凳#
发布于:2002-07-24 13:50
两种获取输入缓冲区的方法:
PULONG phandle = (PULONG) Irp->AssociatedIrp.SystemBuffer; PULONG phandle = (PULONG) MmGetSystemAddressForMdl(Irp->MdlAddress); 取决于你的ioctrl码的定义 |
|
|
地板#
发布于:2002-07-24 13:48
胡涂了,当然还是基础不好。
给分! 稍等片刻。 |
|
|
地下室#
发布于:2002-07-24 13:43
你这不是脱了裤子,唉,不说了:
驱动中:(IOCTL BUffer方式有关); ioBuffer = Irp->AssociatedIrp.SystemBuffer;//与 inputBufferLength = irpStack->Parameters.DeviceIoControl.InputBufferLength; outputBufferLength = irpStack->Parameters.DeviceIoControl.OutputBufferLength; |
|
|
5楼#
发布于:2002-07-24 13:40
参考事件的句柄传递。
|
|
|
6楼#
发布于:2002-07-24 13:38
驱动层获得输入缓冲区的数据怎么这样
你从哪参考的 |
|
|