1

データドライバーをアプリに送信できます。

アプリ内:

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()アプリから受け取ったデータに使用したい。


答えを選びたい。コメントしないで答えてください。

4

1 に答える 1

0

私はそれを解決しました。解決策は、ドライバーが Irp->AssociatedIrp.Systembuffer; を使用してアプリからデータを受信することです。したがって、このポインターのデータを印刷するだけです。

于 2015-01-22T15:25:13.410 に答える