问题标签 [windows-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.

0 投票
2 回答
449 浏览

c++ - fscanf 双重读取文件中间的变量 - Windows NT 4.0 dll

我在读取 Windows NT 4.0 dll 文件中的 txt 文件时遇到问题;在您问之前,我目前对将其迁移到新操作系统不感兴趣。我只想解决这个问题,让我之后的其他人担心迁移这个超级遗留软件。

使用fscanf读取txt文件时出现问题,如图:

使用 MATLAB 创建的 txt 文件由 128 行、每列 8 列组成,由 5 个空格分隔,并且在 MATLAB 中的格式如下:

这段代码不是我写的,工作了好几年。然而,最近我们不得不重建/重新安装 Windows NT 4.0 操作系统和软件,现在我得到一个奇怪的错误。该程序使用顶部提供的代码很好地读取 txt 文件,直到它到达第 123 行,此时它读取第 8 列两次,导致所有后续变量移动一个位置,完全搞砸了最后一个程序的几行。有趣的是,这个问题可以通过手动将前 123 行批量复制并粘贴到一个新的 txt 文件中,然后将最后几行一个接一个地粘贴到同一个新的 txt 文件中并将其用作输入(复制完成在写字板内的 NT 机器上)。这样做可以消除这种双重阅读问题。我不知道什么问题会导致这个错误,但也让它通过这种奇怪/笨拙的方法来修复。新旧输入都会出现问题,所以我认为输入文件不是问题,因为它们没有改变。

哦,另外,如果我更改 txt 文件中每列之间的空格数,错误的位置会发生变化。将其减少到 1 个空格会导致错误发生在第 120 行左右,而增加空格数(尝试 7 个而不是 5 个)会将错误推低到第 124 行。

我不是编程专家(一直是按需学习的人),因此非常感谢您帮助解决这个问题。谢谢!

0 投票
1 回答
4458 浏览

operating-system - 为什么 Windows NT 远离微内核?

有人告诉我,Windows NT 最初是为实现微内核架构而设计的,但后来转向混合内核。

是什么导致了这种变化?我很难找到有关此的任何信息。

0 投票
3 回答
171 浏览

c# - 使用 Win NT 内核 API 连接大文件

我一直在寻找一种将大文件(几千兆字节)连接在一起而不必重写其中一个文件的方法。我确信操作系统在操作主文件表时会在内部执行此操作。这纯粹是针对速度至关重要的内部应用程序,即使以数据完整性为代价(如果冒着未记录的 API 的风险)。该应用程序处理大量高带宽、多通道以太网数据,其中损坏的工作单元(在本例中为文件)不会对整体处理结果产生很大影响。

在合并文件A和的那一刻B,所涉及的工作量等于:A[Read] + B[Read] +C[Write]`。你们中的任何一位 NT 专家会阐明如何解决这个问题以直接进入 MFT 吗?

我无法获得有关要探索哪个 API 的任何线索,并且希望得到一些指示。尽管该应用程序处于托管状态,但我很乐意探索原生 API,甚至设置轻量级 VM 进行测试。

提前致谢。

0 投票
1 回答
257 浏览

visual-studio - 为什么 Visual Studio 多处理器构建会执行多个项目而不是多个源文件?

在 NT 构建环境(也称为 Windows DDK 构建环境)中,您可以通过在 build.exe 中指定 -M 参数来使用多个处理器构建源代码树。它所做的是按依赖顺序构建你的项目,当它构建每个项目时,它会启动多个线程来构建单独的源文件,显然,首先构建预编译的头文件,以及任何其他需要完成的事情在可以构建其余源代码之前(midl 等)

Visual Studio/MSBuild 采用了非常不同的方法。它使用多个线程构建项目,但仅按顺序构建单个源文件。当您有很多小项目时,这非常有用。但是,当您的项目包含大量源文件时,这会令人沮丧。

有没有人知道为什么 Visual Studio 的人不使用线程来构建单独的源文件,如 Windows 人所做的(或至少习惯于)?

0 投票
1 回答
379 浏览

linux-kernel - 真正的文件描述符克隆

为什么尽可能没有真正的文件描述符克隆机制,就像磁盘文件一样。

POSIX:

从这些系统调用之一成功返回后,新旧文件描述符可以互换使用。它们引用相同的打开文件描述(参见 open(2)),因此共享文件偏移量和文件状态标志;例如,如果在其中一个描述符上使用 lseek(2) 修改了文件偏移量,则另一个描述符的偏移量也会改变。

视窗:

复制句柄指的是与原始句柄相同的对象。因此,对对象的任何更改都会通过两个句柄反映出来。例如,如果您复制一个文件句柄,则两个句柄的当前文件位置始终相同。对于具有不同文件位置的文件句柄,请使用 CreateFile 函数创建共享对同一文件的访问权限的文件句柄。

使用克隆原语的原因:

  • 操作文件存档时,我希望存档中的每个文件都必须可以独立访问。文件存档的行为应该有点像虚拟文件系统。

  • 文件类型检查。能够克隆文件偏移量可以在不影响原始位置的情况下读取文件的一小部分。

0 投票
1 回答
36 浏览

security - windows nt中关于账户的概念模型是什么?

“用户”和“用户帐户”是否可以互换,如果可以,在多大程度上可以互换?显示名称和例如怎么样。客户名称?本地用户与域用户如何发挥作用?和之类的服务LocalService呢?(后者在“本地系统”帐户和“网络服务”帐户的区别?)。LocalSystemNetworkService

参与者可以通过哪些不同方式访问对 nt 系统的某种程度的控制?

动机:我对此很感兴趣,因此我可以找到正确的函数来从服务中检索名称。此外,从安全的角度来看,人们希望清楚。

windows nt中与账户相关的概念模型是什么?

0 投票
1 回答
650 浏览

multithreading - 为什么 Windows NT 线程有单独的用户模式/内核模式堆栈?

Microsoft Press 的Windows Internals,第 6 版说,在 Windows NT 中,每个线程都有2 个堆栈:一个在用户模式下运行时使用,一个在内核模式下使用。

为什么会这样?似乎用户模式堆栈也可以在系统调用中使用。这种设计有什么优势吗?

0 投票
9 回答
25466 浏览

sql-server - 通过 JDBC 以 Windows 用户身份向 SQL Server 实例进行身份验证

我必须为支持租户的 Web 应用程序支持多种数据库类型。其中,我成功地支持了 Microsoft 的 SQL Server,通过使用带有“jdbc:jtds:sqlserver://192.168.1.189:1433/ApplicationName”之类的连接字符串的 net.sourceforge.jtds.jdbc.Driver 类。这可行,但它要求用户在 SQL Server 实例中明确定义用户并启用 SQL Server 身份验证。

现在,不可避免地,需求发生了变化,我们应该支持通过 Windows 身份验证连接到 SQL Server。显然,这需要对连接字符串进行某种更改,因为数据库服务器必须能够以某种方式区分传递到数据库连接的凭据是针对 SQL Server 安装中定义的用户还是 Windows 操作系统中定义的用户。但它是什么?

根据互联网的建议采取行动,如果进展到使用;useNTLMv2=true;domain=WORKGROUP. 这似乎使数据库服务器知道我想以 Windows 用户身份进行身份验证,但实际登录失败

现在在我的测试设置中,J2EE 应用程序和 SQL 服务器实例实际上都在同一台机器上(尽管在生产中它们可能不在),而且这台计算机仍然不够受信任而无法登录到自己?显然,我在这里遗漏了大部分难题。需要做什么才能让 SQL Server 实例相信启动它的用户实际上可以通过 JDBC 登录到它?

编辑

由于我们在尝试将我们的 Web 应用程序与完整的 Microsoft 基础架构堆栈(SQL Server、Active Directory、域名服务...)集成时已经付出了太多不成功的努力,所以我必须限制这个问题:

有没有人知道一种方法可以通过J2EE 应用程序通过JDBC定义为“Windows 用户”的用户帐户访问SQL Server安装,无需使用 Active Directory、运行 Web 应用程序的 Windows 机器和专有 DLL?赏金是针对该子问题的任何解决方案。整个问题显然过于广泛,无法在一篇论坛帖子中回答。

0 投票
2 回答
954 浏览

windows - nt!KeWaitForSingleObject 不带参数

我目前正在尝试调试系统死锁,我很难理解这一点。

为什么 KeWaitForSingleObject 的第一个参数为空?

除非我误解,否则不是等待对象的第一个参数吗?死锁只是这个线程什么都不在等待还是这是普通的行为?

此外,我看到另一个进程(services.exe)显示了类似的堆栈跟踪:

这个线程本质上是在等待自己吗?

0 投票
1 回答
1606 浏览

c++ - 如何将具有通用控件的程序从 Visual C++ 6.0 迁移到 Visual C++ 2010(在 64 位计算机上)

我正在尝试将 Visual C++ 6.0 程序(最初在 Windows NT 机器上编写)迁移到 Visual C++ 2010,以便在我的 64 位 Windows 7 PC 上使用。该程序编译正常,但运行时断言失败,在调试器中产生以下输出:

OLE 控件 {F9043C85-F6F2-101A-A3C9-08002B2F49FB} 的 CoCreateInstance 失败。

结果代码:0x80040154

控件是否正确注册?

警告:资源项和 Win32 Z 顺序列表不同步。Tab 顺序可能没有很好地定义。

警告:CreateDlgControls 在对话框初始化期间失败。

失败的断言位于 occccont.cpp 的第 925 行:

我从http://dynamicsuser.net/forums/p/25968/140697.aspx了解到,Microsoft Common Dialog Control v6.0 可能未注册。我用 Regsrv32.exe 注册它并重新启动 Windows,但错误仍然存​​在。

我的目标是判断这个旧程序是否可以使用新工具——而不是真正重写旧程序(尽管稍后会出现)。是否可以让旧程序在我的新机器上运行?

编辑:添加导致断言失败的代码

...