我正在从内核级驱动程序(从IOControlfunction)写入用户空间缓冲区,我需要确保用户程序/服务不会覆盖缓冲区或在驱动程序写完之前读取它到它。 有没有一种方法(如果是这样,最好的方法是什么)在Windows的内核模式驱动程序中input一种“全局临界区”,允许驱动程序在短时间内获得全系统处理的独占权,驱动程序可以保证独占访问用户空间的缓冲区?
在我的内核模式驱动程序内是以下代码: PHYSICAL_ADDRESS physAddr; PVOID pvk; unsigned int reg_addr; // physical address to write to unsigned int* reg_val; // pointer to value to be written // assume reg_addr and reg_val are initialized to some values physAddr.QuadPart = (ULONGLONG)reg_addr; pvk = MmMapIoSpace(physAddr,sizeof(reg_addr),MmNonCached); WRITE_REGISTER_ULONG((ULONG*)pvk,(ULONG)®_val); 地址没有被写入,我不知道为什么。 这是正确的程序还是我错过了一个步骤? 另外,我的指针算术可能是错的? 我尝试了所有的排列,没有一个导致了正确的结果。 我希望由reg_addr指定的物理内存由reg_addr指向的值指定。
是否有可能编写一个HID驱动程序,从设备input执行一些操作,而不需要在用户层的应用程序? Microsoft文档描述用户层中的客户端应用程序,通过HID.dll与内核中的HID体系结构进行交互。 当没有客户端时,内核级驱动程序代码是否还在运行? 如果这是可能的,什么types的操作被允许? 例如,驱动程序可以将设备中的信息从UDPstream中传输出去吗?
我有一个霍尼韦尔Voyager MS 9540激光扫描仪。 我想使用微软(Windows XP)的winusb为了发送ascii代码扫描仪设备。 winusb驱动安装需要一个inf文件。 我有两个问题隐藏这个inf文件: 关于硬件ID(hw-id)的第一个问题。 文档中提到了INF模型部分: device-description=install-section-name[,hw-id][,compatible-id…] 在一个示例inf文件中,这一行是: %DeviceName% =USB_Install, USB\VID_0547&PID_1002 这里,逗号后面的string是硬件ID。 我查看了激光扫描仪手册,但没有find任何硬件ID。 所有的激光扫描仪是否有相同的硬件ID或是供应商特定的ID? 我打开设备pipe理器,select一个USB条目,并查看详细信息部分。 有一个硬件ID部分与样本类似(USB \ Vid_0bda&Pid_0111&Rev_110 =)。 但是,我怎么知道哪个USB接口是我的USB激光扫描仪? 第二个问题: 霍尼韦尔激光扫描仪扫描条形码。 当你记事本打开时,它将条形码的数字作为文本打印到记事本中,就像它是用键盘input一样。 在INF文件的版本部分中,您必须定义一个类和一个classguid。 我应该select这个USB激光扫描仪“类= USB”或“类= HIDClass”(人机界面设备,因为它也是一个隐藏)? 提前感谢!
我打算为64位平台(即Win7)制作一个设备驱动程序,我也想公开可以分发给编写应用程序的用户的DLL中的设备API。 问题是,我怎样才能为32位和64位应用程序构build这样的DLL? 这里的问题实际上只有大约32位一个。 我可以写32位的DLL和编译它以及64位? 或者我真的需要一些IPC来包装64位DLL,以便32位应用程序可以间接调用设备驱动程序?
我是一个新手,我正在开发一个跟踪文件创build/写入/修改的驱动程序。 现在我被告知要处理卷快照。 我已经看到了Windows SDK附带的VSS代码。 但是我被告知在内核级别上使用VSS,意味着我必须找出如何通过我的驱动程序来使用或传送Windows卷快照服务。 请有人对此提供一些意见,并试图帮助我,因为我GOOGLE了很多卷快照,但没有得到很多的帮助。 我是否应该在内核级别实现VSS Writer或其他function来使用Windows VSS服务的function。 提前致谢。
我有一个顶级微filter驱动程序和一个用户模式的服务,这与Scanner MSDN示例类似。 我想要我的用户模式服务来replaceA.txt文件内容,当它在记事本中打开。 因此,在IRP_MJ_CREATE操作后callbackIRP_MJ_CREATE我向服务发送通知,并等待它向文件写入新的数据。 但服务无法打开A.txt ,因为它已被记事本locking。 如何让我的服务在不使用内核FltWriteFile的情况下写入数据? 这样做的最好方法是什么? 也许取消文件打开,让服务写入数据,并重新打开相同的参数,而不离开后操作callback? 也许我应该覆盖在预操作期望的访问? — 任何信息将不胜感激。 如果您认为这个问题缺乏细节,请让我知道。
我看到一个带有Win7的联想平台,它有一个networking摄像头和一个虚拟networking摄像头。 虚拟networking摄像头呈现由物理networking摄像头捕获的video,但支持image processing。 它也与物理networking摄像头并行工作(一个应用程序使用networking摄像头,另一个应用程序使用虚拟networking摄像头)。 我在哪里可以findWindows体系结构的文档,编程这样的虚拟相机,并从物理设备提供它? 谢谢你,谢谢
我正在研究以diskperf为基础的上卷filter驱动程序。 我想知道如何计算群集大小(分配单元大小)。 我知道使用GetDiskFreeSpace我可以得到所需的输出,但它只在用户模式下有用。 我希望它在内核级别工作。 有没有IOCTL或任何function,可以帮助我find群集大小?
根据“ Windows Vista和更高版本显示驱动程序模型架构 ”,应用程序和显示微端口驱动程序之间有一个通道,如下所示: 应用程序<—>用户模式Win32 GDI <—>内核模式Win32K.sys <—> Dxgikrnl.sys <—>显示Miniport Driver 这不需要用户模式的显示驱动程序。 我想知道是否可以提供微型端口驱动程序只支持一个简单的基于帧缓冲区的graphics卡?