|
驱动(Buffer方式加载):
RtlInitUnicodeString(&Device, L"\\Device\\mmmmmmm");
RtlInitUnicodeString(&DosDevices, L"\\DosDevices\\mmmmmmm");
NTSTATUS status = IoCreateDevice(pDriverObject, 0, &Device, FILE_DEVICE_UNKNOWN, FILE_DEVICE_SECURE_OPEN, FALSE, &pDeviceObject);
if (NT_SUCCESS(status))
{
status = IoCreateSymbolicLink(&DosDevices, &Device);
if (!NT_SUCCESS(status))
{
IoDeleteDevice(pDeviceObject);
return status;
}
DbgPrintEx(0, 0, "创建成功\n");
}
else
{
DbgPrintEx(0, 0, "符号%wZ创建失败\n", Device);
return status;
}
pDriverObject->MajorFunction[IRP_MJ_CREATE] = DispatchCreate;
pDriverObject->MajorFunction[IRP_MJ_CLOSE] = DispatchClose;
pDriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = DispatchIoctl;
return STATUS_SUCCESS;
R3:
hDevice = CreateFile(L"\\\\.\\mmmmmmm",0,FILE_SHARE_READ | FILE_SHARE_WRITE,NULL,OPEN_EXISTING, 0, NULL);
GetLastError 错误代码:2 |
|