Hello World
来源:互联网 发布:node常用模块 编辑:程序博客网 时间:2024/05/16 15:00
编写第一个驱动:HelloWorld
1,启动VS2012,新建一个KMDF Empty工程
2,在KMDF HelloWorld工程中,添加Device.C[注意不是CPP]
3,添加如下代码:
#include <ntddk.h>#include <wdf.h>DRIVER_INITIALIZE DriverEntry;EVT_WDF_DRIVER_DEVICE_ADD KmdfHelloWorldEvtDeviceAdd;NTSTATUS DriverEntry(_In_ PDRIVER_OBJECT DriverObject, _In_ PUNICODE_STRING RegistryPath){ NTSTATUS status; WDF_DRIVER_CONFIG config; KdPrintEx(( DPFLTR_IHVDRIVER_ID, DPFLTR_INFO_LEVEL, "KmdfHelloWorld: DriverEntry\n" )); WDF_DRIVER_CONFIG_INIT(&config, KmdfHelloWorldEvtDeviceAdd); status = WdfDriverCreate(DriverObject, RegistryPath, WDF_NO_OBJECT_ATTRIBUTES, &config, WDF_NO_HANDLE); return status;}NTSTATUS KmdfHelloWorldEvtDeviceAdd(_In_ WDFDRIVER Driver, _Inout_ PWDFDEVICE_INIT DeviceInit){ NTSTATUS status; WDFDEVICE hDevice; UNREFERENCED_PARAMETER(Driver); KdPrintEx(( DPFLTR_IHVDRIVER_ID, DPFLTR_INFO_LEVEL, "KmdfHelloWorld: KmdfHelloWorldEvtDeviceAdd\n" )); status = WdfDeviceCreate(&DeviceInit, WDF_NO_OBJECT_ATTRIBUTES, &hDevice); return status;}4,若此时编译,通常会产生两个错误:
a:error : (WppCreateFile)Cannot open file trace.h,
b:error MSB3030: Could not copy the file
5,在HelloWorld工程属性,Wpp Tracing改为No;再F7编译就能成功了。
6,配置部署:一般来说调试开发主机叫host,跑驱动的叫Target或者Test。现在就来配置Target:
Driver -> Test -> Configure Computers
删除之前target,添加新的,输如计算机名:这个是虚拟机计算机名[不能写IP地址];手动配置,下一步
设置串口,速率等,这些都要跟虚拟机的设置一致。
检查设置,完成配置
7,配置目标驱动环境:解决方案[不是工程]属性中,根据需要进行更改:本例为win7 Debug Win32
8,F7生成解决方案,这时在...\KMDF HelloWorld\Win7Debug\KMDF HelloWorld Package目录中,会生成所需的驱动文件:inf,sys,cat还有一个WdfCoinstaller01011.dll。
9,安装驱动:
手动安装:
把上面的文件Copy到虚拟机,然后设备管理器->添加过时硬件->(double Click)所用硬件->从磁盘安装->浏览到inf所在路径,安装好后,虚拟机可惜需要重启。
利用Viso Studio:
package工程属性,Driver Install -> Deployment
对于真实硬件,选取Install and Verify;如果是虚拟驱动,可以使用Hardware ID,这个ID可以在inf文件中找到,一般格式为:
[Standard.NT$ARCH$]
%KMDFHelloWorld.DeviceDesc%=KMDFHelloWorld_Device, Root\KMDFHelloWorld; TODO: edit hw-id
10,虚拟机调试模式
在连接虚拟机之前,还要配置虚拟机的调试模式;由于win7采用的是BCD启动,因此需要进行如下操作:
在虚拟机中,以管理员模式运行CMD:
- bcdedit /debug on
- bcdedit /dbgsettings serial debugport: n baudrate: 115200
where n is the number of a COM port on the virtual machine.
最后重启虚拟机。
- Hello World!【Hello World】
- Hello, world!
- Hello World!
- Hello world!
- Hello World!
- Hello World!
- hello world!
- Hello World !
- Hello,World!
- Hello World!
- Hello world!
- Hello World!
- Hello World
- Hello World
- Hello world
- Hello World!
- Hello world
- Hello World !
- 使用drools解决小明喝汽水的问题
- 经典SQL语句大全(提升篇)
- Android的专用驱动
- HTTP协议图片上传交互
- iOS下拨打电话
- Hello World
- CentOS 7 相关记录
- Android应用程序资源的编译和打包过程分析
- Oracle Merge into(代替Insert/Update在Oracle中的应用)示例
- 经典SQL语句大全(技巧篇)
- openfire 域名问题
- UE4 Texture Support and Settings
- KMP基础模板- - -看了很多人的模版,总结一下
- hdoj 2896 病毒侵袭 【AC自动机 基础题】 【输出目标串中 模式串的id】