XYZSOFT 2022-10-31 09:25 采纳率: 0%
浏览 14

windows驱动开发蓝屏,求解决

问题遇到的现象和发生背景

之前有人咨询过的一个问题,在IOCallDriver中蓝屏了,看了一下回答说是把event附加到deviceExtension中,我试过TopOfDeivceStack->DeviceExtension=&event直接蓝屏了,想问一下具体是怎么把event放到DeviceExtension里呢?

用代码块功能插入代码,请勿粘贴截图

NTSTATUS
MakeSynchronousIoctl(
IN PDEVICE_OBJECT TopOfDeivceStack,
IN ULONG IoctlControlCode,
PVOID InputBuffer,
ULONG InputBufferLength,
PVOID OutputBuffer,
ULONG OutputBufferLength)
{
KEVENT event;
PIRP irp;
IO_STATUS_BLOCK ioStatus;
NTSTATUS status;

//创建设备控制IRP给其它驱动
//初始化同步事件
KeInitializeEvent(&event,NotificationEvent,FALSE);
//用IoBuildDeviceIoControlRequest创建IRP
irp = IoBuildDeviceIoControlRequest(IoctlControlCode,
TopOfDeivceStack,
InputBuffer,
InputBufferLength,
OutputBuffer,
OutputBufferLength,
FALSE,
&event,
&ioStatus);
//判断IRP是否为零

KdPrint((" devicepointer=%u\n", TopOfDeivceStack));
KdPrint((" InputBuffer=%s\n", InputBuffer));
KdPrint((" InputBufferLength=%u\n", InputBufferLength));
KdPrint((" OutputBuffer=%s\n", OutputBuffer));
KdPrint((" OutputBufferLength=%u\n", OutputBufferLength));
if (NULL == irp)
{
KdPrint((" (NULL == irp)\n" ));
return STATUS_INSUFFICIENT_RESOURCES;
}
//调用底层驱动程序 就是这一行会引起蓝屏
status = IoCallDriver(TopOfDeivceStack,irp);
if (status == STATUS_PENDING)
{
KdPrint((" status == STATUS_PENDING\n" ));
status = KeWaitForSingleObject(&event,
Executive,
KernelMode,
FALSE,
NULL);
status = ioStatus.Status;
}

  • 写回答

1条回答 默认 最新

  • 赵4老师 2022-10-31 13:00
    关注

    Windows驱动开发 http://www.osronline.com/

    评论

报告相同问题?

问题事件

  • 创建了问题 10月31日

悬赏问题

  • ¥15 咨询一下有关于王者荣耀赢藏战绩
  • ¥100 求购一套带接口实现实习自动签到打卡
  • ¥50 MacOS 使用虚拟机安装k8s
  • ¥500 亚马逊 COOKIE我如何才能实现 登录一个亚马逊账户 下发新 COOKIE ..我使用下发新COOKIE 导入ADS 指纹浏览器登录,我把账户密码 修改过后,原来下发新COOKIE 不会失效的方式
  • ¥20 玩游戏gpu和cpu利用率特别低,玩游戏卡顿
  • ¥25 oracle中的正则匹配
  • ¥15 关于#vscode#的问题:把软件卸载不会再出现蓝屏
  • ¥15 vimplus出现的错误
  • ¥15 usb无线网卡转typec口
  • ¥30 怎么使用AVL fire ESE软件自带的优化模式来优化设计Soot和NOx?