草庐IT

X5内核

全部标签

c - 在 Windows 内核中打开、读取和写入串行端口

我正在用C编写Windows内核驱动程序,我需要通过串行设备(特别是COM3)发送和接收数据。我被困在CreateFile、ReadFile和WriteFile函数上,因为这些似乎是在内核中不起作用的用户空间函数。我错了吗?或者,如果没有,从Windows内核中打开和使用串行端口的最佳方法是什么?非常感谢。 最佳答案 你需要ZwCreateFile,ZwReadFile和ZwWriteFile在内核模式下工作的函数。 关于c-在Windows内核中打开、读取和写入串行端口,我们在Stac

用于直接 I/O 的 Windows 内核驱动程序——有人去过那里吗?

我需要以我们目前正在做的更好的方式处理到并行端口的直接I/O-目前我们使用一个内核驱动程序,它使用I/O保护映射“打开”可用地址。这工作正常,但越来越多的落后。我们仍然希望继续使用并行端口,并且有非常令人满意的CardBusExpressCard等并行端口卡供应商。我想创建一个驱动程序,它知道总线枚举器分配给设备的地址,并允许我写入这个地址来self的(Delphi)应用程序。由于这个主题的复杂性,我正在为从哪里开始而苦苦挣扎。请问有人走过这条路吗? 最佳答案 您可以试试inoutp32.dll。请访问:http://sheepdo

windows - 内核驱动签名

我环顾四周,似乎无法直接回答这个问题。我是业余程序员,我在Windows驱动程序方面做了大量工作,并为WindowsXP编写了我自己的个人“防病毒”驱动程序。所以不要误会我的意思,我不在任何软件开发公司或类似公司工作。我的问题是:就Windows7x64而言,是否有任何可能的合法方法可以用来释放我的驱动程序的签名,而该驱动程序仅供我个人使用?是的,我很清楚我可以对我的驱动程序进行测试签名并在Windows测试模式下在虚拟机中运行它,我经常这样做。但是,如果您在测试模式下使用过Windows,就会知道存在一些主要缺点。总而言之,我(一个业余爱好者)是否可以发布一个驱动程序供我个人使用,而

c++ - 内核态和用户态共享内存。如何共享句柄?

我正在尝试在用户进程和内核之间使用共享内存。选项一-让内核创建部分并让用户模式应用程序按名称“Global\my_mem”打开内存。它仅在只读模式下工作。当我尝试使用FILE_MAP_WRITE打开部分时,它拒绝访问(5)。不确定如何授予访问权限或修改DACL。选项二-通过IOCTL传回句柄。这是有问题的,因为在KERNEL中打开的部分句柄是0xFFFFFFFF80001234。我的理解是,设置了任何高位的句柄不能在用户模式下使用。特别是如果应用程序是32位的:)最初我预计该部分句柄会有点类似于内核文件句柄,我将能够使用它。在内核态和用户态之间建立共享内存channel的正确方法是什么

c - Windows 内核驱动程序 : How to determine if thread terminated?

我有一个线程用于某些操作,它需要保持事件状态,直到标志另有说明为止。我用PsCreateSystemThread创建线程,然后使用ObReferenceObjectByHandle获取ETHREAD在使用KeWaitForSingleObject卸载驱动程序之前等待线程终止的对象引用.Thefunctionthatcreatesthethreadandretrievesareferencetoit:ntStatus=PsCreateSystemThread(&hThread,(ACCESS_MASK)0,NULL,(HANDLE)0,NULL,ThreadRoutine,(PVOID)

windows - 关于 Windows 内核对象的问题

我的很多问题都在这里得到了解决,非常感谢你们。我还想再问一个。:)我正在阅读有关的文章,它说:当我们想要访问现有内核对象(而不是创建一个新内核对象)时,我们必须指定我们打算对该对象执行的操作。如果允许我们使用此类操作进行访问,则会返回内核对象的句柄。...如果返回的句柄用于调用需要与您请求的权限不同的API,则会发生拒绝访问错误。据我所知,句柄只是一个普通的整数,它只是进程句柄表的索引,句柄值不能提供更多信息。如果我们已经获得了内核对象的句柄,系统如何检测到我们将它用于我们请求之外的其他操作?一个内核对象可以有多个句柄,这些句柄的拥有者可能有不同的访问类型。系统在哪里存储这些不同的访问

c++ - 监视内核注册表更改

人们能否就我需要研究的主题给我一些建议(没有双关语意)以便能够做到这一点?我不是真正的Windows专家,但我能很快掌握新概念。我看到了MarkRussinovich和BryceCogswell写的进程监控程序:http://technet.microsoft.com/en-gb/sysinternals/bb896645它可以查看内核中注册表键值发生的所有事情。过去,我已经能够使用C#和用户级注册表访问来执行此类操作,但我无法使用从codeproject获得的包装器套件访问内核。人们可以帮助我了解我应该从哪里开始吗?我想我是在寻求更多有关Windows/OS方面的帮助。这样做的原因:

windows - 如何注册为 NT 内核事件的实时 ETW 使用者?

我已经能够成功地使用logman来转储一些内核跟踪。但是,我希望能够以编程方式在我的应用程序中启用内核事件的实时消耗(主要是线程/进程创建/删除和文件I/O)。完成此任务的最佳方法是什么? 最佳答案 您在StartTrace中启用内核事件.在EVENT_TRACE_PROPERTIES您传递给StartTrace,EnableFlags包含不同内核事件提供程序的各种标志。将EVENT_TRACE_PROPERTIES中的LogFileMode设置为EVENT_TRACE_REAL_TIME_MODE成为实时消费者。然后您可以使用Pr

windows - Windows 内核中的 free/malloc 函数

我在哪里可以找到内核中的free和malloc函数?我确实包含了stdlib.h,但是free和malloc函数不在stdlib.h中。我在哪里可以找到这些功能?谢谢! 最佳答案 看看ExAllocatePoolWithTag.在OSR有一些讨论,如果您正在进行Windows内核编程,这是一个很好的资源。安装WindowsDriverKit/DDK用于本地主机上的所有开发文件和文档。 关于windows-Windows内核中的free/malloc函数,我们在StackOverflow上

c - 将内核添加到 Windows 启动菜单

我正在尝试启动内核,但遇到了问题在Windows启动菜单上获取它。我已经编写并构建了带有thisguide的小型测试内核,但我不知道该怎么做获取实际的PE文件以连接到启动菜单。我读了here和here您使用BCDedit将其添加到启动菜单,所以我试着这样做:bcdedit/create/d"TestBoot"/applicationbootsector//gavetheguid:{1c8a5e74-84ff-11e3-a4da-8050f0e41ed6}bcdedit/set{1c8a5e74-84ff-11e3-a4da-8050f0e41ed6}path\Users\Taylor\