数据使用DeviceIoControl从app发送到驱动程序

时间:2015-01-09 04:56:17

标签: c windows driver ioctl deviceiocontrol

我可以将数据驱动程序发送到应用程序。

在app中:

DeviceIoControl(dHandle, IOCTL_TEST, (PVOID)InputBuffer, sizeof(InputBuffer), (PVOID)OutputBuffer, sizeof(OutputBuffer), &dwRet, 0);
printf("num : %s\n", OutputBuffer);

在司机:

char pData[1024];
pData="eeee";
case IOCTL_TEST:
        pInputBuffer = Irp->AssociatedIrp.SystemBuffer;
        pOutputBuffer = Irp->AssociatedIrp.SystemBuffer;
        inputBufferLength = pStack->Parameters.DeviceIoControl.OutputBufferLength;
        RtlCopyMemory(pOutputBuffer, pData, strlen(pData));
        break;
Irp.IoStatus.Information=1024;

结果在应用程序控制台中打印"eeee"

但我不知道如何将应用数据发送给驱动程序。 DeviceIoControl的3,4个参数是输入缓冲区和长度 如果我在应用中添加char InputBuffer[1024] = "InputBuffer's data";,驱动程序如何接收此数据? 我想将DbgPrint()用于来自应用的接受数据。


我想选择答案。请回答不评论。

1 个答案:

答案 0 :(得分:0)

我解决了。 解决方案是 驱动程序使用Irp-> AssociatedIrp.Systembuffer从app接收数据;所以,只需打印这个指针的数据。