#include "ntddk.h"
VOID MyDriverUnLoad(PDRIVER_OBJECT pDriverObject)
{
UNICODE_STRING usSymName;
RtlInitUnicodeString(&usSymName,L"\\??\\FirstDevice");
if(pDriverObject->DeviceObject!=NULL)
{
IoDeleteSymbolicLink(&usSymName);
IoDeleteDevice(pDriverObject->DeviceObject);
KdPrint(("delete device success"));
}
}
NTSTATUS CreateDevice(PDRIVER_OBJECT pDriverObject)
{
NTSTATUS Status;
PDEVICE_OBJECT pDevObj;
UNICODE_STRING usDevName;//type error bluescreen
UNICODE_STRING usSymName;
RtlInitUnicodeString(&usDevName,L"\\Device\\FirstDevice");
Status = IoCreateDevice(pDriverObject,0,&usDevName,FILE_DEVICE_UNKNOWN,0,TRUE,&pDevObj);
if(!NT_SUCCESS(Status))
{
return Status;
}
pDevObj->Flags |= DO_BUFFERED_IO;
RtlInitUnicodeString(&usSymName,L"\\??\\FirstDevice");
Status = IoCreateSymbolicLink(&usSymName,&usDevName);
if(!NT_SUCCESS(Status))
{
IoDeleteDevice(pDevObj);
return Status;
}
return STATUS_SUCCESS;
}
NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObject,PUNICODE_STRING pRegistryPath)
{
NTSTATUS Status;
Status = CreateDevice(pDriverObject);
if (!NT_SUCCESS(Status))
{
KdPrint(("create device failed"));
}
else
{
KdPrint(("create device successed"));
KdPrint(("%wZ",pRegistryPath));
}
pDriverObject->DriverUnload = MyDriverUnLoad;
return STATUS_SUCCESS;
}
驱动框架
最新推荐文章于 2022-11-30 17:48:17 发布