启动Windows驱动程序时出错:句柄无效

时间:2013-11-30 18:31:16

标签: c windows kernel driver wdk

我是一名Web开发人员,决定进入内核模式开发。我安装了WDK 8.1,Visual Studio Professional 2013,并设置了Windows 7 VM来调试和测试我的驱动程序。

我从this tutorial

开始

我下载解决方案并构建驱动程序。我无法执行教程中描述的部署步骤,因此我尝试使用OSR Driver Loader

安装驱动程序

我能够注册驱动程序,但是当我尝试启动它时,我收到以下错误。

C:\ Windows \ system32> sc start KmfSmall

[SC] StartService FAILED 6:

句柄无效。

这是驱动程序的代码:

#include <ntddk.h>
#include <wdf.h>

DRIVER_INITIALIZE DriverEntry;
EVT_WDF_DRIVER_DEVICE_ADD KmdfSmallEvtDeviceAdd;

NTSTATUS DriverEntry(_In_ PDRIVER_OBJECT  DriverObject, _In_ PUNICODE_STRING RegistryPath)
{
    NTSTATUS status;
    WDF_DRIVER_CONFIG config;

    KdPrintEx((DPFLTR_IHVDRIVER_ID, DPFLTR_INFO_LEVEL, "KmdfSmall: DriverEntry\n"));
    WDF_DRIVER_CONFIG_INIT(&config, KmdfSmallEvtDeviceAdd);
    status = WdfDriverCreate(DriverObject, RegistryPath, WDF_NO_OBJECT_ATTRIBUTES, &config, WDF_NO_HANDLE);
    return status;
}

NTSTATUS KmdfSmallEvtDeviceAdd(_In_ WDFDRIVER Driver, _Inout_ PWDFDEVICE_INIT DeviceInit)
{
    NTSTATUS status;
    WDFDEVICE hDevice;
    UNREFERENCED_PARAMETER(Driver);

    KdPrintEx((DPFLTR_IHVDRIVER_ID, DPFLTR_INFO_LEVEL, "KmdfSmall: KmdfSmallEvtDeviceAdd\n"));
    status = WdfDeviceCreate(&DeviceInit, WDF_NO_OBJECT_ATTRIBUTES, &hDevice);
    return status;
}

1 个答案:

答案 0 :(得分:2)

我花了一个星期左右的时间试图解决这个问题,我刚刚回答了看似同样的问题
基本上归结为缺少KMDF版本的项目设置
问题:Why am I getting Error Code 6 on StartService?
答案:https://stackoverflow.com/a/23705329/2487257