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:

  1. bcdedit /debug on
    bcdedit /dbgsettings serial debugport: n baudrate: 115200

    where n is the number of a COM port on the virtual machine.


    最后重启虚拟机。

0 0
原创粉丝点击