问题标签 [windows-kernel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1309 浏览

windows - 如何访问 PEPROCESS 结构的属性?

我在驱动程序开发方面完全没有任何经验。我想访问结构 PEPROCESS 的属性。我有一个指向进程对象的指针,通过 PsGetCurrentProcess 例程获得。我已经看到一些描述结构内部(属性)声明的网络,所以我可以使用这些属性的偏移量来获取它们,例如:

然而,这种方式让我陷入了困境。我想构建可以在其他类型的平台(例如:x86、x86_64)和其他版本的 Windows(XP、7、...)上运行的代码;我认为这种方式是不可能的,因为偏移量不一样。

问题:有没有一个不蹩脚的解决方案?例如:类似的东西

或者其他的东西。

0 投票
1 回答
290 浏览

linux-kernel - 是否可以使用系统调用写入内核内存?

我知道系统调用的用途是在使用级和内核级之间进行通信

那么,这是否意味着我可以使用系统调用编写内核内存?

例如 write() 用于写入内核内存

但如果我认为是可用的,它也涉及到大的安全问题吗?

如果我不能,为什么?

0 投票
1 回答
280 浏览

windows - NdisChainBufferAtBack substitution in NDIS 6

I am building a filter driver in NDIS 6. I want to add some data at the back of my NET_BUFFER. To add data I have allocated an MDL through the NdisAllocateMdl API. Now I want to know, is there any wrapper to add this MDL to the existing MDL chain?

If not, is it correct to make the last MDL's Next pointer to point to my new allocated MDL, as I was able to do so? Also what are the fields in NET_BUFFER I have to change to make it recognize the added MDL?

0 投票
2 回答
281 浏览

c++ - 在进程之间共享内核对象

我正在创建一个对象,例如 WhaitableTimer,我想与其他进程共享我的对象。

  1. 作为第三个参数,我传递了相同的名称“Time1”,这意味着我正在创建新的内核对象 htimerProcess2 但与 htimerProcess 或 htimerProcess2 具有相同的描述符表只是对现有对象 (htimerProcess) 的引用。
  2. 如何证明 htimerProcess 和 htimerProcess2 是同一个内核对象?我尝试获取他们的地址,但它们不同,或者我可以使用一个内核对象提取进程数。我正在阅读 M.Richter Advanced Win32 Programming
0 投票
1 回答
137 浏览

visual-c++ - Windows 桌面在繁重的网络 I/O 期间变得瘫痪/Windows 内核仅分配许多 CPU 中的 1 个?

问题:我们在 Windows Server 2012 系统上实现了一个视频录制系统。尽管 CPU 和内存消耗较低,但我们仍面临严重的性能问题。

简短的程序描述:应用程序(VS2005/C++)创建许多网络套接字,每个套接字从以太网网络接收多播 UDP 视频流。对于每个流,应用程序通过调用 WSARecvFrom()(重叠操作)提供接收缓冲区,在 MsgWaitForMultipleObjects() 中等待 Window 的“数据到达”事件,获取数据包,然后在无限循环中再次重复所有操作。对于测试,除了纯套接字 IO 工作之外,为了确保最小的 CPU 和内存消耗,应用程序什么都不做,也不做任何磁盘/文件 IO。应用程序进程被配置为使用机器上所有可用的内核(默认关联设置不变)。

测试运行:测试在两台不同的机器上运行:a)具有 4 个物理内核/8 个超线程的 Windows 7,b)具有 12 个物理内核/24 个超线程的 Windows Server 2012。

两个系统都显示出相同的问题:在配置一定数量的套接字/网络流之前一切正常。进一步增加它们(我们需要)最终使 Windows 桌面瘫痪(鼠标指针,重新绘制)。在这个阶段,总的 CPU 负载仍然非常低(即 10-15%),并且有很多可用内存。但是任务管理器显示了极其单向的 CPU 负载:CPU 0 接近 100%,所有其他 CPU 接近 0%。在任务管理器中更改进程的处理器亲和力没有帮助。

问题 1:看起来 CPU 0 正在做整个内核的网络 IO 工作。有可能吗?

问题2:如果是,有没有办法控制内核对可用CPU的使用?如果是,如何?

问题3:如果没有,是否有任何其他方法可以让Windows将(内核)网络IO工作分配给其他CPU(即通过安装多个网卡,每个网卡只接收网络流的一个子集,并将每个网卡绑定到另一个中央处理器) ?

非常感谢任何人的任何提示。

0 投票
2 回答
960 浏览

visual-studio-2010 - 从内核调试模式调试 dll 和 sys

我需要打破已经加载的 dll 函数。我怎样才能做到这一点?我尝试了以下事情。dll 名称:test.dll 函数名称:allocate()

我正在使用windbg,试图调试内核驱动程序。在做内核调试的同时,我还需要打入一些用户空间的dll函数,其中的代码我有。我怎样才能做到这一点?

0 投票
0 回答
47 浏览

windows - FilterReturnNetBufferList 例程后 Windows 崩溃?

我正在编写轻量级过滤器驱动程序,其中我编写了 FilterRecieve 函数,该函数用它自己分配的 NBL 替换收到的 NBL,并用这个新的 NBL 调用 NdisFIndicateRecieveNetBufferLists。但是随着 FilterReturnNetBufferList 函数被调用,windows 正在崩溃。经过崩溃分析,它显示窗口在 E1000ReturnNetBufferLists+9 处的 E1G6032E 模块中崩溃。

是因为我在接收程序中更改了 NBL 吗?我是否必须撤消在 FilterReturnNetBufferList 中的 Receive 中所做的所有更改?

0 投票
1 回答
743 浏览

c++ - Minifilter如何改变文件大小?

我正在开发一个微过滤器来检测拖放文件到硬盘。当用户将文件拖放到驱动器时​​:

  1. 将文件名更改为指定的文件名。例如:redirect_file_name.txt
  2. 然后我删除这个文件。

但是文件redirect_file_name.txt 的大小不会改变。

  1. 如果源文件大小为 1GB,redirect_file_name.txt 为 1GB
  2. 如果源文件大小为 100MB,redirect_file_name.txt 为 100MB

我通过这篇文章将源名称更改为 redirect_file_name.txt

如何更改文件 redirect_file_name.txt 的大小?

更新:将 FltSetInformationFile 与 FileAllocationInformation 一起使用

但状态是 0XC000000D (STATUS_INVALID_PARAMETER)

0 投票
1 回答
1086 浏览

c++ - Minifilter在预操作中重定向文件创建?

我正在尝试在硬盘卷上重定向文件创建(即 \Device\HarddiskVolume2)

在 minifilter open pre 中找到了重定向文件名。但我有一个系统对话框如下

在此处输入图像描述

这是我的代码:

我希望这个对话框不显示。我应该怎么做?

非常感谢!

0 投票
1 回答
3711 浏览

windows - 为什么windows在内核中处理滚动条?

“所有” Windows 版本的新1 位漏洞利用内核代码中处理滚动条的错误。这让我思考。为什么windows在内核而不是用户模式下处理滚动条?历史原因?有没有其他操作系统可以做到这一点?