C++第四十一篇 — 安装成功的第一个驱动文件

参考链接:https://blog.csdn.net/LEON1741/article/details/87291839

一、新建工程

C++第四十一篇 -- 安装成功的第一个驱动文件

二、写一个Driver.c

C++第四十一篇 -- 安装成功的第一个驱动文件

C++第四十一篇 -- 安装成功的第一个驱动文件

C++第四十一篇 -- 安装成功的第一个驱动文件

#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 variable to record success or failure
    NTSTATUS status = STATUS_SUCCESS;

    // Allocate the driver configuration object
    WDF_DRIVER_CONFIG config;

    // Print "Hello World" for DriverEntry
    KdPrintEx((DPFLTR_IHVDRIVER_ID, DPFLTR_INFO_LEVEL, "KmdfHelloWorld: DriverEntryn"));

    // Initialize the driver configuration object to register the
    // entry point for the EvtDeviceAdd callback, KmdfHelloWorldEvtDeviceAdd
    WDF_DRIVER_CONFIG_INIT(&config,
        KmdfHelloWorldEvtDeviceAdd
    );

    // Finally, create the driver object
    status = WdfDriverCreate(DriverObject,
        RegistryPath,
        WDF_NO_OBJECT_ATTRIBUTES,
        &config,
        WDF_NO_HANDLE
    );
    return status;
}

NTSTATUS
KmdfHelloWorldEvtDeviceAdd(
    _In_    WDFDRIVER       Driver,
    _Inout_ PWDFDEVICE_INIT DeviceInit
)
{
    // We're not using the driver object,
    // so we need to mark it as unreferenced
    UNREFERENCED_PARAMETER(Driver);

    NTSTATUS status;

    // Allocate the device object
    WDFDEVICE hDevice;

    // Print "Hello World"
    KdPrintEx((DPFLTR_IHVDRIVER_ID, DPFLTR_INFO_LEVEL, "KmdfHelloWorld: KmdfHelloWorldEvtDeviceAddn"));

    // Create the device object
    status = WdfDeviceCreate(&DeviceInit,
        WDF_NO_OBJECT_ATTRIBUTES,
        &hDevice
    );
    return status;
}

View Code

 

三、配置项目

C++第四十一篇 -- 安装成功的第一个驱动文件

C++第四十一篇 -- 安装成功的第一个驱动文件

四、编译

C++第四十一篇 -- 安装成功的第一个驱动文件

 

编译出来的文件放在

C++第四十一篇 -- 安装成功的第一个驱动文件

 

如此驱动文件就完成了。

 

接下来需要将它安装到虚拟机上了。之前文章中有写一个msi的文件,需要在虚拟机上安装,然后虚拟机要是测试模式,安装驱动可以通过devcon也可以自己手动安装,在设备管理器里。记住调试的时候要下断点。如果Win10上面显示不出KdPrintEx的话,可以调注册表,调试方法都在调试的那篇文章里。

原文链接: https://www.cnblogs.com/smart-zihan/p/11799396.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    C++第四十一篇 -- 安装成功的第一个驱动文件

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/305488

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月16日 上午2:47
下一篇 2023年2月16日 上午2:50

相关推荐