Tag: 驱动程序

什么阻止Windows中的驱动程序安装?

我在Windows中编写了一个C程序,它使用WinDivert中的一些预编译文件。 我的程序使用WinDivert中的.dll和.dll中的一些函数安装WinDivert.sys驱动程序。 还有一些来自WinDivert的文件是其中的一部分(.lib,.inf和另一个.dll)。 问题是,在我的一台计算机上(Windows 8.1 64位),一切都运行良好。 但是,当我尝试在我的笔记本电脑(Windows 8.1 64),我朋友的笔记本电脑(Windows 7 64)或其他Windows 7 64桌面上使用该程序时,会阻止安装驱动程序。 我不确定是什么阻止它或如何阻止它被阻止,因为在所有计算机上: +我正在运行管理员个人资料 +在管理员命令提示符下运行程序 +尝试禁用防火墙,防病毒等(尽管它可以运行正常,适用于有效的计算机) +据我所知,我所有的安全设置都是一样的 +注意:驱动程序确实有有效签名。 为什么驱动程序在一台计算机上完美安装,而在另外三台计算机上却没有? 可能有什么问题?

如何调用DeviceIoControl来检索它需要的内存量?

我正在尝试调用DeviceIoControl(IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS) API,如此处所示 ,但我需要它首先“告诉我”它需要多少内存(与我链接的代码不同。) 所以我称之为: //First determine how much data do we need? BYTE dummyBuff[1]; DWORD bytesReturned = 0; if(!::DeviceIoControl(hDevice, dwIoControlCode, lpInBuffer, nInBufferSize, dummyBuff, sizeof(dummyBuff), &bytesReturned, NULL)) { //Check last error int nError = ::GetLastError(); if(nOSError == ERROR_INSUFFICIENT_BUFFER || nOSError == ERROR_MORE_DATA) { //Alloc memory from ‘bytesReturned’ … } } 但它总是返回错误代码87 ,或ERROR_INVALID_PARAMETER ,我的bytesReturned始终为0。 那么我做错了什么?

使用带有gpio引脚的xc8编译器在C中初始化驱动程序

可以说我有一个驱动程序“foo.h”和“foo.c”实现。 驱动器与微控制器上的gpio引脚交互。 在Arduino中,每个GPIO引脚都有自己的引脚号(只是一个整数)。 然后,您可以使用函数initFoo(1)或initFoo(2)初始化foo,以选择要使用的引脚。 在Mbed在线c ++编译器中,可以使用DigitalIn或DigitalOut对象控制每个GPIO。 在我也熟悉的JAL(Just Another Language)中,他们使用alias关键字。 alias x is pin_D3 — the gpio pin called x used by the library pin_D3_direction = output include foo — jal doesn’t use header files. foo_init() 如何使用Microchip xc8 c编译器实现类似function? 我使用define关键字尝试了JAL方法,但编译器不知道’x’是什么。 它说未定义的标识符’x’……? #define x PortDbits.RD0 #include “foo.h” #foo_init();

我们转换Descriptor + Descriptor-> SerialNumberOffset时序列号枚举失败

