Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <ntddk.h>
- PDEVICE_OBJECT pDeviceObject;
- PUNICODE_STRING dos;
- PUNICODE_STRING dev;
- VOID Unload(IN PDRIVER_OBJECT pDriverObject)
- {
- DbgPrint("DriverUnloaded!\r\n");
- IoDeleteSymbolicLink(dos);
- IoDeleteDevice(dev);
- }
- NTSTATUS CreateCall(IN PDEVICE_OBJECT pDeviceObject, IN PIRP irp)
- {
- DbgPrint("Driver call created\r\n");
- irp->IoStatus.Status = STATUS_SUCCESS;
- irp->IoStatus.Information = 0;
- IoCompleteRequest(irp, IO_NO_INCREMENT);
- return STATUS_SUCCESS;
- }
- NTSTATUS CloseCall(IN PDEVICE_OBJECT pDeviceObject, IN PIRP irp)
- {
- DbgPrint("Drivre call closed\r\n");
- irp->IoStatus.Status = STATUS_SUCCESS;
- irp->IoStatus.Information = 0;
- IoCompleteRequest(irp, IO_NO_INCREMENT);
- return STATUS_SUCCESS;
- }
- NTSTATUS IoControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP irp)
- {
- NTSTATUS status = STATUS_SUCCESS;
- ULONG bytesIo = 0;
- ULONG control;
- PIO_STACK_LOCATION stack = IoGetCurrentIrpStackLocation(irp);
- control = stack->Parameters.DeviceIoControl.IoControlCode;
- irp->IoStatus.Status = status;
- irp->IoStatus.Information = bytesIo;
- IoCompleteRequest(irp, IO_NO_INCREMENT);
- }
- NTSTATUS DriverEntry(IN PDRIVER_OBJECT pDriverObject, IN PUNICODE_STRING RegistryPath)
- {
- NTSTATUS status;
- RtlInitString(dev, L"\\Device\\SimpleDriver");
- RtlInitString(dos, L"\\DosDevice\\SimpleDriver");
- status = IoCreateDevice(pDriverObject, 0, dev, FILE_DEVICE_UNKNOWN, FILE_DEVICE_SECURE_OPEN, 0, pDeviceObject);
- if (!NT_SUCCESS(status))
- {
- DbgPrintEx(0, 0, "Can't create device object\n");
- return status;
- }
- status = IoCreateSymbolicLink(dos, dev);
- if(!NT_SUCCESS(status))
- {
- DbgPrint("Can't create symbolic link\r\n");
- return status;
- }
- pDriverObject->MajorFunction[IRP_MJ_CREATE] = CreateCall;
- pDriverObject->MajorFunction[IRP_MJ_CLOSE] = CloseCall;
- pDriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = IoControl;
- pDriverObject->DriverUnload = Unload;
- pDeviceObject->Flags |= DO_DIRECT_IO;
- pDeviceObject->Flags &= ~DO_DEVICE_INITIALIZING;
- DbgPrint("Hello from Driver\r\n");
- return STATUS_SUCCESS;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement