草庐IT

windows - 每次创建驱动程序句柄时都会出现蓝屏

我正在写一个驱动程序,但我遇到了问题每次我尝试使用CreateFile打开我的驱动程序的句柄时,我都会收到bsod(访问冲突)重要的是要提到我的驱动程序加载成功并且我没有收到任何错误有人知道怎么处理吗?提前致谢! 最佳答案 !analyze-v是你的friend。 关于windows-每次创建驱动程序句柄时都会出现蓝屏,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1102234

windows - 内存转储中的 DbgPrint?

我有一个驱动可以直接避开BSoD,将WindowsVista的屏幕变成黑色,并带有一些彩色的点和条纹。之后我在系统上发现了一个内存转储,DbgView向我展示了一个堆栈跟踪(说明这可能是一个乱码堆栈,某些部分可能不正确)。遗憾的是,在堆栈中找到的命令在明显破坏整个事情的代码部分无处可寻。(我可以离开我们的整个例程,但不能离开它的一部分。)有人知道一种方法可以将调试消息放入内存转储或从串行端口中取出,以便在外部调试器中读取它们吗?(如果连接了调试器,我的测试系统就会停止,但这可能是我对远程连接内核调试的方式和原因了解不够。)我想知道我的代码失败的地方,因为浏览代码对我来说似乎很好但有点徒

windows - 如何确定进程是否处于死锁状态或正在等待 I/O

面试官问:我们如何才能发现应用程序是否由于死锁或由于等待某些IO而变得无响应?任何人都可以评论执行此操作的任何一般方法,或者各种方法是否提供了一些特定的方法?我相信这是与操作系统相关的事情,所以我不会在这里标记任何语言。编辑:我也想了解执行此操作的技术和API。这样我就可以根据需要运行监控程序。 最佳答案 在Linux上我会使用sar-u1。如果%iowait列很高,那么应用程序可能正在等待IO 关于windows-如何确定进程是否处于死锁状态或正在等待I/O,我们在StackOverf

windows - 为什么 NdisFRegisterFilterDriver 返回 NDIS_STATUS_FAILURE?

我正在尝试编写一个NDIS中间过滤器驱动程序,但在任何事情发生之前我都卡住了。除了尝试注册过滤器驱动程序之外,我的代码还没有做任何事情:NTSTATUSDriverEntry(INPDRIVER_OBJECTDriverObject,INPUNICODE_STRINGRegistryPath){NDIS_FILTER_DRIVER_CHARACTERISTICSFChars;NDIS_STRINGServiceName,UniqueName,FriendlyName;NDIS_STATUSStatus;UNUSED(RegistryPath);g_FilterObject=Driver

windows - linux/windows内核模块中的无限循环

在ubuntu10.04linux内核中,如果我insmod一个运行的模块while(1);在init_module部分,整个系统停止。但是,如果我在Windows7中加载一个sys文件在DriverEntry部分运行while(1);,系统变慢但仍然有效。谁能解释一下为什么两个系统不同内核内部发生了什么?...我认为在第一种情况下(init_module中的无限循环),系统没有理由停止。因为即使我在init_module中制作while(1);,它也在运行在insmod用户应用程序的上下文中。所以流程无限循环必须通过硬件中断信号进行调度。这只是我的看法,如果我错了我想知道细节...

c++ - 在 ring0/kernel 中列出驱动程序?

只是一个问题,我想知道是否可以连接到Ring0/Kernel以显示在内核中运行的已加载驱动程序列表?我是否需要为此编写驱动程序?类似于如何轻松列出所有正在运行的进程。哦,这是在C++/Windows中。 最佳答案 正如我所说,使用driverquery命令。driverqueryDisplayalistofallinstalleddevicedriversandtheirproperties.Syntaxdriverquery[/sComputer][/uDomain\User/pPassword][/fo{TABLE|LIST|C

c - 从内核驱动程序到达内核 session 空间

我正在编写一个内核驱动程序,它应该读取(在某些情况下还写入)内核session空间(win32k.sys)中的一些内存地址。我读过另一个主题,例如在Windbg中,我应该将上下文更改为随机用户进程以读取内核session空间的内存(使用.process/p)。我怎样才能在内核驱动程序中做到这一点?我应该创建一个与驱动程序通信的用户进程(这是我现在的想法,但我希望有更好的解决方案)还是有更简单的解决方案? 最佳答案 session空间未映射到系统地址空间(驱动程序共享,如果未附加到任何进程)。这就是为什么您在访问win32k时出现蓝屏

windows - 故意使内核崩溃

有什么方法可以故意让内核崩溃(例如,内核崩溃、蓝屏、黑屏或其他)。假设我可以更改任何寄存器并拥有系统的管理权限。我想在Windows和Linux平台上演示这一点。感谢您的任何意见! 最佳答案 在Linux中,您必须使用CONFIG_MAGIC_SYSRQ选项编译内核,然后您可以通过将crash命令写入/proc/sysrq-trigger来使内核崩溃,或者按Alt+SysRq+C。查看documentation了解详情。在Windows中,您必须为键盘驱动程序设置CrashOnCtrlScroll注册表项,然后重新启动,然后您可以按

windows - 如何在 WinDBg 中启用内核跟踪

我已经提到了这个post:但没有帮助。发行edKd_DEFAULT_Mask8没有引起任何变化。而且我不知道如何在此处添加DWORDHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\DebugPrintFilter调用了值为8的DEFAULT,因为我在我的注册表下看不到DebugPrintFilter?我有办法验证是否安装了我的硬件的调试驱动程序,但即使在验证之后,我似乎也无法在windbg中获得内核跟踪。有一个工具叫DbgView.exe,因为我启用了以下捕获选项:CaptureWin32Captur

windows - Win32 32位进程加载64位kernel32.dll

我发现32位Win32控制台应用程序正在一台运行WindowsServer2012R2Standard的特定机器上加载64位版本的kernel32.dll。使用DependencyWalker使用一个简单的HelloWorld应用程序,它看起来像这样:它在其他机器上正确加载32位kernel32。PATH的值即使不完全相同,但至少在不同机器上以完全相同的顺序包含相关路径。根据thispage来自Microsoft,DLL的搜索顺序是:当前进程的可执行模块所在的目录。当前目录。Windows系统目录。GetSystemDirectory函数检索此目录的路径。Windows目录。GetWi