gpt4 book ai didi

c - 如何启动一个自写的驱动程序

转载 作者:可可西里 更新时间:2023-11-01 13:37:16 25 4
gpt4 key购买 nike

我在 Visual Studio 2013 中编写了一个驱动程序。构建过程成功。然后我准备了一台 traget 计算机并将驱动程序文件复制到它上面。然后我安装了驱动程序:

C:\Windows\system32>pnputil -a "E:\driverZeug\KmdfHelloWorldPackage\KmdfHelloWorld.inf"
Microsoft-PnP-Dienstprogramm

Verarbeitungsinf.: KmdfHelloWorld.inf
Das Treiberpaket wurde erfolgreich hinzugefügt.
Veröffentlichter Name: oem42.inf


Versuche gesamt: 1
Anzahl erfolgreicher Importe: 1

看来是成功了。我在 PC 上运行了 DebugView,但现在我不知道如何启动驱动程序,这样我才能看到调试输出。我的源代码中有一个 DbgPrintEx() 语句。

谁能告诉我如何启动这个驱动程序以便我可以看到输出。

这是驱动程序的源代码:

#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;

DbgPrintEx(DPFLTR_IHVDRIVER_ID, DPFLTR_INFO_LEVEL, "KmdfHelloWorld: DriverEntry\n");
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;
}

最佳答案

如果安装已经完成,您需要制作一个EXE(testapp) 来启动您的驱动程序。您可以在应用程序中使用以下代码:

SC_HANDLE   schService;  
SC_HANDLE schSCManager;

schSCManager = OpenSCManager(NULL, // local machine
NULL, // local database
SC_MANAGER_ALL_ACCESS // access required
);

// Open the handle to the existing service.
schService = OpenService(SchSCManager,
DriverName, //name of the driver
SERVICE_ALL_ACCESS
);

StartService(schService, // service identifier
0, // number of arguments
NULL // pointer to arguments
));

您需要根据需要添加代码。尝试这个。

有关详细信息,请下载 Microsoft 提供的示例驱动程序和测试应用。

关于c - 如何启动一个自写的驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37521783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com