我的应用程序需要表现为虚拟操纵杆(想象一下用鼠标拖动方块并将其转换为模拟操纵杆的输出)并通过网络将一些击键发送到驱动程序将接收该输入的另一台计算机.
我只需要支持XP,Vista和Win7.
也许可以在不编写驱动程序的情况下完成.我尝试使用SendKey()发送键击,这似乎有效,但不知道如何模拟模拟操纵杆.
我已经下载了VDK,并且已经阅读了我在这个主题上可以找到的所有内容,但是有很多东西我还是不明白.你能指点我正确的方向吗?
谢谢
有没有人知道部分或完全自动化驱动程序测试安装的方法?
我是驱动程序开发的新手,并且习惯于在更高级别的语言中使用更多的测试驱动方法,因此转向我无法轻松测试的环境对我来说是一个进步.我在我的测试环境中使用Virtual PC,目前必须重置它,打开设备管理器,选择设备,点击一堆" 你真的确定你不会安装其中一个系统驱动程序 "类型的对话框,然后在测试环境启动时,最终重启测试环境,同时在主机中重启WinDbg ... argh.
在重复这个过程很多次之后,肯定必须有更好的方法来做到这一点?商业驱动程序开发人员在测试环境中使用哪些工具/方法/技巧来运行其驱动程序?
注意,这不是关于单元测试驱动程序,我还没有达到那个阶段或者知道它是否可能.这只是为了启动附加WinDbg的测试环境,以确保我可能做的一些小改变正在做我期望的事情.
我想获得更多有关使用c ++ for Linux编写图形设备驱动程序和音频设备驱动程序的详细信息.我是开发设备驱动程序的新手,请提供相同的开发/文档详细信息.
谢谢
-Pravin
如何获取Android系统上所有活动内核驱动程序的列表?Android中Linux"lsmod"的等效内容是什么?我使用adb shell并打开了我的Android终端模拟器应用程序,并做了一个"lsmod".我从我的BSP得到了一些蹩脚的两件物品清单.但它没有列出Linux内核主动运行的整个系统上的所有驱动程序.
第1部分:
对于那里的linux/unix专家,请你帮我理解设备驱动程序.据我所知,驱动程序是一段代码,它直接与硬件交互并暴露一些api来访问设备.我的问题是这段代码在哪里运行,用户空间或内核空间?
我知道在内核空间中执行的代码有一些额外的权限,比如访问任何内存位置(如果我错了,请更正).如果我们安装第三方驱动程序并且它在内核空间中运行,这不会对整个系统有害吗?操作系统如何处理这个?
第2部分:
让我们举一个USB设备(相机,键盘......)的例子,系统如何识别这些设备?系统如何知道要安装哪个驱动程序?驱动程序如何知道设备的地址以读取和写入数据?
(如果这个太大而无法在这里回答,请提供一些好的文档或教程的链接..,我已经尝试过但无法找到这些答案.请帮助)
我正在编写一个音频设备驱动程序,需要实时处理设备中断.当CPU进入C3状态时,中断会延迟,从而导致驱动程序出现问题.有没有办法让驱动程序告诉操作系统不要进入空闲的C状态?
我发现可以从用户空间禁用空闲C状态:
const DWORD DISABLED = 1;
const DWORD ENABLED = 0;
GUID *scheme;
PowerGetActiveScheme(NULL, &scheme);
PowerWriteACValueIndex(NULL, scheme, &GUID_PROCESSOR_SETTINGS_SUBGROUP, &GUID_PROCESSOR_IDLE_DISABLE, DISABLED);
PowerSetActiveScheme(NULL, scheme);
Run Code Online (Sandbox Code Playgroud)
但是,它是一个全局设置,可以被用户或其他应用程序覆盖(例如,当用户更改电源计划时).
我需要的是像PoRegisterSystemState,但不是S和P状态,而是C状态.(参考:https://docs.microsoft.com/en-us/windows-hardware/drivers/kernel/preventing-system-power-state-changes)
有没有办法实现这个目标?
=====
事实证明,没有一种支持的方法可以从内核空间禁用空闲C状态,并且用户空间中没有服务提供通用API来执行此操作.控制C状态的方法来自"更改高级电源设置"对话框中的"处理器电源管理",通过注册表或通过C API PowerWriteACValueIndex/PowerWriteDCValueIndex.
最初的问题是除了C1空闲状态之外的所有延迟中断,所以我需要禁用C2,C3和更深的空闲状态.禁用所有空闲C状态(包括C1(如示例代码PowerWriteACValueIndex(NULL,scheme,&GUID_PROCESSOR_SETTINGS_SUBGROUP,&GUID_PROCESSOR_IDLE_DISABLE,DISABLED)中所示)的问题是CPU使用率报告为100%,并且某些应用程序(DAW)获得困惑.
我的问题的解决方案是禁用除C1空闲状态之外的所有状态,这可以通过在处理器电源管理中设置以下值来完成: - 处理器空闲阈值缩放 - >禁用缩放; - 处理器空闲提升阈值 - > 100%; - 处理器空闲降级阈值 - > 100%.
也许我会创建一个只使用PowerWriteACValueIndex/PowerWriteDCValueIndex API的服务.
我有一个串行到USB设备,在Windows设备管理器中具有类似命名的设备驱动程序.设备并不总是在系统启动时获取相同的COM端口,因此我的程序需要在启动时识别它.
我已经尝试使用RXTX来枚举系统上的COM端口,但这不起作用因为CommPortIdentifier.getName()只返回COM名称(例如COM1,COM2等)我需要获取驱动程序制造商名称或驱动程序显示在设备管理器中的名称,并将其与COM名称关联.
这可以用Java轻松完成吗?(我对任何支持它的第三方Java库感兴趣.)否则,我如何通过win32 API开始实现这一目标?
在OS X上获取HID设备原始访问权限的最简单方法是什么?
我一直在查看IOKit示例,但即使打开一个设备似乎也是不必要的复杂,涉及多个回调并包含来自六个库的东西.
libusb可用于OS X,但是内核会抓取所有HID设备以进行独占访问,并且在尝试使用无代码.kext阻止它与我的设备关联时,我一直遇到奇怪的行为(它阻止内核抓取设备最初,但任何配置设备的调用似乎都会导致内核从我正在测试的小python libusb脚本中获取设备.
基本上,我有一个只传输数据的HID设备.我想打开它(理想上是独占的)访问,然后获取数据流.
我在IOKit文档中找到的所有示例都非常复杂,与libusb中的~8行相比.必须有一种更简单的方法,而不是第三方的图书馆.
值得注意的是,我完全不熟悉OS X的任何功能编程.
Python支持将是一个很好的加分
我需要使用外部设备控制计算机屏幕的鼠标指针.我只知道我必须为该设备编写设备驱动程序.这是一个USB设备.
任何人都可以告诉我应该如何解决这个问题?
这需要哪些模块和算法?
如果您能提供一些参考资料,我将不胜感激?
很抱歉这些琐碎的问题,但我是Linux设备驱动程序领域的新手.
我正在设计一个Linux角色设备驱动程序.我想在ioctl()系统调用中发生错误时设置errno.
long my_own_ioctl(struct file *file, unsigned int req, unsigned long arg)
{
long ret = 0;
BOOL isErr = FALSE;
// some operation
// ...
if (isErr) {
// set errno
// ... <--- What should I do?
ret = -1;
}
return ret;
}
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能实现这一目标?提前谢谢你!
请允许我更详细地解释我的申请.
我的设备位于/ dev/myCharDev中.我的用户空间应用程序是这样的:
#define _COMMAND (1)
#define _ERROR_COMMAND_PARAMETER (-1)
int main()
{
int fd = open("/dev/myCharDec", O_RDONLY);
int errnoCopy;
if (fd) {
if (ioctl(fd, _COMMAND, _ERROR_COMMAND_PARAMETER) < 0) { // should cause error in …Run Code Online (Sandbox Code Playgroud)