【问题标题】:How to run a driver (.sys file) in Windows using C#如何使用 C# 在 Windows 中运行驱动程序(.sys 文件)
【发布时间】:2012-04-01 21:06:17
【问题描述】:

我正在使用 C# 开发一个 Windows 应用程序。我想在后端运行一个 .sys 文件(基本上是驱动程序),因为我的代码使用某些函数来实现输出。

如何用 C# 编写代码?如果 .sys 文件放在“Bin”文件夹中,它就不会运行,因为我猜它可以作为服务运行。

考虑名称 - "someDriver.sys"(我在这里使用的是 Win7 操作系统)

我可以在内核模式下将此 .sys 文件作为服务运行吗? 我的应用程序是一个非常简单的应用程序,并且没有安装程序(我也不想拥有它)。你能帮我解决这种情况,我需要 .sys 文件的存在才能使我的功能正常工作。

【问题讨论】:

  • 从您的问题中不清楚您想要实现什么,但请注意you cannot write Windows drivers in C#(或任何其他托管语言)。
  • 基本上,在我的 Windows 应用程序中,我试图导入一个 .DLL(用 C++ 设计)来实现一些功能。但是这个特定的 DLL 希望我有一个驱动程序(.sys 文件)存在并运行,并且我可以使用 DLL 中的函数。因此,我需要在后端运行驱动程序。
  • 为什么不将驱动程序与您的应用一起安装在安装程序包中?
  • 好的。我的应用程序是一种工具,我不想安装任何安装程序,我只有一个 .exe(用户双击并使用该工具)
  • 驱动程序不是服务。驱动程序在内核模式下运行。服务在用户模式下运行。

标签: c# windows windows-services driver


【解决方案1】:

你有没有试过看看这篇文章是怎么做到的How to install driver dynamically or install driver as a service for Windows
您必须使用互操作来调整调用。
使用此工具帮助您进行互操作定义:PInvoke Interop Assistant

【讨论】:

    【解决方案2】:

    您可以使用this answer 中的代码,只需将SERVICE_WIN32_OWN_PROCESS 更改为SERVICE_KERNEL_DRIVER (0x00000001)。然后你就可以做

    ServiceInsatller.InstallAndStart("yourServiceName", "Some Description", "C:\path\to\driver.sys");
    

    这对我有用。

    【讨论】:

      猜你喜欢
      • 2011-09-25
      • 1970-01-01
      • 2015-11-01
      • 1970-01-01
      • 2021-06-26
      • 1970-01-01
      • 2011-07-02
      • 2015-03-19
      • 1970-01-01
      相关资源
      最近更新 更多