- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我制作了一个库,用于将任何 PE 格式文件映射到内存地址,问题是我只在用户区使用 Visual Studio 2013 和标准 .lib 格式。这是否意味着我的库不能在设备驱动程序中使用?
例如我有以下片段:
HMODULE ntdllmod = LoadLibraryA("ntdll.dll");
if (ntdllmod)
{
ZwQueryInformationProcess func = (ZwQueryInformationProcess)GetProcAddress(ntdllmod, "ZwQueryInformationProcess");
}
这在用户端运行良好,但在内核上我不需要调用 GetProcAddress,我可以直接调用 ZwQueryInformationProcess,因为它是一个 ntoskrnl 导出...我不能只做这个吗?:
#IF USER_LAND
HMODULE ntdllmod = LoadLibraryA("ntdll.dll");
if (ntdllmod)
{
ZwQueryInformationProcess func = (ZwQueryInformationProcess)GetProcAddress(ntdllmod, "ZwQueryInformationProcess");
}
#elif KERNEL_MODE
//Run my Kernel version code here.
如果这不可能,那么我如何在 VS2013 中构 build 备驱动程序库? (找不到选项)此外,任何了解如何链接驱动程序库的指南或引用资料都会有所帮助,假设它与普通库不同。
编辑:我已经知道使用 ZwQueryInformationProcess,问题是我是否可以使用预处理器指令 #IF 生成驱动程序库或用户模式库,并在同一解决方案中同时实现这两种实现。
谢谢。
最佳答案
我只会解释 ZwQueryInformationProcess 函数的情况。ZwQueryInformationProcess 已经由 ntoskrnl.exe 导出,然后就可以轻松使用了。
例如)#include "ntddk.h"
NTSYSAPI NTSTATUS NTAPI ZwQueryInformationProcess( 在处理过程句柄中, 在 ULONG ProcessInformationClass 中, OUT PVOID ProcessInformation, 在 ULONG ProcessInformationLength 中, OUT PULONG ReturnLength OPTIONAL);
在源文件中添加 ntoskrnl.lib。
终于可以使用了。就是这样。
例)
ULONG GetProcessID(HANDLE ProcessHandle, PPEB* ppPeb )
{
NTSTATUS Status;
PROCESS_BASIC_INFORMATION ProcInfo;
Status = ZwQueryInformationProcess(ProcessHandle, ProcessBasicInformation, &ProcInfo, sizeof(ProcInfo), NULL);
if (STATUS_SUCCESS == ntStatus) {
if (ppPeb) {
*ppPeb = ProcInfo.PebBaseAddress;
}
return ProcInfo.UniqueProcessId;
}
return 0;
}
关于c++ - 设备驱动程序库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21250787/
我正在为我正在开发的软件寻找更新库。这是一个小软件,但我想为它注入(inject)一些不错的功能。其中之一是自动更新。我已经开发了 2 类库来为我完成这项工作,但我想要一个更强大的库,因为它缺少一些功
我是一名优秀的程序员,十分优秀!