我对触控板有一些改进的想法,从底部水平滚动的滚动,右击的分区到更复杂的.但我不知道从哪里开始?我正在使用Windows 7家庭高级版,它是一台华硕笔记本电脑,而且我没有这些选项供我原生使用.无论如何,我想写一些任何人都可以使用的东西.
我从哪里开始?
(用c ++编写会很好吗?可能吗?这里的要求是什么?推荐使用哪种语言?)
我正在STOP: 0x0000007E
编写的驱动程序在启动 ( ) 时遇到了一个可爱的 BSOD,我想加载内存转储以进行分析。然而,它不会被倾倒在任何地方。启动和恢复设置中的一切设置正确,但我没有得到转储文件,事件日志中也没有任何内容表明发生了转储。看起来甚至没有发生转储......
我知道导致它的确切代码行(对 的调用IoAttachDevice()
),但我不确定为什么,并想查看DbgPrint
输出以查看它究竟在哪里失败。在设置转储功能之前,Windows 可能会崩溃吗?如果是这样,我如何在发生故障时访问机器的状态?
更新:其他可能有用的信息:我在 Linux 主机上通过 VirtualBox 运行 Windows XP。
我需要编写我认为是OS X的显示驱动程序.就像那些"将你的iPad用作第二台显示器!" 应用程序,但我需要编写OS X软件,它将在OS X上注册另一个显示器,并给我像素数据,以便我可以将它用于我的各种需求.
我从哪里开始?我已经阅读了关于IOKit的内容,但是我不太明白我需要做些什么来告诉OS X我是一个监视器,然后是像素数据的样子.
我将要阅读的类/标题/等的一些链接也可以,但如果有人这样做并且知道详细信息,那将非常有帮助.
此外,这必须是内核扩展,还是可以编写一个用户空间IOKit驱动程序,为OS X提供第二个监视器?
最后,要清楚,我只想要将像素数据发送到第二个监视器(镜像或扩展) - 我实际上并没有连接监视器或I/O设备.
我目前正在开发一个业余爱好操作系统,特别是ATA驱动程序.我在使用带有中断的PIO数据输入命令时遇到了一些问题.我正在尝试执行READ MULTIPLE命令,逐块地从驱动器读取多个扇区,每个块都有一个中断触发.
如果我请求读取4个块(每个块1个扇区).我希望得到4个中断,每个数据块一个.收到第4个中断后,我可以识别出我已经传输了所有数据并相应地更新了我的请求结构.但是,在VirtualBox中,我发现在传输完最后一个数据块后,我收到了另一个中断(STATUS = 0x50,READY,OVERLAPPED MODE SERVER REQ).我可以简单地读取STATUS寄存器然后清除它,但我不认为我应该根据规格接收第5个中断.
那么确认ATA设备发出的中断的正确方法是什么?
在这个例子中,我发出了一个READ MULTIPLE命令,然后我的ISR执行以下操作:
PIO数据输入命令协议的ATA规范并不表示您需要读取状态寄存器.由此我假设当我收到中断时,我所要做的就是遵循协议并通过将EOI发送到PIC完成.至于nIEN的设置/清除,在处理VirtualBox时我发现如果我不这样做,我就不会收到任何超过第一个的中断.所以我在进入ISR时设置了nIEN,然后在我离开之前将其清除.我认为这不会产生任何影响,但它必须与读/写特定寄存器有关.
我正在开发某种 VPN 应用程序,需要虚拟网络接口(又名 TUN/TAP)。是否有任何适用于 Windows 的驱动程序?
我所知道的唯一一个是 OpenVPN,但它是 GPL 的,因此 AFAIK 不能在封闭源应用程序中使用。
如果没有现成的解决方案,我会很感激自己对这种野兽进行编码有多复杂的一些估计(以及可能从哪里开始的一些方向)。
我发现了这个类似的问题,但它可以追溯到 2008 年。
我正在编写可以直接将数据写入帧缓冲区的驱动程序,以便在用户空间中的应用程序无法获取时将秘密消息显示在屏幕上。下面是我尝试将值写入帧缓冲区的代码,但是在将值写入帧缓冲区后,我从帧缓冲区中检索到的值全部为 0。
我很纳闷,有人知道原因吗?或者任何人都知道如何在屏幕上显示消息而用户空间中的应用程序无法获取消息内容?非常感谢!
#define FRAME_BUFFER_PHYSICAL_ADDRESS 0xA0000
#define BUFFER_SIZE 0x20000
void showMessage()
{
int i;
int *vAddr;
PHYSICAL_ADDRESS pAddr;
pAddr.QuadPart = FRAME_BUFFER_PHYSICAL_ADDRESS;
vAddr = (int *)MmMapIoSpace(pAddr, BUFFER_SIZE, MmNonCached);
KdPrint(("Virtual address is %p", vAddr));
for(i = 0; i < BUFFER_SIZE / 4; i++)
{
vAddr[i] = 0x11223344;
}
for(i = 0; i < 0x80; i++)
{
KdPrint(("Value: %d", vAddr[i])); // output are all zero
}
MmUnmapIoSpace(vAddr, BUFFER_SIZE);
}
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种方法让 UVC 兼容的 USB 相机在默认情况下没有用于这些 UVC 相机的内核驱动程序的其他 Android 设备上工作。
我不想 root 那些设备,也不想更改它们的图像/内核,因为普通客户以后应该能够在每台平板电脑上使用相机并且没有特殊要求(应用程序除外)。
您认为是否可以使用 Android 3.1 及更高版本 (http://developer.android.com/guide/topics/usb/host.html) 中的 Android USB 类与未知设备建立原始连接,或者我只能将它与内核已经支持和识别的设备一起使用?
如果可能的话,我会对使用 Java/NDK 集成 UVC 驱动程序感兴趣,以从中获取视频流。至少这是我的粗略想法。
你认为这可能吗?
我在使用以下配置设置调试环境时遇到了一些麻烦:
Host computer - Physical, Windows 7 x64
Target computer - Virtual (Vmware), Windows 7 x64 (Running on Host computer)
Run Code Online (Sandbox Code Playgroud)
我希望能够开发内核模式驱动程序,在我的VM中部署和调试它.
Visual Studio给我带来了困难,配置VM无法正常工作.
如何在VM中成功部署和调试驱动程序?
kernel remote-debugging virtual-machine device-driver visual-studio-2012
我正在研究Android应用程序使用的设备驱动程序.每当我对驱动程序进行一些小修改并重新编译修改过的驱动程序时,似乎应用程序没有使用修改后的驱动程序,但仍然使用=以前的版本.我确信这是因为所做的修改包括打印声明,该声明在应用程序运行时不会显示.
但是,一旦我删除驱动程序并重建它或重新启动系统,它似乎工作正常.这样做的问题是它很耗时,因为我必须确保该应用程序正在使用最新的驱动程序.
所以我的问题是android是否缓存库?如果是这样,有任何简单的黑客可以阻止它这样做吗?
编辑:事实上我可以删除我的设备驱动程序和使用它的应用程序仍然运行而不报告有关缺少驱动程序的问题!!!!!!!!!!!!!!!!!
我正在开发一个Linux设备驱动程序,我必须使用sysfs接口将一串字符传递给它.sysfs属性是否可以接受字符串形式的数据(类似echo "somedata" > sysfs_interface
)?
我已经实现了它,它似乎工作正常,但我想确定这是有效的(在内核社区可以接受).