问题其实很简单:我需要从Windows下的内核模式驱动程序中知道整个系统当前的CPU和内存消耗。 当然,我已经看过相关的问题,并试过这个代码。 结果不好:Visual Studio 2013开发驱动程序的环境不知道提到的示例中的任何头文件。 例如: #include "windows.h" MEMORYSTATUSEX memInfo; memInfo.dwLength = sizeof(MEMORYSTATUSEX); GlobalMemoryStatusEx(&memInfo); DWORDLONG totalVirtualMem = memInfo.ullTotalPageFile; 上面的代码不是编译的。 我仔细检查了几乎所有的“内核模式驱动程序参考”在MSDNsearch类似的function,并没有成功。 那么,有没有人知道如何从Windows下的内核模式驱动程序获得相同的信息? 或者这是不可能的? (这很奇怪,如果是这样的话)
我试图做一个exe分析器,现在想跟踪/logging在内核模式驱动程序 (我创build了用户模式在过去)钩LdrLoadDll exe中加载/使用的所有LdrLoadDll 。 我的问题是在64位版本的Windows,因为在64位我不能使用SSDT挂钩,我找不到任何替代解决scheme。 在64Bit有像内核模式callback: PsSetCreateProcessNotifyRoutine (替代挂钩CreateProcess ),但我找不到任何解决scheme,这种情况。 现在我的问题是:是否有LdrLoadDll的内核模式callback? 或者我必须find64位内核挂钩的解决scheme?
我记得在Comp大学的大学教育结束时,阅读了一些关于Linux设备驱动程序的书籍。 科学。 不久之后,我得到了一份工作,并没有真正与Linux /embedded式工作很多(我现在主要是java的东西)。 不过,这是我想看的东西。 无论如何,我记得阅读一篇在线文章(如果我能find它,不适合编辑post)关于编写一个类似于这样的小型“USB导弹炮塔”Linux的USB驱动程序: http : //www.thinkgeek.com/geektoys/warfare/ 8a0f / 无论如何,它详细介绍了如何在没有提供驱动程序的情况下编写驱动程序(这个人刚刚在ebay上发现了一个通用的驱动程序,并想出了如何去……通过查看组件等来编写驱动程序)。 总之,这是相当惊人的。 我有一个很好的线索是关于如何embedded低级别的东西工作,但对于像AVR / PIC微控制器这样的东西,我不知道这样的东西会像PC中的正常处理器那样写。 反正我猜我在问什么是…..你怎么知道这个有点东西,我在哪里可以find这样的信息。 编辑:find链接http://matthias.vallentin.net/blog/2007/04/writing-a-linux-kernel-driver-for-an-unknown-usb-device/ (这是更令人困惑的,然后我想,我没有意识到他扭转了一个Windows USB驱动程序..我猜测,如果不通过一个Windows驱动程序窥探是不可能的?)
我可以构build一个可加载的模块,并且正在成功地处理应用程序。 现在我试图将这个驱动程序作为内置驱动程序包含在内核驱动程序文件夹中。 但是当我尝试这个时,在/ dev文件夹中没有创build设备文件。 什么是做这个内置模块的必要步骤? 现有模块是否需要修改? 提前致谢
新手到Linux内核和驱动程序开发这里。 我有一个从pcie设备进来的中断数据。 每次检测到中断时,我都希望驱动程序将数据从位于驱动程序中的缓冲区复制到用户空间的大缓冲区中。 用户应用程序不应该为驱动程序“轮询”新数据。 目前我的中断处理程序试图将数据copy_to_user()传递给用户空间。 但是,这失败了。 copy_to_user()总是返回n ,其中n是我希望复制的字节数。 我的猜测是调用中断处理程序导致上下文切换导致副本失败? 我应该如何去做到这一点? 谢谢!
在Linux设备树文件(DTS)中,如果给出多个选项, compatible条目将如何工作? 看来这不是这些条目之间的select,但是,分层设备也是可能的(我有一个像compatible = "vendor,controller-uart", "vendor, controller-serial" controller-serial和controller-uart (在代码方面, controller-serial实际上是从controller-uart调用的)。 这个概念在哪里解释? 在通用设备树文档中找不到这个解释。
我正在写一个支持多个设备的Linux设备驱动程序。 我有一个x8 PCIe卡,其中有4个这样的设备。 每个都通过PCIe交换机运行并获得2个PCIe通道。 有没有办法让驱动程序同时写入多个通道? 如果是这样,我该怎么做? 我认为这应该是可能的,因为它全部在一个PCIe插槽上,但我不知道如何从驱动程序完成。
我们正在开发一款Xilinx Zynq FPGA定制DMA设备,以快速处理大量数据。 我们能够在裸机上工作,但在Linux上遇到麻烦。 我们在ARM Linux内核3.9上工作。 我们不知道如何实例化和使用我们的设备的内核驱动程序: https : //github.com/Xilinx/linux-xlnx/blob/master/drivers/dma/xilinx/xilinx_axidma.c您是否有任何build议或他们可以共享的一些示例代码? 现在我们打算在这里使用一些代码: http : //www.mjmwired.net/kernel/Documentation/DMA-API-HOWTO.txt 但是我们不确定如何实例化结构设备。
我正在为x86 linux的设备驱动程序工作。 该器件的引脚连接到PCH上的GPIO以产生中断。 如何请求与该GPIO引脚相关的IRQ并安装中断处理程序?
我正在尝试使用Raspberry Pi作为开发工具包,通过I2C总线configurationSAA6752HS芯片(MPEG-2编码器)。 直到我不得不在芯片的地址0xC2处写入,这是小菜一碟。 对于这个任务,我必须使用一个I2C命令,它需要一个189字节的有效负载。 于是我偶然发现了在I2C驱动中的一个32字节的限制,这个限制在/usr/include/linux/i2c.h中由I2C_SMBUS_BLOCK_MAX定义。 不可能强制不同的最大限制值。 I2C lib中的所有内容都会结束到函数i2c_smbus_access中,任何超过32个字节的请求都会使ioctl返回-1。 我不知道如何debugging到目前为止。 static inline __s32 i2c_smbus_access(int file, char read_write, __u8 command, int size, union i2c_smbus_data *data) { struct i2c_smbus_ioctl_data args; args.read_write = read_write; args.command = command; args.size = size; args.data = data; return ioctl(file,I2C_SMBUS,&args); } 我不明白为什么有这样的限制,考虑到有设备需要超过32个字节的有效载荷数据才能工作(SAA6752HS就是这样一个例子)。 有没有办法克服这种限制,而不重写一个新的驱动程序? 先谢谢你。