标签: driver

如何编写Linux驱动模块调用/使用其他驱动模块?

我正在开发一个Linux驱动程序可加载模块,我必须在我的驱动程序中使用另一个设备.(堆叠在另一个驱动程序上的驱动程序的种类)

如何在我的驱动程序中调用/使用其他驱动程序?我认为它们都在内核中,所以可能有一种方法可以直接使用另一个驱动程序.

linux kernel module driver device

15
推荐指数
2
解决办法
1万
查看次数

指向为OS X创建虚拟监视器驱动程序的指针

我想为OS X创建一个虚拟监视器驱动程序.我的意思是虚拟是一个监视器驱动程序,它不驱动连接的监视器,但愚弄OS X认为附加了这样的监视器.

目的?它可以通过其他协议将显示数据传输到其他设备,比如VNC.

我相信以前已经以这种或那种形式(也许那些将你的iPad变成辅助显示器的应用程序)完成了这项工作.

任何编码/内核hackery指针将不胜感激!

macos driver monitor

15
推荐指数
1
解决办法
7958
查看次数

我想创建一个minifilter驱动程序来透明地重定向磁盘i/o,但我开始时遇到了麻烦

我目前正在开发的一个项目需要实现一个w-m复制机制,该机制将用于在Windows XP上以与Deep Freeze或Sandboxie类似的方式重定向磁盘i/o.如果我可以,我也希望能够"装载"用户的修改文件,类似于VirtualCloneDrive如何模拟磁盘驱动器并在其上透明地安装ISO映像.

据我所知,这些程序使用minifilter驱动程序来重定向i/o请求.标准流程将任何已修改的数据复制到辅助位置,然后读取/修改该存储以便随后访问该数据; 所以我想我明白我需要做什么.当谈到模拟CD/DVD驱动器并在其上安装图像时,我完全迷失了.

我一直在网上寻找(谷歌,MSDN,代码项目等)和书籍,如使用Windows驱动程序基础Windows NT文件系统内部开发驱动程序:开发人员指南,但查找具体信息和示例(关于监视,拦截)并且重定向请求和创建环回设备)证明是困难的.我对所涉及的技术还很陌生,所以也许我很难看到森林里的树木.

我想知道是否有人遇到类似的情况,并发现了任何有用的资源,或者可以指出我正确的方向,所以我可以实现类似的功能.

编辑:我发现这个问题似乎是一个有用的资源(虽然不适用于我的特定用例),所以我在这里将它链接到任何即将发布的响应中.

一些澄清:

我正在尝试创建一个程序,允许用户在不需要管理权限的情况下安装和使用应用程序.该程序将通过将任何文件系统/注册表修改保存到单独的存储区域(例如,笔式驱动器或网络存储上的文件),然后允许将它们集成到运行主机程序的任何桌面上,即可运行.使用USB笔将桌面随身携带,将其插入,然后应用您的设置.

要重定向I/O,我可以:

  1. 修补进程'导入地址表(IAT)以在应用程序级别插入自定义代码.
  2. 编写用户模式筛选器驱动程序以动态修改请求.
  3. 为了增强(实际上是真的)安全性,实现内核模式驱动程序以与AV软件类似的方式修补系统服务描述符表(SSDT).

每种方法都有好处和缺点.例如,方法三比接近方法困难得多.它提供了更多的安全性,但即使这样它也可以被打败(理论攻击自96年以来一直存在,自07年以来的实际攻击.)

我最初考虑了特定的安全功能(而不仅仅是类似于WoW64兼容性设置的i/o重定向); 但是自从开始看这个以来,我记得你无法永远保护用户免于自己,而且无论我做多少工作都是为了保护主机系统免受恶意进程或愚蠢用户的攻击,它都可能被殴打(或者我更有可能犯错误.)我还决定避免重新发明沙盒和防病毒轮,只需专注于创建一些有用的功能."工具应该做好一件事,做得好"的理念赢得了胜利.

简而言之,我想要做的就是实现类似于VM快照的功能,并将更改重定向到我自己的存储区域.下面的图表有点过时了,但在沟通我的意图方面可能比我现在更好:-)

早期应用设计

c++ driver io-redirection wdf minifilter

15
推荐指数
1
解决办法
3513
查看次数

如何使用特定内核模块查找进程列表?

