0

運転者:

PIO_STACK_LOCATION pIoStackLocation = IoGetCurrentIrpStackLocation(pIrp);
PVOID pBuf = pIrp->AssociatedIrp.SystemBuffer;

switch (pIoStackLocation->Parameters.DeviceIoControl.IoControlCode)
{
case IOCTL_TEST:

    DbgPrint("IOCTL IOCTL_TEST.");
    DbgPrint("int received : %i", pBuf);

    break;
}

ユーザー空間アプリ:

int test = 123;
int outputBuffer;

DeviceIoControl(hDevice, IOCTL_SET_PROCESS, &test, sizeof(test), &outputBuffer, sizeof(outputBuffer), &dwBytesRead, NULL);
std::cout << "Output reads as : " << outputBuffer << std::endl;

ユーザー空間アプリケーションは、出力バッファーを介して受信した正しい値を出力しますが、デバッグ ビューでは、出力された値はゴミのように見えます (例: "int received : 169642096")。

私は何を間違っていますか?

4

1 に答える 1

0

前のユーザーが言ったように、コンテンツではなく変数のアドレスを出力しています。

次のドライバー開発チュートリアルをご覧になることを強くお勧めします。

http://www.opferman.com/Tutorials/

于 2015-02-27T18:18:12.733 に答える