sys: create basic driver structure

This commit is contained in:
Bill Zissimopoulos
2015-11-16 15:40:31 -08:00
parent 20a5e668c6
commit 99c2a6a5e5
19 changed files with 551 additions and 4 deletions

View File

@ -6,10 +6,14 @@
#include <sys/driver.h>
PDEVICE_OBJECT FspDeviceObject;
DRIVER_INITIALIZE DriverEntry;
DRIVER_UNLOAD FspUnload;
#ifdef ALLOC_PRAGMA
#pragma alloc_text(INIT, DriverEntry)
#pragma alloc_text(PAGE, FspUnload)
#endif
NTSTATUS
@ -17,8 +21,55 @@ DriverEntry(
_In_ PDRIVER_OBJECT DriverObject,
_In_ PUNICODE_STRING RegistryPath)
{
UNREFERENCED_PARAMETER(DriverObject);
UNREFERENCED_PARAMETER(RegistryPath);
DEBUGLOG("");
return STATUS_NOT_IMPLEMENTED;
NTSTATUS Status;
UNICODE_STRING DeviceName;
/* create the file system device object */
RtlInitUnicodeString(&DeviceName, L"" DRIVER_NAME);
Status = IoCreateDevice(DriverObject, 0, &DeviceName, FILE_DEVICE_FILE_SYSTEM, 0, FALSE,
&FspDeviceObject);
if (!NT_SUCCESS(Status))
return Status;
/* setup the driver object */
DriverObject->DriverUnload = FspUnload;
DriverObject->MajorFunction[IRP_MJ_CREATE] = FspCreate;
DriverObject->MajorFunction[IRP_MJ_CREATE_NAMED_PIPE] = 0;
DriverObject->MajorFunction[IRP_MJ_CLOSE] = FspClose;
DriverObject->MajorFunction[IRP_MJ_READ] = FspRead;
DriverObject->MajorFunction[IRP_MJ_WRITE] = FspWrite;
DriverObject->MajorFunction[IRP_MJ_QUERY_INFORMATION] = FspQueryInformation;
DriverObject->MajorFunction[IRP_MJ_SET_INFORMATION] = FspSetInformation;
DriverObject->MajorFunction[IRP_MJ_QUERY_EA] = FspQueryEa;
DriverObject->MajorFunction[IRP_MJ_SET_EA] = FspSetEa;
DriverObject->MajorFunction[IRP_MJ_FLUSH_BUFFERS] = FspFlushBuffers;
DriverObject->MajorFunction[IRP_MJ_QUERY_VOLUME_INFORMATION] = FspQueryVolumeInformation;
DriverObject->MajorFunction[IRP_MJ_SET_VOLUME_INFORMATION] = FspSetVolumeInformation;
DriverObject->MajorFunction[IRP_MJ_DIRECTORY_CONTROL] = FspDirectoryControl;
DriverObject->MajorFunction[IRP_MJ_FILE_SYSTEM_CONTROL] = FspFileSystemControl;
DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = FspDeviceControl;
DriverObject->MajorFunction[IRP_MJ_INTERNAL_DEVICE_CONTROL] = 0;
DriverObject->MajorFunction[IRP_MJ_SHUTDOWN] = FspShutdown;
DriverObject->MajorFunction[IRP_MJ_LOCK_CONTROL] = FspLockControl;
DriverObject->MajorFunction[IRP_MJ_CLEANUP] = FspCleanup;
DriverObject->MajorFunction[IRP_MJ_CREATE_MAILSLOT] = 0;
DriverObject->MajorFunction[IRP_MJ_QUERY_SECURITY] = FspQuerySecurity;
DriverObject->MajorFunction[IRP_MJ_SET_SECURITY] = FspSetSecurity;
DriverObject->MajorFunction[IRP_MJ_POWER] = 0;
DriverObject->MajorFunction[IRP_MJ_SYSTEM_CONTROL] = 0;
DriverObject->MajorFunction[IRP_MJ_DEVICE_CHANGE] = 0;
DriverObject->MajorFunction[IRP_MJ_QUERY_QUOTA] = 0;
DriverObject->MajorFunction[IRP_MJ_SET_QUOTA] = 0;
DriverObject->MajorFunction[IRP_MJ_PNP] = 0;
return STATUS_SUCCESS;
}
VOID
FspUnload(
_In_ PDRIVER_OBJECT DriverObject)
{
UNREFERENCED_PARAMETER(DriverObject);
}