Driver:DeviceIoControl, передавая Int водителю
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;
}
пространства пользователя App:
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;
начинает печать в пространстве пользователя приложений из правильного значения, полученные обратно через выходной буфер, но в debug view, выведенное значение кажется мусором (то есть: «int получено: 169642096»)
Что я делаю неправильно?
Ваш код драйвера печати указатель, а не значение INT. Вы хотите '* pBuf'. –