【问题标题】:Error Starting Windows Driver: The handle is invalid启动 Windows 驱动程序时出错:句柄无效
【发布时间】:2013-12-16 17:29:00
【问题描述】:

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

我从this tutorial开始

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

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

C:\Windows\system32>sc start KmfSmall

[SC] 启动服务失败 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;
}

【问题讨论】:

  • OSR 工具是 2008 年推出的,几乎可以肯定不适合使用 WDK8.1 构建的 KMDF 驱动程序。您应该遵循 MS 教程。

标签: c windows kernel driver wdk


【解决方案1】:

在花了一周左右的时间试图弄清楚之后,我刚刚回答了似乎是同样的问题。

基本上归结为缺少 KMDF 版本的项目设置。

问题:Why am I getting Error Code 6 on StartService?
答:https://stackoverflow.com/a/23705329/2487257

【讨论】:

  • 应该标记为答案,将 KMDF 版本设置为 1.9 对我有帮助。
猜你喜欢
  • 2021-07-01
  • 2017-06-06
  • 1970-01-01
  • 2012-11-22
  • 2019-02-01
  • 2013-12-11
  • 1970-01-01
  • 2013-03-30
  • 1970-01-01
相关资源
最近更新 更多