Articles of wdk

谁负责处理IRP并决定将哪些IRP发送以及按何种顺序?

当在WDM中debugging烤面包机驱动程序时,我的Bus_PnP具有IRP堆栈,其中分配了哪个MINOR函数将被处理,但是将其分配给IRP堆栈以处理哪个次要。

文件筛选器驱动程序页面文件

我有一个文件filter驱动程序应该在特定情况下不允许文件/目录访问。 我使用IoRegisterFsRegistrationChange来获取有关文件系统更改的通知,并附加到适当的卷设备对象。 它通常是一个传递filter。 它唯一处理的是IRP_MJ_CREATE (实际上不允许某些types的文件/目录访问)。 所有其他IRP和快速I / O请求只传递给底层设备。 除了一件事情,它工作正常。 如果驱动程序在系统启动时加载( SERVICE_SYSTEM_START ) – 因为我不太明白系统页面文件被禁用。 用户login后会显示“性能选项”popup对话框。 虚拟内存分页文件被禁用(这是什么触发这个对话框popup恕我直言)。 如果驱动程序在后期dynamic加载 – 没有明显问题,一切正常。 我试图禁用处理IRP_MJ_CREATE (只是像所有其他请求传递),但没有任何改变。 我明白,通常很难说在没有看到代码的情况下问题出在哪里。 但无论如何,这是一个已知的问题? 我应该检查什么? 这是不是以适当的方式传递某些请求的症状,或者将设备对象附加到卷设备对象的偶然事实可能会导致这样的问题? 欢迎所有可能的想法。 提前致谢。

如何知道一个过滤设备驱动程序被挂接到一个COM端口

我一直在试图确定USB串行端口(COM)端口是否被系统总线驱动程序监控,但没有成功。 基本上我有一个应用程序,通过过滤设备驱动程序监视COM端口。 在阅读Dobb博士杂志的这篇文章后,我能够做到这一点。 现在试图在一个单独的应用程序中实现的是能够确定是否有一个应用程序挂钩到一个特定的COM端口使用过滤设备驱动程序。 任何人都可以帮助或引导我

在Windows上创build防火墙filter层(c / c ++)的解决scheme?

我正在开发一个应用程序过滤networking连接从客户端到我的服务器(拒绝或允许连接到我的服务器)。 我正在研究并发现一些资源,如Windows防火墙API。 但是我不知道是否有必要。 什么是解决问题的最佳API或解决scheme? 非常感谢。 问候,

将依赖关系Shell32.lib添加到WDK makefile

我已成功通过WDK XPSDrv示例项目,并将其修改为执行我所需的操作。 但是,我绝对不知道如何让构build脚本引用/包括/无论shell32.lib。 我是一个.NET的家伙! 这是奇怪而可怕的领土。 我认为添加一个依赖引用是我需要做的。 当我编译我得到这个错误 3>errors in directory c:\winddk\7600.16385.1\src\printgit\xpsdrvsmpl\ src\filters\common 3>c:\winddk\7600.16385.1\src\printgit\xpsdrvsmpl\src\filters\common\ xdstrmflt.cpp(238) : error C3861: 'ShellExecute': identifier not found 由于我极度缺乏知识(和匆忙),我没有使用visual studio,只是在记事本++和shell wdk构build环境中使用了简单的mod。 我有一个VS的代理项目,我一直在编写和testing小块代码。 在那个项目中,我添加了一个依赖库到shell32.lib ,一切都很完美。 有一个引用sources的makefile,内容如下。 这并不重要,但需要shell32的代码是 HINSTANCE statu = ShellExecute(NULL,TEXT("open"),szTempFileName,NULL,NULL,9); 这是sources文件。 INCLUDES=$(INCLUDES); \ .\; \ .\..\inc; \ .\..\debug; \ $(DDK_INC_PATH); \ $(SDK_INC_PATH)\gdiplus; \ USE_ATL=1 USE_STL=1 ATL_VER=70 STL_VER=70 # We use STL 7.0, […]

Windows内核级全局关键部分

我正在从内核级驱动程序(从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)&reg_val); 地址没有被写入,我不知道为什么。 这是正确的程序还是我错过了一个步骤? 另外,我的指针算术可能是错的? 我尝试了所有的排列,没有一个导致了正确的结果。 我希望由reg_addr指定的物理内存由reg_addr指向的值指定。

如何获得DPInst? 在WDK 8.1安装中找不到它

我下载了最新的WDK,并且一直在寻找DPInst。 他们把它分成了不同的8.1包吗?

如何设置和查询NDIS虚拟微型端口驱动程序的组播地址?

我想添加多播支持虚拟Miniport驱动程序。 我有一个筛选器驱动程序绑定在每个物理网卡上。 按照Microsoft文档 https://msdn.microsoft.com/en-us/library/windows/hardware/ff569073(v=vs.85).aspx 我盯着添加支持多播地址: 这些是我的步骤:在微型端口驱动程序中:在miniport initialization期间,我在NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES添加了MaxMulticastListSize = 32 。 NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES MiniportAdapterGeneralAttributes; MiniportAdapterGeneralAttributes.MediaType = NdisMedium802_3; MiniportAdapterGeneralAttributes.PhysicalMediumType = NdisPhysicalMediumUnspecified; MiniportAdapterGeneralAttributes.MaxMulticastListSize = 32; 我还更新了OID_802_3_MAXIMUM_LIST_SIZE OID中的32个最大地址。 接下来我更新了PacketFilters MiniportAdapterGeneralAttributes.SupportedPacketFilters = NDIS_PACKET_TYPE_DIRECTED | NDIS_PACKET_TYPE_MULTICAST | NDIS_PACKET_TYPE_BROADCAST | NDIS_PACKET_TYPE_PROMISCUOUS | NDIS_PACKET_TYPE_ALL_MULTICAST; 在OID_GEN_CURRENT_PACKET_FILTER OID设置请求期间,我用DATA.SET_INFORMATION.InformationBuffer值更新了PacketFilters。 和OID_GEN_MAC_OPTION我在添加macros: NDIS_MAC_OPTION_NO_LOOPBACK | NDIS_MAC_OPTION_FULL_DUPLEX | NDIS_MAC_OPTION_8021P_PRIORITY ; NDIS_MAC_OPTION_NO_LOOPBACK | NDIS_MAC_OPTION_FULL_DUPLEX | NDIS_MAC_OPTION_8021P_PRIORITY ; 接下来在OID_802_3_MULTICAST_LIST OID设置请求中,我维护了一个多播列表 OidRequest->DATA.SET_INFORMATION.BytesNeeded = 6; […]

用于打印到XPS的Windows 7驱动程序

链接到Windows 7 DDK(或WDK)是不是我似乎能够到达的。 我需要编写一个驱动程序,将内容转换为XPS,然后做一些事情。 “做某事”很容易,但是我不确定的第一部分。 我find了Win7的WDK的链接,但正如我上面所说,我无法得到它(我的公司有MSDN,但我不能在下载中find它)。 至于XPS部分,我发现这个关于XPS的链接现在已经可以得到了,所以到这里的链接似乎并没有把注意力集中在驱动程序上,而是看起来更一般化。 我想知道是否有人可以帮助解决这两个问题。 是写一个Win7的驱动程序与Vista相同,在这种情况下,我至less可以开始使用Windows 2008的WDK? 有没有人使用这个XPSfilterpipe道打印到XPS与自己的自定义驱动程序? 感谢所有的帮助。