Пишу драйвер, нужно передать из него данный в приложение. При вызовеDeviceIoControl возникает BSOD. код приложения
Код | struct X { ULONG last; ULONG interval; } Kek; HANDLE hDevice; hDevice = CreateFile(L"\\\\.\\filtr", 0, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL ); if ( hDevice == INVALID_HANDLE_VALUE ) return 0; unsigned long ioctl = 0x801; DWORD dw; DeviceIoControl( hDevice, ioctl, 0, 0, &Kek, sizeof(struct X),&dw, 0 );
|
код драйвера
Код | NTSTATUS DriverControl (IN PDEVICE_OBJECT fdo, IN PIRP irp) { PVOID pBuffer = NULL; PIO_STACK_LOCATION IrpStack = IoGetCurrentIrpStackLocation(irp); ULONG ControlCode = IrpStack->Parameters.DeviceIoControl.IoControlCode; ULONG InputLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength; ULONG OutputLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength; pBuffer = irp->UserBuffer; Ke.last=10; Ke.interval=101; RtlCopyMemory(irp->AssociatedIrp.SystemBuffer,&Ke,sizeof(struct X)); irp->IoStatus.Status = STATUS_SUCCESS; irp->IoStatus.Information = InputLength; IoCompleteRequest(irp, IO_NO_INCREMENT); return STATUS_SUCCESS; }
|
как решить эту проблему? |