当我尝试rmmod模块时,我收到错误消息"错误:正在使用的模块",lsmod | grep <module name>显示计数.
有没有办法告诉我哪些进程正在使用这个特定的内核模块/驱动程序?

linux driver kernel-module

15
推荐指数
2
解决办法
2万
查看次数

Windows 8的驱动程序签名要求发生了哪些变化?

我有一个直通NDIS中间驱动程序,由两个.inf文件(一个标准和一个微型端口)和一个.sys文件组成.由于Windows 7驱动程序签名要求,我必须获得代码签名证书并签署.sys文件,以便驱动程序安装在64位系统上.这很好用,我有很多成功的Windows 7安装.

但是,Windows 8 Consumer Preview(64位)上的相同安装程序失败.如果我在Windows Signature Enforcement关闭的情况下启动,它会正确安装,因此它绝对是一个签名问题.为了让我的驱动程序安装,我需要遵循Windows 7和Windows 8之间的新要求?

c++ install driver digital-signature windows-8

15
推荐指数
1
解决办法
8963
查看次数

在Windows 10上为BLE GATT设备开发HID输入设备驱动程序

(这是来自MSDN论坛的一个交叉点,因为很长一段时间没有任何响应,我想我会在这里得到更好的答案.)

我有一个包含自定义GATT服务的BLE设备,我无法修改固件.我想从该服务中侦听GATT特征事件,并使Windows将它们作为HID报告使用,以使Windows将其识别为另一个设备.我该怎么做呢?

我进行了一些研究,发现以下信息:

我的问题是,这里需要什么方法来创建这个驱动程序?

  • 我是否需要创建两个驱动程序(虚拟HID驱动程序和GATT配置文件驱动程序),然后以某种方式将它们相互连接?
  • 我是否需要从虚拟HID驱动程序进行蓝牙LE API调用?
  • 我是否需要创建一个可以进行HID呼叫的GATT配置文件驱动程序?
  • 或完全不同的东西?

GATT配置文件驱动程序是否仍然允许在Windows 10上使用,因为它似乎不允许为其创建过滤器驱动程序BthLeEnum

更新

我真的很感激Alain花时间回答这个问题,因此我将他的答案标记为问题的答案; 但对我来说,这个问题还没有完全回答.看到问题已经超过10票,我认为应该得到更广泛的答案.可以改进/添加的要点是:

  • 建议背后的论证(例如为什么UMDF minidriver而不是VHF驱动程序,为什么要使用UWP蓝牙API需要使用cppwinrt而不是简单地使用我在研究中找到的C++蓝牙功能,如何编写GATT Profile驱动程序等等. ).没有这种论证,我不会从建议中学到很多东西.
  • 回答我的问题
  • 使用来自驱动程序的cppwinrt代码以及是否可以在那里访问这些API的示例.是否有任何限制(因为代码不会从appx运行)?Cppwinrt在这里作为新的东西,但我找不到任何在驱动程序的上下文中使用cppwinrt的文档.
  • 对我自己的研究有一些反思 - 目前的答案并不涉及我发现的好点与否.这种反思将帮助我更好地理解这个主题.

更新2

我想Alain推荐使用UMFF HID微型驱动器而不是VHF,因为VHF需要编写KMDF驱动程序.UMDF具有更容易调试(可在本地PC上调试),安全性(和签名)限制更少的优点,并且在驱动程序中存在错误时没有检查机器的风险.

更新3

为了能够创建一个注入RadialController事件的客户端应用程序(而不是必须编写一个对私有开发人员来说是一个非常高的障碍的驱动程序),我在Feedback Hub上发布了一个请求.如果您认为值得支持,请考虑投票.

c++ driver hid bluetooth-lowenergy windows-10

15
推荐指数
1
解决办法
1535
查看次数

Mongo C#ignore属性

我正在使用官方MongoDB驱动程序的v0.9,我正在尝试阅读一个集合.我在数据库中有一个字段,我不想读入我的对象,但我收到以下错误.

"意想不到的元素:网络"

该集合在数据库中看起来像这样

Merchants
 - _id
 - Name
 - Description
 - Url
 - Network
Run Code Online (Sandbox Code Playgroud)

当我将它读入C#时,我想创建一个名为Merchant的对象,它具有除"Network"之外的所有相同属性.我该怎么做呢?

