错误 LNK2001:wdk 中无法解析的外部符号 _fltused

2023-12-02

我试图在 C 代码中定义一个双数据类型变量,该变量将在 Windows 内核中使用。代码可以编译,但在链接时出错。我尝试在源文件中使用 libcntpr.lib 并在代码中定义 __fltused 变量,但无济于事。如果有人可以帮助我如何使用它,我将非常感激。


不知道是否仍然适用于当前的 WDK,但 Walter Oney 阻止了在驱动程序中使用浮点内容here.

问题比仅仅找到合适的库更糟糕, 很遗憾。 C 编译器的浮点支持假设它 将在一个应用程序环境中运行,您可以 初始化协处理器,安装一些异常处理程序,然后 爆炸。它还假设操作系统会照顾 根据需要保存和恢复每个线程的协处理器上下文 从那时起发生的所有线程上下文切换。

这些假设对于驾驶员来说通常并不成立。此外, 运行时库对协处理器异常的支持无法工作,因为 有一大堆缺失的基础设施。

您基本上需要做的就是以这样的方式编写代码: 每次要使用协处理器时都对其进行初始化(不要 忘记 KeSaveFloatingPointState 和 KeRestoreFloatingPointState)。放 以便协处理器永远不会生成异常, 也。然后你可以简单地在某处定义符号 __fltused 满足链接器。 (该符号通常所做的就是将其拖入 运行时支持。你不需要这种支持,因为正如我所说,它 在内核模式下不起作用。)毫无疑问,您需要一些汇编 初始化步骤的语言代码。

如果您有一个系统线程将执行所有浮点运算 数学,您可以在开始时初始化协处理器一次 线。系统将根据需要保存和恢复您的状态 然后继续。

不要忘记你只能在 IRQL

除其他外,还有 FINIT。如果您对协处理器感到生疏 编程,我的建议是告诉你的管理层,这是一个 需要大量研究才能解决的专门问题。 然后飞往马提尼克岛一周左右(飓风季节过后, 即)在适当的环境中进行研究。

说真的,如果您不熟悉 FINIT 和其他数学协处理器 说明,这可能不是你应该做的事情 合并到您的驱动程序中。

微软还发布了一篇有趣的文章:用于内核模式驱动程序的 C++:优点和缺点

在 x86 系统上,浮点和多媒体单元不是 除非特别要求,否则可在内核模式下使用。尝试使用 它们不正确可能会或可能不会导致浮点故障 IRQL(这会导致系统崩溃),但可能会导致静默数据 随机过程中的腐败。使用不当也会造成数据 其他流程中的腐败;此类问题往往很难解决 调试。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

