草庐IT

windows - 在内核空间使用 VC intrinsic

我的问题是当头文件包含在SDK中(从VC10安装)并且我用来编译驱动程序的WDK不了解时,如何在内核空间(在Windows上)使用内部函数这个文件。当我#include一切正常,但是当我开始编译时,我得到了errorC1083:Cannotopenincludefile:'intrin.h':Nosuchfileordirectory我尝试将适当的文件复制到WDK目录,但没有成功。我知道我可以开始编写内联汇编,但老实说我想避免这样做,因为有内在支持,我只是不知道如何访问它。 最佳答案 WDK目录中缺少一些较新的header。只需将声

windows - 访问设备配置空间-win内核PCI设备

我正在编写获取pci设备的方法,以编程方式给定供应商ID、设备ID(就像Linux内核中的pci_get_device一样)。为此,我需要获取设备对象配置。我从这里读到同样的内容:http://msdn.microsoft.com/en-us/library/windows/hardware/ff558707(v=vs.85).aspx现在为了测试这个,我制作了假驱动程序-服务安装框架,它将安装我的I/O设备驱动程序,在DriverEntry中我可以测试这个PCI功能。但是操作系统因irql_not_less_or_equal而崩溃,在irp=IoBuildSynchronousFsd

c++ - UVC 扩展单元和 Directshow 集成

我正在尝试修改MSDNlink中提供的UVC扩展单元代码.我已将其他方法添加到XUProxy.cpp中提供的CExtension类。添加的所有这些方法也包含在interface.idl文件中。这是代码片段。STDMETHODIMPCExtension::GetAllCapDevices(PDEVICELISTpList,ULONG*pulDevCount,ULONGulListNum){HRESULThr=S_OK;IEnumMoniker*pEnum;CoInitializeEx(NULL,COINIT_MULTITHREADED);hr=EnumerateDevices(CLSID

c# - 如何在 Windows 机器上制作虚拟扩展屏幕?

我必须开发一个Windows应用程序,其目的是将屏幕分成两个虚拟显示器,就像我们插入第二个显示器一样,​​Windows检测这两个显示器并根据此屏幕截图提供设置。我必须通过虚拟地模拟连接第二台显示器来实现此功能。请指导我如何实现这一目标以及我应该遵循什么逻辑?我应该关注哪种WindowsAPI?我是否需要与Windows显示驱动程序进行交互或其他什么?此应用程序必须使用易于构建的C#或VB或VC++开发。此应用程序的输出将导致屏幕被分成两个屏幕,并且应该作为两个单独的屏幕显示给其他应用程序。感谢和问候。 最佳答案 可能有一个api可

windows - 如何将自定义文件系统添加到 Window 的格式数据对话框的列表中?

我想在Window的“格式数据”对话框中的文件系统列表中添加一个文件系统。这些数据是从哪里填充的?我猜它是从现有的可安装文件系统(驱动程序、过滤器、微型过滤器)中枚举出来的?我想做的是创建一个自定义文件系统,该系统与NTFS基本相同,但差别很小。我想知道我是否可以创建一个IFS驱动程序/过滤器/微型过滤器,它允许我搭载现有的NTFS驱动程序(就像一个直通,但让它通过一个特定的文件系统驱动程序,而不是仅仅落到下一个可用的)和请允许我将其列在格式数据对话框中,同时调用我的格式函数,该函数将调用底层NTFS格式函数。我不确定这是否可能或如何完成。我基本上是在找人给我指明正确的方向。

windows - MSVAD 虚拟驱动程序丢失用于在 MS Windows 10 1703 中呈现的音频数据包

我在WDK8.0的MSVAD的基础上编写了一个虚拟音频驱动程序。该驱动程序在MSWinXP、Vista、8.x和10上运行良好。但是在启动WindowsCreatorsUpdate(1703)后,我注意到我的驱动程序开始丢失和滞后声音。我做了一些研究并检测到以下情况:驱动程序复制的音频数据少于我的预期。例如:CMiniportWaveCyclicStreamMSVAD::CopyTo()收到1920个字节,CMiniportWaveCyclicStreamMSVAD::CopyFrom()在输出时发送较少的音频数据(1764)。为什么????请有任何想法!

c++ - 打印机驱动程序开发 - 从 32 位到 64 位

我开发了一个为32位系统编译的驱动程序。该驱动程序基于unidriver。有谁知道要使驱动程序与64位兼容需要什么?如果有的话,我需要对代码做哪些更改?还是只需要用64位版本的DDK编译它?提前致谢。努诺 最佳答案 第一步是使用VisualStudio打开项目并添加x64配置。然后,测试并查看它是否构建(可能不会)。最常见的错误(我遇到过)是这些:DWORD->DWORD_PTR+所有相关的具有长版本的Win32api函数指针截断:将在msvc上发出警告,在gcc上发出错误:在适用的情况下将long/int替换为(u)intptr_

windows - 默默使用Microsoft XPS Document Writer打印机制作XPS

几天来,我一直在与不使用对话框将XPS打印到文件中作斗争。我已经阅读了CodeGuru和FengYuan(MSDN)中有关此事的帖子,以及此处的许多讨论主题,但我仍然迷路了。具体来说,我的情况是我有一个必须使用的第3方API,它会打印到默认打印机(比如MicrosoftXPSDocumentWriter)。我希望能够在打印过程之前“应用”一个文件名,当然不要有对话框。我曾尝试使用WinDDK-XPSDRV和LOCALMON示例,但无法弄清楚如何操纵代码来实现我的目标。(甚至完全理解我是否需要新的打印机驱动程序或新的端口类型) 最佳答案

Windows 内核级全局临界区

我正在从内核级驱动程序(从IOControl功能)写入用户空间缓冲区,我需要确保用户空间程序/服务不会覆盖缓冲区或在驱动程序之前读取它已经写完了。有没有一种方法(如果有,首选方法是什么)在Windows的内核模式驱动程序中进入一种“全局临界区”,从而允许驱动程序在短时间内获得系统范围内处理的独占权以便驱动程序可以保证独占访问用户空间中的缓冲区? 最佳答案 考虑到您在评论中的回复,实现这一目标的一种方法是维护与每个系统处理器关联的内核模式线程,并在您写入缓冲区时将它们的IRQL提高到DPC。DPCIRQL不允许线程调度,因此用户模式应

windows - 如何调用NdisOpenAdapterEx或ProtocolBindAdapter例程之外的替代方法?

我正在将著名的数据包捕获软件-WinPcap从NDIS5.0移植到NDIS6.x。我试图将每个NDIS5.0功能转换为它的6.0版本。在WinPcap源代码中,NdisOpenAdapter由Openclos.c中的NPF_OpenAdapter调用。我将其翻译为NDIS6.0的NdisOpenAdapterEx。但我找不到设置第4个参数BindContext的方法。NdisOpenAdapterEx的替代版本可以在这里找到:http://msdn.microsoft.com/en-us/library/windows/hardware/ff563715(v=vs.85).aspx微软