我正在尝试编写一个kmdf驱动程序来定位一个定制的PCIe板。 在遵循Microsoft提供的默认项目之后,我对.inf文件做了一些小改动,主要是更改string的名称和提供我们PCIe板的硬件ID。
部署驱动程序的工作原理应该如此。 该驱动程序安装并显示在设备pipe理器上,但它说,它没有正确安装或可能会损坏。
在debugging,我看到WdfdriverCreate失败,错误0xC000009A,这意味着资源不足。
作为参考,这是kmdf模板项目为您生成的代码,这是我正在运行的代码:
自动化Win32驱动程序testing
WDM驱动程序,KMDF驱动程序和UMDF驱动程序有什么区别?
通过CreateFileMapping将IO空间映射到usermode
试图构buildCom0Com – c0clog.h丢失的文件
NTSTATUS DriverEntry( _In_ PDRIVER_OBJECT DriverObject,_In_ PUNICODE_STRING RegistryPath ) { WDF_DRIVER_CONfig config; NTSTATUS status; WDF_OBJECT_ATTRIBUTES attributes; // // Initialize WPP Tracing // WPP_INIT_TRACING( DriverObject,RegistryPath ); TraceEvents(TRACE_LEVEL_@R_734_4045@ION,TRACE_DRIVER,"%!FUNC! Entry"); // // Register a cleanup callback so that we can call WPP_CLEANUP when // the framework driver object is deleted during driver unload. // WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&attributes,DEVICE_CONTEXT); attributes.EvtCleanupCallback = CIPDriverEvtDriverContextCleanup; WDF_DRIVER_CONfig_INIT(&config,CIPDriverEvtDeviceAdd ); KdPrint(("CIP: Driver Entryn")); status = WdfdriverCreate(DriverObject,RegistryPath,&attributes,&config,WDF_NO_HANDLE ); if (!NT_SUCCESS(status)) { TraceEvents(TRACE_LEVEL_ERROR,"WdfdriverCreate Failed %!STATUS!",status); KdPrint(("CIP: WdfdriverCreate Failed with status - 0x%xn",status)); WPP_CLEANUP(DriverObject); return status; } TraceEvents(TRACE_LEVEL_@R_734_4045@ION,"%!FUNC! Exit"); return status; }
我的第一个问题是,这会导致什么?
我试图通过运行引发错误后转储日志
!wdfkd.wdflogdump mydriver.sys
但它从来没有工作。 我确保所有符号path都正确加载,如下所示
fffff880`05fdd000 fffff880`05fe6000 CIPDriver (private pdb symbols) C:UsersjimmyjoebobbyDocumentsVisual Studio 2013ProjectsCIPDriverx64Win7DebugCIPDriver.pdb 22: kd> lm m wdf* start end module name fffff880`00e5e000 fffff880`00f20000 Wdf01000 (pdb symbols) c:winsymbolsWdf01000.pdb 3FC6AA4329F4372BE924775887225632Wdf01000.pdb fffff880`00f20000 fffff880`00f30000 WDFLDR (pdb symbols) c:winsymbolswdfldr.pdb9674B20D2E5B4E7AA2DE143F642A176E2wdfldr.pdb
“CIPDriver”是我的驱动程序。
在运行dump命令时,这是输出:
22: kd> !wdfkd.wdflogdump CIPDriver.sys Trace searchpath is: Trace format prefix is: %7!u!: %!FUNC! - TMF file used for formatting log is: C:WinDDK7600.16385.1toolstracingamd64wdf01000.tmf Log at fffffa80356232f8 Gather log: Please wait,this may take a moment (reading 0 bytes). % read so far ... warn: The log Could not be accessed hint: Are the symbols the WDF library available? hint: The log is inaccessable after driver unload.
和.sympath的输出
22: kd> .sympath Symbol search path is: C:UsersjimmyjoebobbyDocumentsVisual Studio 2013ProjectsCIPDriverWin7Debug;C:winsymbols Expanded Symbol search path is: c:usersjimmyjoebobbydocumentsvisual studio 2013projectscipdriverwin7debug;c:winsymbols
其中C: winsymbols是我通过以下指南获取的微软的符号caching: https ://msdn.microsoft.com/en-us/library/windows/hardware/ff558829(v=vs.85).aspx
我的第二个问题是,我如何正确设置debugging器来转储出日志?
谢谢
解决方法跳过64位窗口中的驱动程序签名
WINDOWS KMDF PCI驱动程序: – 用于将数据写入到MemoryMapped虚拟地址的API
MSI-X在WDF中断
如何正确注册用于较低filter磁盘驱动程序的内部设备控制请求的完成例程?
智能卡驱动程序(带有SCardLib的KMDF)问题
我不太明白为什么这有帮助,但如果我关闭KMDF验证者
[DriverName] Package -> Properties -> Configuration Properties -> Driver Install -> KMDF Verifier -> Enable KMDF Verifier
并部署驱动程序,它的工作原理。 如果我打开它,它会失败。 我部署了几次驱动程序来打开和关闭该选项,打开时总是失败。
我发布了这个问题以及我的发现。 也许有人可以回答为什么这样的情况: https : //www.osronline.com/showthread.cfm?link=277793
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。