草庐IT

windows - Windows 内核中有多少 C++11 是可用的

最新的WDK可与支持C++11的VisualStudio15一起使用。但是,我还没有看到关于有多少功能可用的文档。显然,我不会使用std::thread和std::mutex,但不太清楚的是,神奇的静力学。Class*function(){staticClassmyInstance;return&myInstance;}现在在用户模式下是线程安全的,但尚不清楚这种构造是否可以在内核中工作。更令人担忧的是,内核是否可以接受C++11之前的代码(假设析构函数是微不足道的)。 最佳答案 我找到了一些关于开关/kernelmsdn:/ker

c++ - FindResource 的内核模式版本

我正在尝试将二进制资源嵌入到我的内核模式静态库中,但我没有看到与FindResource和LoadResourceAPI等效的内核。你能帮帮我吗? 最佳答案 也许LdrFindResource和LdrAccessResource可以帮助您。但此功能未记录且不受Microsoft支持。 关于c++-FindResource的内核模式版本,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions

c - 在没有驱动程序的情况下从用户模式读取内核内存

我正在编写一个程序,该程序枚举由SetWindowsHookEx()创建的钩子(Hook)这是过程:使用GetProcAddress()获取User32.dll中导出的gSharedInfo(有效,已验证)读取位于gSharedInfo+8的用户模式内存,结果应该是第一个句柄条目的指针。(有效,已验证)读取位于[gSharedInfo]+8的用户模式内存,结果应该是count要枚举的句柄。(有效,已验证)从第2步得到的地址读取数据,重复count次检查HANDLEENTRY.bType是否为5(这意味着它是一个HHOOK)。如果是,打印信息。问题是,虽然第1-3步只是乱用用户模式内存,

windows - 指示 win32 线程在单个处理器内核上运行

我有一个测试程序,如果它可以依赖于在Windows上以严格的优先级顺序安排的线程,它会简单得多。我看到一个低优先级线程与高优先级线程一起运行,我想知道这是不是因为不同的线程被安排在不同的处理器内核上。有没有办法强制进程中的所有Win32线程使用单个处理器内核?SetThreadAffinityMask看起来它可能很有趣,但它的文档并不完全清楚,我不确定如何使用它。 最佳答案 SetThreadAffinityMask函数:为指定线程设置处理器关联掩码。http://msdn.microsoft.com/en-us/library/w

windows - 如何在验证内核签名策略时使用 signtool.exe 列出所有签名

因此,我使用WindowsSDK8.1中的signtool对二进制文件进行签名:"C:\ProgramFiles(x86)\WindowsKits\8.1\bin\x64\signtool.exe"sign/a/iSymantec/acC:\utils\MSCV-VSClass3.cer/ph/t"http://timestamp.verisign.com/scripts/timstamp.dll""foo.exe"DoneAddingAdditionalStoreSuccessfullysigned:foo.exe"C:\ProgramFiles(x86)\WindowsKits\8

Windows 内核调试 : Debug over virtual serial port with WDK 8. 1

我目前在从我的Windows8.1x64主机上对Windows7x64目标进行内核调试时遇到一些问题。我在我的主机上运行带有WDK8.1的VisualStudio2013,并配置了在VMWare中运行的目标机器。这是我对目标机器的配置。它的配置主要是从这里阅读-http://www.codeproject.com/Tips/545835/Kernel-Mode-Debugging-in-a-VM-using-Visual-Studio:Windows7x64VMWare的串行端口COM2,名称为\\.\pipe\com2。检查VMWare中的所有正确选项通过msconfig启用操作系统

c - 如何显示来自驱动程序的弹出消息框(内核模式)?

我正在编写一个驱动程序,它需要立即弹出一个对话框来通知用户一个事件。(有点类似于NTFS的“文件损坏”通知,只是这不是与文件系统相关的驱动程序。)我知道ExRaiseHardError和IoRaiseInformationalHardError应该可以解决这个问题,但它们似乎没有用——它们“成功”返回但实际上没有做任何事情。我该怎么做(不创建用户模式程序)?下面是代码的用户模式版本(可以正常工作)。在内核模式版本中,我调用了ExRaiseHardError而不是NtRaiseHardError,但调用方式完全相同。#include#pragmacomment(lib,"ntdll.li

windows - 如何从Windows内核调用usermode?

当Windows内核中发生有趣的事件时,我想从驱动程序调用我的应用程序。我需要能够传递至少4字节的数据回用户模式。如何做到这一点?这些事件可能会发生,但不会太频繁,所以我不想构建队列系统并使用ioctls。我在想这样的事情:驱动程序被加载,用户模式应用程序使用ioctl注册它的回调,内核在事件发生时继续调用回调,最后用户模式客户端注销回调,不再向用户模式发送数据。这可能吗?我对内核编程还不太熟悉,所以在谷歌搜索了一天之后,我决定问这个问题。我注意到关于内核和驱动程序的讨论并不多。更不合适的医生。 最佳答案 微软就此发表了一篇论文(当

windows - 如何判断 Windows 内核事件对象是自动重置还是手动重置?

Windows允许创建(命名)Eventobjects.一个事件(Windows中的同步原语)可以是自动重置类型(在这种情况下你是couldsayit'skindofasemaphore)或者它可以是手动重置类型,在这种情况下它会保持设置直到有人重置它。现在,来自docs对于CreateEvent,OpenEvent,SetEvent等。似乎没有办法确定事件创建后是自动重置还是手动重置。我所处的情况是,一个进程创建一个命名的事件,而第二个进程将必须对该事件进行操作(它传递名称,然后打开事件并最终向它发出信号)。由于事件应该始终是手动重置事件才能使整个事件有意义,所以我希望在第二个过程中

windows - 在 Windows 内核模式和用户模式之间切换的成本(以周期为单位)是多少?

我很好奇现代CPU从内核模式和用户模式执行切换的周期成本是多少? 最佳答案 在大多数现有系统中,从“用户模式”切换到“内核模式”的成本非常高。据测量,在基本请求getpid上,在大多数机器上花费1000-1500个周期。其中只有大约100个用于实际切换(70个从用户空间到内核空间,40个返回),其余的是“内核开销”。在L3微内核中,这种开销的最小化将总成本降低到大约150个周期。引自here. 关于windows-在Windows内核模式和用户模式之间切换的成本(以周期为单位)是多少?,