c++ - 如何创建计算驱动程序?

标签 c++ c wdk

如何创建一个计算体内某些东西的驱动程序。我试图创建一个循环,但我在编译时出错 http://i.stack.imgur.com/4nall.jpg

// TestDriver.c

#include <ntddk.h>

NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath);
VOID UnloadRoutine(IN PDRIVER_OBJECT DriverObject);

#pragma alloc_text(INIT, DriverEntry)
#pragma alloc_text(PAGE, UnloadRoutine)

NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)
{
  DriverObject->DriverUnload = UnloadRoutine;
  while('true'){
  int role = pow(2,20);
}
  DbgPrint("Hello, Alexey Baranovkiy!\n");
  return STATUS_SUCCESS;
}

VOID UnloadRoutine(IN PDRIVER_OBJECT DriverObject)
{
  DbgPrint("Bye!\n");
}

最佳答案

本质上,在 32 位 Windows 驱动程序中,您不能“随心所欲”地使用 float 。我会说大多数时候,如果您需要在驱动程序中执行浮点计算,您可能做错了什么。

https://msdn.microsoft.com/en-us/library/windows/hardware/ff565388%28v=vs.85%29.aspx

标准浮点计算不适合在驱动程序中使用,因此您很可能还需要编写自己的函数。

当然,您正在使用的函数可以用一个简单的函数完美替换

role = 1 << 20;

但是,如果没有 float ,执行 pow(1.5, 3.7) 将不会那么容易计算,如果您的目标是计算几乎任何 float 计算,那么您将有一个有趣的挑战摆在你面前。没有真正现成的解决方案。

关于c++ - 如何创建计算驱动程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34457492/

相关文章:

C shellcode执行问题

c# - 反向 PInvoke 并创建一个完整的非托管 C# 程序

c - 建议的阅读顺序和其他问题

c++ - 执行不同操作的模块化函数的算法?

c - 队列性能明智哪个是更好的实现 - 数组或链表

c - 在 Visual Studio 2005 中使用 WinDDK 测试实用程序

c++ - 我可以在没有虚拟微型端口驱动程序的情况下创建 VPN 应用程序吗?

printing - 如何安装pscript/unidrv渲染插件? DDK/WDK print/oemdll 样本表现得很奇怪

c++ - 读取 .txt 文件中的特定单词

c++ - C++ 中的 map 与 hash_map