jjzjj

windows - 在 Windows 中禁用中断

我需要以原子方式执行一段代码。我想唯一的方法是禁用中断,我怎么能在Windows下做到这一点?我正在搜索允许我执行此操作的Windows操作系统,因此我不会专注于特定的Windows。即使是WindowsCE也不错。斯特凡诺 最佳答案 用户编写的代码完全禁用中断的概念几乎违背了Windows的一些基本设计假设。对于初学者来说,您不能从用户模式应用程序中禁用中断。(这是一个特权指令。)在内核模式下,您可以使用IRQL来防止大多数抢占(但不是全部)。这是在Windows下执行不可抢占的硬件操作的“标准”方式。我怀疑这就是您真正想要的。如

windows - 如何让 USB 设备加载我的功能驱动程序?

我写了一个usb功能驱动。如果我想让插入我计算机的任何USB设备加载此驱动程序而不是其真正的驱动程序,我应该怎么做?我只知道如果在总线驱动程序创建pdo时更改vid/pid,我可以做到。但我不知道是否有简单的方法可以做到这一点。如何改变总线的行为?过滤器驱动程序可以做到吗?平台是Windows。 最佳答案 最好的办法是实现一个HID(HumanInterfaceDevice)司机。通过遵循HID准则,您需要的大部分功能都已得到支持,而无需编写自定义设备驱动程序。这里有一些帮助您入门的链接:使用HID类简化了编写USB设备驱动程序的工

c++ - 如何设置IDE ATA Controller 的PIO周期时序?

我可以使用我自己编写的驱动程序在Windows8x64下以PIO模式传输数据以访问I/O端口。即使我将目标硬盘的传输模式(使用ATA命令)设置为PIO4,(读取操作的)传输速度也不会超过1.2MB/s(超出PIO模式的~16MB/s4应达到)。奇怪的是,即使我将磁盘设置为PIO0或1,速度仍然保持不变。这就是让我认为我必须更改IDEController循环时间的原因。但是哪里?哪个端口?假设我有一个标准的IDEController,有两个channel,我在channel0上工作,端口0x1F0到0x1F7用于ATA寄存器,端口3F6用于备用状态寄存器/设备控制,端口FFA0到FFAF

windows - "DPInst.exe not supported on current OS"

我有一个安装程序可以从FTDI安装USB串行驱动程序。但是在某些计算机上(所有计算机都运行俄语WindowsXP,因此可能是语言问题)安装失败。我尝试使用干净的俄语WindowsXPProfessionalSP3重复它,但它可以正常工作,所以这不是一个明确的语言问题。dpinst.log文件说:`INFO:04/18/201314:05:34INFO:ProductVersion2.1.0.0.INFO:Version:6.1.7601ServicePack1INFO:PlatformID:2(NT)INFO:ServicePack:1.0INFO:Suite:0x0100,Produ

windows - Windows 驱动程序中的标准 C++ 容器

我知道在开发windows驱动的时候不能直接使用STL库。但我确实需要使用标准的c++容器(矢量、map等)。有人知道在内核模式下使用的STL的一些基于内核的实现,或者至少实现标准容器的其他类似库吗? 最佳答案 看看这个http://bazislib.sysprogs.org/.这个库包含STLPort的补丁版本。 关于windows-Windows驱动程序中的标准C++容器,我们在StackOverflow上找到一个类似的问题: https://stacko

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微软

Windows 驱动程序 - 如何确定 Windows 是否正在启动或已经启动?

我正在尝试开发一个双重用途的驱动程序,它在启动时执行某些任务,并在Windows启动后执行其他不相关的任务。它是作为引导启动驱动程序开发的。我知道执行此操作的正确方法可能是开发2个单独的驱动程序,但我更愿意只执行一次WinQual过程。在我的应用程序中只安装一个驱动程序而不是安装两个驱动程序还有一个额外的好处。它需要通过Win8x86&64在Vista上工作。因此,我真正要寻找的是一种安全的方法,可以在DriverInit中确定系统是否处于启动过程中,或者它是否已经启动并运行。该驱动程序最初将在Windows已经启动时使用,然后在下次重新启动后的启动时启用。对于这两种情况,Driver

c++ - 非分页内存指针

我声明了2个结构:structirp_list{IRP*irp;LIST_ENTRYlh;};和structdev_info{...LIST_ENTRYlh;...};我在DriverWrite函数(IRP_MJ_WRITE)中做:structirp_list*il;structdev_info*di=(structdev_info*)device->DeviceExtension;if(!(il=ExAllocatePool(NonPagedPool,sizeof(*il)))){ret=STATUS_NO_MEMORY;DbgPrint("[uart]UartWritecan'th

windows - 24 位 USB 采样率支持

我的问题与这个问题非常相似:Link,但我无权发表评论。我将PIC32实现为声卡,现在我有一个可用的USB音频流,支持16位32kHz和48kHz采样率。我现在想将位深度更改为24位,因此我将USB描述符更改为:bSubFrameSize=0x03,//3bytespersamplebBitResolution=0x18,//24-bitresolution当我执行此操作时,他的位分辨率会按预期更改,但在麦克风的属性中,我可以更改采样频率的下拉菜单是灰色的。我没有更改端点描述符中的任何内容,仍然支持32kHz和48kHz。我的USB拓扑有1个音频控制接口(interface)和几个单元

windows - REG EXPORT HKLM\System\CurrentControlSet - Windows 错误

我正在测试Windows驱动程序软件。当测试失败时,我必须将注册表数据附加到错误。我明白了"ERROR:Unabletowritetothefile.Theremaybeadiskorfilesystemerror."当我运行以下命令时REG导出HKLM\System\CurrentControlSet.\Reg-data\CCS.reg(我在管理员模式下运行命令)。这种情况很少发生。这可能是由驱动程序软件引起的吗?或者这可能是一个通用的操作系统问题? 最佳答案 您没有提供目标文件名来告诉REG将导出的数据写入何处。C:\>rege