错误 LNK2001:wdk 中无法解析的外部符号 _fltused 的相关文章

  • xmake新增对WDK驱动编译环境支持

    为什么80 的码农都做不了架构师 xff1f gt gt gt xmake v2 2 1新版本现已支持WDK驱动编译环境 xff0c 我们可以直接在系统原生cmd终端下 xff0c 执行xmake进行驱动编译 xff0c 甚至配合vscod
  • Windows驱动开发环境搭建(Visual Studio 2015 + WDK)

    在Win10环境下开发Windows驱动程序需要依赖WDK xff0c 微软在 WDK7600 以后就不再提供独立的内核驱动开发包了 xff0c 而是必须首先安装微软集成开发环境VisualStudio 本文将介绍如何在Win10环境下配置
  • Windows10安装WDK

    安装包下载 xff08 5 11 2022 xff09 官网地址 xff1a 下载 Windows 驱动程序工具包 WDK Windows drivers Microsoft Docs 点击蓝体字样即可下载 问题汇总 问题1 xff1a 安
  • VS2017+WDK10驱动编译与调试

    驱动编译 安装VS2017 和WDK 10 下载地址 https docs microsoft com zh cn windows hardware drivers download the wdk 如果安装VS2017时没有选择安装win
  • DDK“你好世界”

    如何开始为 Windows 编写驱动程序 是否有某种官方 DDK Hello World 示例 虽然我确信一开始这会超出我的想象 但最终我想创建一个简单的 MIDI 驱动程序 就像枫木虚拟 MIDI 电缆其中 MIDI 消息来自用户应用程序
  • WDK (Windows Driver Kit) 和 VC++ 头文件问题

    我正在尝试从 USB HID 设备读取数据 我知道如何使用 DLLImport hid dll 在 C 中执行此操作 但我想从 C 执行此操作 这样我就不必声明所有结构等 并且只包含头文件 所以我下载了WDK然后 当包含头文件并链接库时 我
  • 错误 LNK2001:wdk 中无法解析的外部符号 _fltused

    我试图在 C 代码中定义一个双数据类型变量 该变量将在 Windows 内核中使用 代码可以编译 但在链接时出错 我尝试在源文件中使用 libcntpr lib 并在代码中定义 fltused 变量 但无济于事 如果有人可以帮助我如何使用它
  • 我自己的驱动程序是否需要 Windows 7 x64 中的数字签名

    我已经创建了驱动程序来在 Windows 7 x64 上挂接 ssdt 我怀疑是否需要对驱动程序进行数字签名才能在 x64 上以内核模式安装 否则我只需要 Windows 驱动套件即可安装它 除了 Windows Driver Kit WD
  • 静默使用 Microsoft XPS Document Writer 打印机创建 XPS

    几天来 我一直在努力在没有对话框的情况下将 XPS 打印到文件 我读过 CodeGuru 和 Feng Yuan MSDN 中有关此事的帖子 以及这里的许多讨论主题 但我仍然迷失 具体来说 我的场景是我必须使用一个第三方 API 它会打印到
  • Windows驱动程序内核:如何枚举所有子目录和文件?

    我正在一个小型 antirootkit 中工作 我需要添加一个功能 删除 rootkit 目录和您可能的子目录中的所有文件 那么 首先有必要知道所有这些目录和文件 对吗 为此 我下面的代码已经完成了这项任务的一半 他枚举特定目录的所有目录和
  • Windows 驱动程序开发:Visual Studio 2012 中缺少部署选项

    我试图编译和部署世界粮食计划署样本取自 MSDN http code msdn microsoft com windowshardware Windows Filtering Platform ae42c8d7 called msnmntr
  • 嗅探 LPT 流量

    我需要拦截 LPT 输出流量 经过几个小时的研究 我开始明白 做到这一点的唯一方法是编写内核模式驱动程序 更准确地说是 过滤驱动程序 我已经下载了 WDK 但是术语和大量的驱动程序类型有点让人不知所措 我基本上是想了解什么kind我应该写的
  • 通过 Windows API 检索 PCI 坐标(用户模式)

    有没有办法使用 Windows c c API 例如 PnP Configuration Manager API 获取设备的 PCI 坐标 总线 插槽 功能号 我已经知道如何在内核模式下执行此操作 我需要一个用户模式解决方案 我的目标系统是
  • 设备驱动程序未安装在任何设备上,如果 Visual Studio 2019 打算使用原始驱动程序,请使用原始驱动程序?

    我将我的 Visual Studio 从 2017 年升级到 2019 年 似乎他们在最新版本中对 Visual Studio 做了一些奇妙的更改 因为我在 VS 2017 中没有这个问题 甚至编译了你可以在任何地方找到的简单的 hello
  • 如何获取物理设备支持的音频格式(WinAPI、Windows)

    我有一个音频设备 USB 麦克风 我想找出它本机支持的音频格式 位深度和采样率 在 OS X 上有一个很好的 kAudioStreamPropertyAvailablePhysicalFormats Core Audio 属性 但我找不到类
  • 如何编译 Programmer Dvorak?

    我正在尝试编译开源项目程序员德沃夏克 http www kaufmann no roland dvorak 问题是它有点旧 并且不能使用当前版本的构建工具进行构建 您可以在我的网站上查看完整的源代码以及我在线所做的修改项目的 Google
  • 在哪里可以找到带有源代码的简约 WDM 驱动程序模板? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我遇到过内核模式驱动程序 但经验很少 这就是我想做的 有一个加载驱动程序的用户模式应用程序 让用户模式应用程序写入它 以便向它发送指令 让
  • 安装WDK VC++后损坏

    从以下位置安装 WDK https learn microsoft com en us windows hardware drivers download the wdk https learn microsoft com en us wi
  • 如果 WinDbg 附加断点,则驱动程序加载/卸载失败

    我刚刚开始进行驱动程序开发 对于一些加载 卸载和调试的实验 我编写了以下简单的驱动程序 include
  • 什么是 winapifamily.h?

    在 Windows SDK 和 DDK 中找不到它 但我们现有的一些代码包含它 我通过谷歌找到的唯一有意义的链接是 http msdn microsoft com en us library windows hardware hh45083