c# driver mongodb

14
推荐指数
1
解决办法
6649
查看次数

JDBC连接"无法找到JAR/zip"错误[BIRT Eclipse,Windows 7,Oracle 11g]

作为一个FYI,我是整个堆栈的新手,所以我可能会犯一个基本的错误.

我正在尝试探索最近升级的Maximo系统的BIRT报告.

为此,我安装了以下内容:

  • Java 6和Java 7 JDK
  • BIRT版Eclipse(内置Eclipse + BIRT插件).
  • 一些Oracle 11gR2客户端选项(自定义安装)
    • 在SQL*Plus
    • JDBC/ODBC驱动程序
    • 瘦客户端

我采取以下步骤:

  • 打开Eclipse
  • 创建一个新的报告项目
  • 添加数据源
  • 选择"JDBC数据源"(也尝试"查询生成器的JDBC数据库连接")
  • 选择"Oracle"连接配置文件类型,然后单击"下一步".

此时,我看到驱动程序列表为空.这让我觉得奇怪,但我想也许我必须定义驱动程序定义.所以我采取以下步骤:

  • 单击"定义驱动程序定义"
  • 在"名称/类型"选项卡中,选择"Oracle Thin Driver",系统版本11

此时,我看到一条错误消息:无法在驱动程序定义:ojdbc14.jar指定的文件系统中找到JAR/zip.似乎ojdbc14.jar甚至不存在于我能找到的系统上.

我已经尝试添加我可以在oracle客户端目录中找到的其他jdbc jar文件(即来自Oracle_Base\product\11.2.0\client_1\jdbc\lib),但似乎没有解决问题.

救命?

eclipse birt jdbc driver oracle11g

14
推荐指数
1
解决办法
4万
查看次数

I2C_SLAVE ioctl目的

我正在编写i2c使用通用linux i2c驱动程序实现简单读/写功能的代码linux/i2c-dev.h

我很困惑ioctl:I2C_SLAVE

内核文档说明如下:

您可以使用read(2)和write(2)调用执行普通的i2c事务.您不需要传递地址字节; 相反,在尝试访问设备之前,请通过ioctl I2C_SLAVE进行设置

但是,我正在使用ioctl I2C_RDWR我再次设置从属地址的地方i2c_msg.addr.

内核文档还提到了以下内容:

一些ioctl()调用用于管理任务,由i2c-dev直接处理.示例包括I2C_SLAVE

所以必须使用ioctl I2C_SLAVE?如果是这样,我只需要设置一次或每次执行读写操作?

如果我有一个i2c设备,我可以在设备上测试代码并且不会打扰你们,但不幸的是我现在没有.

谢谢您的帮助.

linux driver i2c

14
推荐指数
1
解决办法
2万
查看次数

找不到适合Oracle数据库连接的驱动程序

我有一个小型Java应用程序,每天执行并使用Cronj Schedular检查数据库中的数据,一切正常,但最近我发现,它失败了,因为

java.sql.SQLException: No suitable driver found for jdbc:oracle:thin:@160.110.xx.xxx:1521/test
Run Code Online (Sandbox Code Playgroud)

同时,当我运行我的测试代码来检查数据库连接时工作正常而没有异常.我无法弄明白.虽然,只有轻微的代码更改,但这与数据库或数据库连接无关.有人,帮我这个吗?

dbconf.java

public class dbconf {

    private Connection connect;
    private String connstr;

    public Connection getConnection() throws SQLException {
        connstr = "jdbc:oracle:thin:@160.110.xx.xxx:1521/test";

        try {
                String uname = "scott";
                String pass = "tiger";
                Class.forName("oracle.jdbc.OracleDriver").newInstance();
                connect = DriverManager.getConnection(connstr, uname, pass);

        } catch (Exception e) {
            System.out.println(e.toString());
        }

            return connect;
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用ojdbc6.jarOracle11g

已编辑 - 应用程序日志文件

Wed Jul 01 09:25:17 IST 2015:------- Initializing -------------------
Wed Jul 01 09:25:17 IST 2015:------- Scheduling Jobs …
Run Code Online (Sandbox Code Playgroud)

java jdbc driver sqlexception oracle11g

14
推荐指数
1
解决办法
1万
查看次数