reactos/drivers/filesystems/msfs/msfs.c

81 lines
2.5 KiB
C

/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
* FILE: drivers/filesystems/msfs/msfs.c
* PURPOSE: Mailslot filesystem
* PROGRAMMER: Eric Kohl
*/
/* INCLUDES ******************************************************************/
#include "msfs.h"
#define NDEBUG
#include <debug.h>
/* FUNCTIONS *****************************************************************/
NTSTATUS NTAPI
DriverEntry(PDRIVER_OBJECT DriverObject,
PUNICODE_STRING RegistryPath)
{
PMSFS_DEVICE_EXTENSION DeviceExtension;
PDEVICE_OBJECT DeviceObject;
UNICODE_STRING DeviceName;
NTSTATUS Status;
UNREFERENCED_PARAMETER(RegistryPath);
DPRINT("Mailslot FSD 0.0.1\n");
DriverObject->Flags = 0;
DriverObject->MajorFunction[IRP_MJ_CREATE] = MsfsCreate;
DriverObject->MajorFunction[IRP_MJ_CREATE_MAILSLOT] =
MsfsCreateMailslot;
DriverObject->MajorFunction[IRP_MJ_CLOSE] = MsfsClose;
DriverObject->MajorFunction[IRP_MJ_READ] = MsfsRead;
DriverObject->MajorFunction[IRP_MJ_WRITE] = MsfsWrite;
DriverObject->MajorFunction[IRP_MJ_QUERY_INFORMATION] =
MsfsQueryInformation;
DriverObject->MajorFunction[IRP_MJ_SET_INFORMATION] =
MsfsSetInformation;
// DriverObject->MajorFunction[IRP_MJ_DIRECTORY_CONTROL] =
// MsfsDirectoryControl;
// DriverObject->MajorFunction[IRP_MJ_FLUSH_BUFFERS] = MsfsFlushBuffers;
// DriverObject->MajorFunction[IRP_MJ_SHUTDOWN] = MsfsShutdown;
// DriverObject->MajorFunction[IRP_MJ_QUERY_SECURITY] =
// MsfsQuerySecurity;
// DriverObject->MajorFunction[IRP_MJ_SET_SECURITY] =
// MsfsSetSecurity;
DriverObject->MajorFunction[IRP_MJ_FILE_SYSTEM_CONTROL] =
MsfsFileSystemControl;
DriverObject->DriverUnload = NULL;
RtlInitUnicodeString(&DeviceName,
L"\\Device\\MailSlot");
Status = IoCreateDevice(DriverObject,
sizeof(MSFS_DEVICE_EXTENSION),
&DeviceName,
FILE_DEVICE_MAILSLOT,
0,
FALSE,
&DeviceObject);
if (!NT_SUCCESS(Status))
{
return Status;
}
/* initialize the device object */
DeviceObject->Flags |= DO_DIRECT_IO;
/* initialize device extension */
DeviceExtension = DeviceObject->DeviceExtension;
InitializeListHead(&DeviceExtension->FcbListHead);
KeInitializeMutex(&DeviceExtension->FcbListLock,
0);
return STATUS_SUCCESS;
}
/* EOF */