问题标签 [nt]
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.
c - 如何在不引入文件系统竞争的情况下获取当前可执行文件的文件句柄?
我需要从当前的可执行文件中读取一些数据(即调试信息)。
这很简单,只需调用QueryFullProcessImageName
,然后使用它返回的路径打开文件并从中读取。
但是,这种方式在检索文件路径C:\my_program.exe
和打开名为C:\my_program.exe
. 在该窗口中,可以将原始文件替换为我不想阅读的其他文件,即发生文件系统竞争。
我有一个外部强加的要求,即不应发生这场比赛。
基本上,我需要类似不存在的东西,QueryFullProcessImageHandle
而不是QueryFullProcessImageName
这样我就可以在不按名称打开文件的情况下从中读取。
通过阅读 ReactOS 源,我了解到这样的句柄很可能也存在于 Windows 上,并且保持在结构中EPROCESS
(作为.SectionObject
QueryFullProcessImageName
有没有办法使用 WinAPI 或至少 NT API 获得这个句柄?
(GetModuleHandleEx
似乎返回完全不同的句柄。)
python - '\n' == 'posix' , '\r\n' == 'nt' (python) 对吗?
我正在编写一个 python(2.7) 脚本,它编写一个文件并且必须在 linux、windows 甚至 osx 上运行。不幸的是,对于兼容性问题,我必须在 windows 样式中使用回车和换行。如果我假设可以吗:
我必须考虑其他人吗?os.name 有其他选择('posix'、'nt'、'os2'、'ce'、'java'、'riscos')。我应该改用平台模块吗?
更新1:
目标是在任何操作系统中使用 '\r\n'。
我正在接收来自的 str
str = etree.tostring(root, pretty_print=True, xml_declaration=True, encoding='UTF-8')
我不是在读文件。
3. 我的错,我应该检查 os.linesep 吗?
c++ - IntelliSense:“PVOID”类型的值不能用于初始化“_NtQuerySystemInformation”类型的实体
我想知道由确定的进程打开的文件的所有句柄,并且我有以下代码在这里找到,但是当传递给 VS 时出现错误消息:
IntelliSense:“PVOID”类型的值不能用于初始化“_NtQuerySystemInformation”类型的实体
如何解决这个问题?
预先感谢。
c# - C# 中的字节到字符串转换失败
我有一个通过蓝牙发送数据的硬件。我正在尝试阅读它们,但信息与原始数据不符。
我正在使用 ReadByte 接收一一发送的数据。
结果:
如果我显示创建的字符串中的元素,我会得到:
string_ascii[0] and [3] = 3 and 3 ([1] and [2] 是 \r & \n)
string_bit[0] and [3] = 3 and 0 ([1] and [2] 是 \r & \n)
string_base64[0] and [3] = M and K ([1] and [2] are \r & \n)
应始终为: 3 和 35(从硬件发送的数据格式:整数\r\n)
显然,如果我尝试将相同的元素转换为整数,结果将不是我所需要的。
我得到:
ascii[0] 和 [3] = 3 和 3
位 [0] 和 [3] = 3 和 0
base64[0] 和 [3] = -1 和 -1
PS。我注意到当有 1 位整数时,代码可以正常工作。
我该如何解决 ? 提前致谢。
c - NtQuerySystemInformation 返回 24 (ERROR_BAD_LENGTH)
这是我的功能:
我传递SystemBasicInformation
给函数。在第一次调用后NtQuerySystemInformation
,我得到一个错误。结果RtlNtStatusToDosError(Status)
是24 (ERROR_BAD_LENGTH)
。哪里有问题?
io - 磁盘 IO 是否直接对应其物理扇区位置?
我一直在玩闪存驱动器、HDD 和 SSD 上的磁盘 IO,/dev/sd*
方法是像打开任何其他文件一样在 Linux 中打开路径。
我知道磁盘上的内存控制器可以向操作系统隐藏真正的块顺序(通过映射)。
这归结为以下问题:
这些块是
/dev/sd*
按照操作系统感知的顺序排列的,还是按照磁盘内存控制器感知的顺序排列的?POSIX OS 之间的块顺序是
/dev/sd*
主观的吗?如果在 NT 或 Cygwin 系统上完成这些属性可以更改吗?
Flash、HDD 和 SSD 之间的此属性是否不同?
是否可以对打开
/dev/sd*
路径中的特定索引进行写入,或者这是由内存控制器确定的?
提前致谢!
c - 如何将参数传递给 ZwCreateThreadEx 例程?
下面的代码可以很好地创建单独的线程,而无需传递任何数据类型参数。现在我想知道如何将参数传递给ZwCreateThreadEx
调用时执行的方法?
例如,如何传递一个HANDLE类型和一个类型UNICODE_STRING?
我的实际代码:
windows - KMDF:处理 IRQ
我们需要在 KMDF 驱动程序中处理 IRQ
我已经注册了 EVT_WDF_DEVICE_RESOURCE_REQUIREMENTS_QUERY 回调函数,但系统没有调用它。
在没有分配任何资源的情况下调用 EVT_WDF_DEVICE_PREPARE_HARDWARE。尝试在此处调用 WdfInterruptCreate() 结果 STATUS_INVALID_DEVICE_STATE
从系统获取免费 IRQ 号并附加中断处理程序的正确方法是什么?
更新:
在我们在 AddDevice 处理程序系统中成功创建 WDFINTERRUPT 对象后,仍然不会询问我们有关资源的信息 (EVT_WDF_DEVICE_RESOURCE_REQUIREMENTS_QUERY)
winapi - Windows上的隐式进程间共享内存?
我想做的是将特定的内存区域标记为在同一图像/二进制文件的进程之间自动共享,类似于 __declspec(allocate)... 和 __pragma(section...)。
我知道我可以使用名称管道或等效的,但为此我想避免系统调用或额外的开销。我只是不确定是否有任何方法可以通知 NT 内核为图像的每个进程自动映射特定范围的页面。我在 MSDN 上没有找到任何东西,尽管 MSDN 不包括未记录的功能(根据定义),我可以很好地使用它。
我也没有看到任何特定的 PE 部分名称/标志可以表明这一点,尽管我可能遗漏了一些东西。
Ed:我注意到实际上有一个 PE 部分标志 IMAGE_SCN_MEM_SHARED,但我需要研究它是如何工作的。
windows - 如何“欺骗”程序安装程序,以便他们可以在不受支持的操作系统上工作?
我想在 pre-alpha XP 版本(代号 Windows Whistler)上安装一些软件。但是,90% 的安装程序无法运行。我猜这是因为内核版本,我认为它介于 5.0 和 5.1 之间(因为我记得即使应该在 Windows 2000 下运行的软件也没有成功安装)。
我怎样才能最正确和最有效地更改注册表中的值,以便我有机会测试一些软件(我知道由于缺少功能可能会出现错误,我正在 VM 中进行测试)。
关于内核版本为 5.2 的 Windows XP x64 的相同问题 - 在哪里更改它以便为 Win XP x86 设计的基本软件确实像在常规 Win XP 上一样安装(或者可能在属性中有一些兼容性选项)。
谢谢你的帮助。
UPD:Java Runtime Environment 版本 5 更新 xxx 应该可以在 Windows 2000 上运行(甚至在 Windows 98 SE 上,我测试过)。但它以某种方式拒绝安装在 Whistler 上......也许他们在开发过程中删除了一些重要的东西以使构建更快地编译?