【发布时间】: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