我有一个内核驱动程序,用于查找存储设备的序列号,但驱动程序存在问题。 Descriptor->SerialNumberOffset是103但是(LPCSTR)(UINT_PTR)Descriptor+(DWORD32)Descriptor->SerialNumberOffset为NULL 这是我的代码 NTSTATUS GetDeviceTypeAndUniqueID(IN PDEVICE_OBJECT StorageStackDeviceObject, cwDevices *lDeviceTypeArg, char *pszUidArg) { DWORRD lDeviceType=0; STORAGE_PROPERTY_QUERY Query; STORAGE_DEVICE_DESCRIPTOR Buffer[4]; NTSTATUS Status = STATUS_SUCCESS; ULONG uBusType=BusTypeUnknown; PSTORAGE_DEVICE_DESCRIPTOR Descriptor=NULL; PIRP NewIrp2=NULL; PIO_STACK_LOCATION NextIrpStack=NULL; IO_STATUS_BLOCK IoStatus; char szSptr[2]={‘_’,’\0′}; Query.PropertyId = StorageDeviceProperty;// first set the query properties Query.QueryType = PropertyStandardQuery; lDeviceType=0; if (KeGetCurrentIrql() > PASSIVE_LEVEL) { return STATUS_SUCCESS; } if(StorageStackDeviceObject […]

驱动程序如何成为操作系统的一部分?

我知道操作系统内核是由驱动程序组成的,但驱动程序如何成为操作系统的一部分?内核是否自行反编译,然后添加驱动程序并重新编译自身?,或者是内核的驱动程序插件?,有人告诉我,对于大多数操作系统来说,驱动程序实际上已成为内核的一部分,但每当我编译ac程序时,它就变成了一个普通的可执行文件

什么是相当于memset函数的Linux内核?

我正在编写一个驱动程序,要求我清除分配给零的所有内存。 memset是一个用户空间函数,但我想知道内核是否提供了一个可以帮助我做到这一点的宏。

编写OS X内核扩展以实现Linux的SO_BINDTODEVICE套接字选项

我希望能够通过特定的网络接口强制套接字。 在Linux中,内核允许程序员通过设置所述套接字选项来实现这一点 – 但在OS X中,我处于黑暗中。 因此我的标题问题 – 是否可能? 它完成了吗? 我不打算重新实现IP堆栈,只是启用了bind-to-interface选项。

我怎样才能编译程序员Dvorak?

我正在尝试编译开源项目Programmer Dvorak 。 问题是它有点旧,并没有使用当前版本的构建工具构建。 您可以在我的项目的Google代码页上看到我在线修改的完整源代码。 版本2是原始项目中未修改的源文件。 修订版3是我做出所有重大更改的地方。 您可以在此处看到两个修订版之间的差异 。 剩下的唯一明显问题是一些LINK警告: LNK4254 (例如section ‘.edata’ (40000040) merged into ‘.data’ (C0000040) with different attributes. ) – 我在这里问了一个独立版本的问题。 LNK4210 (例如.CRT .CRT section exists; there may be unhandled static initializers or terminators ) 我该如何修复这些警告? 我可以忽略它们吗? 尽管有这些警告,它仍然会产生一个exe。 但是,如果我继续运行它,它将无法正确安装,我需要求助于系统还原才能再次安装正式版本。 这可能是因为警告或仅仅是因为我没有正确修改项目。 我还需要做些什么来使这个项目可以安装? 构建过程(以及对我的修改的解释): 它说您需要Windows DDK,但似乎Windows驱动程序工具包已经取代它,所以我得到了它。 我只安装了“Build Environments”。 1.根据Readme.txt ,您应该运行: build-layout && build-installer 2.运行build-layout.bat […]

使用make在linux上编译驱动程序

这个错误信息是什么意思? 我正在尝试运行make。 看起来缺少配置。 配置是内核源的一部分? make -C /lib/modules/4.2.0-19-generic/build SUBDIRS=/home/glochild/Downloads/AX88179_178A_LINUX_DRIVER_v1.10.0_SOURCE modules make[1]: Entering directory ‘/usr/src/linux-headers-4.2.0-19-generic’ CC [M] /home/glochild/Downloads/AX88179_178A_LINUX_DRIVER_v1.10.0_SOURCE/ax88179_178a.o /home/glochild/Downloads/AX88179_178A_LINUX_DRIVER_v1.10.0_SOURCE/ax88179_178a.c:55:6: error: macro “__TIME__” might prevent reproducible builds [-Werror=date-time] ” ” __TIME__ ” ” __DATE__ “\n” ^ /home/glochild/Downloads/AX88179_178A_LINUX_DRIVER_v1.10.0_SOURCE/ax88179_178a.c:55:19: error: macro “__DATE__” might prevent reproducible builds [-Werror=date-time] ” ” __TIME__ ” ” __DATE__ “\n” ^ cc1: some warnings being treated […]

模拟Fn + F11按键

你能告诉我如何在笔记本电脑上模拟按键Fn + F11吗? 我是否必须写一个驱动程序,或类似的东西? 该平台是Windows XP Pro SP3。 编程语言是C / C ++。 目的是创建一个程序,允许通过GUI更改启用/禁用一些只能使用此热键关闭/打开的硬件设备。 IDE是Visual Studio 2010