随机推荐

  • MySQL:如何查询父子关系?

    假设有如下表记录 TABLE foo foo id foo parent id 1 NULL 2 NULL 3 1 4 2 5 1 6 1 7 2 8 1 9 NULL
  • Log4J 2 查找值在加载/呈现之前在配置中使用

    我正在使用 SystemPropertiesLookup 查找来配置我的 Log4J2 配置 系统属性被设置为我的主要方法中的第一行 问题是 当 Log4J 加载配置时 尚未调用 main 方法 因此系统属性尚未填充 这是我的 log4j2
  • 模板类 - 无法解析的外部符号[重复]

    这个问题在这里已经有答案了 我经常收到这个错误 但我不知道为什么 有人可以帮我找到原因吗 编辑 删除代码 将实现 您的方法定义 与类声明一起放入标头中 请参阅这在 C 常见问题解答中 一些编译器支持 export 关键字来按照您的方式执行此
  • 获取上次打开的 MS Word 文档对象

    我有一个从 MS Word 2003 模板 dot 中的 VBA AutoNew 子函数调用的 python 脚本 因此每次从此 Word 模板创建文档时它都会运行 第三方应用程序从此模板创建文档 第三方应用程序如何设置文档存在许多格式问题
  • 多态类中的虚拟析构函数

    我知道只要有一个多态基类 该基类就应该定义一个虚拟析构函数 这样当一个指向派生类对象的基类指针被删除时 它会先调用派生类的析构函数 如果我在这里错了 请纠正我 另外 如果基类析构函数是非虚拟的 则删除指向派生对象的基类指针将是未定义的行为
  • 如何在 .NET MAUI Flyout Shell 应用程序中自定义标题?

    如何缩小标题间距 当我更改汉堡图标时 其图标颜色始终为白色 怎么了 我可以设置标题字体大小和字体系列吗 在 Android 上可以设置contentInsetLeft contentInsetStart contentInsetStartW
  • 如何在 Python 中对文本文件中的数字求和

    我有一个代码依赖于我读取一个文本文件 在有数字的地方打印数字 在有字符串而不是数字的地方打印特定的错误消息 然后将所有数字相加并打印它们的总和 然后只保存编号到新的文本文件 我已经尝试这个问题几个小时了 我得到了下面写的内容 我不知道为什么
  • PyQt/PySide中连接点击信号时lambda和partial的区别

    当将一组按钮中的多个单击信号连接到带有参数的单个槽函数时 我遇到了信号槽问题 lambda and functools partial可以使用如下 user user button clicked connect lambda callus
  • 如何在 IntelliJ 中调试多线程应用程序?

    我在 IntelliJ IDEA 14 0 2 中遇到了一个关于多线程和断点的奇怪问题 断点之后的代码会在断点处停止之前执行 import java util concurrent atomic AtomicInteger public c
  • 使用 jQuery、JSON 和 AJAX 填充下拉列表

    就像标题所说 我正在尝试使用 jQuery JSON 和 AJAX 创建一个下拉菜单 尽管我熟悉理论但尚未将其付诸实践 任何建议 演示代码片段或教程将不胜感激 因为我希望有一个最好的开始 提前致谢 您需要执行 getJSON 调用以在 do
  • 无法使用 Flask 从下拉列表中获取在 python 中选择的值

    这个问题可能是重复的 但我已经检查了此类相关问题的所有答案 但无法解决 我试图从由数字组成的下拉菜单中获取值 然后我想将数字与值进行比较并根据比较显示文本 Eg if value selected from dropdown gt 3 di
  • 在设定的时间从睡眠中唤醒应用程序

    我想让我的应用程序进入睡眠状态 然后在设定的时间唤醒它 我让它睡觉但不会醒来 这设置了唤醒锁 private void setWakeLock System out println wakelock PowerManager pm Powe
  • ReactJS、event.currentTarget 与 Vanilla Javascript 的行为不同

    我想知道是否有类似的事情event currentTargetReactJS中存 在问题 使用event targetonclick 是我得到的childDiv而不是parentDiv 普通 JavaScript 示例 document g
  • 如何使用 bash 脚本计算单词中最常出现的 3 个字母序列

    我有一个示例文件 例如 XYZAcc ABCAccounting Accounting firm Accounting Aco Accounting Acompany Acoustical consultant 这里我需要 grep 一个单
  • 根据一个向量对多个向量进行排序[重复]

    这个问题在这里已经有答案了 我有四个向量 其中包含圆心的 x y 半径和重量信息 我想按重量顺序对它们进行排序 从最高到最低 但我真的不知道如何或从哪里开始 我可以把所有的向量放在一个Eigen Tensor如果有帮助的话 将收集的数据保存
  • Jqgrid 许可证(具有 MIT/GPL v2)与 Guriddo jqGrid JS(知识共享许可证)

    我在网站应用程序的开发环境中使用 jqGrid 4 5 4 版本 并希望在商业网站上发布应用程序时使用相同的版本 我的疑问是 最近我看到了 Guriddo Jqgrid 4 7 1 的最新版本及其新许可证 知识共享许可 请告诉我现在可以在商
  • 如何使Code Runner在外部终端(命令提示符)中运行?

    所以 基本上Visual Studio Code中的Code Runner可以在集成终端中运行 我怎样才能让它在外部终端中运行 这是命令提示符 因为我需要向我的同学展示我的程序的输出 所以通过集成的终端显示它并不方便 我知道有一个像 Dev
  • C++ 中奇怪的 double 到 int 转换行为

    以下程序显示了我在 C 中看到的奇怪的 double 到 int 转换行为 include
  • Kafka 流过滤:代理端还是消费者端?

    我正在研究卡夫卡流 我想使用选择性非常低 几千分之一 的过滤器来过滤我的流 我正在看这个方法 https kafka apache org 0100 javadoc org apache kafka streams kstream KStr
  • 错误 LNK2001:wdk 中无法解析的外部符号 _fltused

    我试图在 C 代码中定义一个双数据类型变量 该变量将在 Windows 内核中使用 代码可以编译 但在链接时出错 我尝试在源文件中使用 libcntpr lib 并在代码中定义 fltused 变量 但无济于事 如果有人可以帮助我如何使用它