DriverEntry(PDRIVER_OBJECT DriverObject,
PUNICODE_STRING RegistryPath)
/*
- * FUNCTION: Called by the system to initalize the driver
+ * FUNCTION: Called by the system to initialize the driver
* ARGUMENTS:
* DriverObject = object describing this driver
* RegistryPath = path to our configuration entries
NTSTATUS Status;
UNICODE_STRING DeviceName = RTL_CONSTANT_STRING(L"\\Cdfs");
+ UNREFERENCED_PARAMETER(RegistryPath);
+
DPRINT("CDFS 0.0.3\n");
Status = IoCreateDevice(DriverObject,
DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] =
CdfsDeviceControl;
+ CdfsGlobalData->FastIoDispatch.SizeOfFastIoDispatch = sizeof(FAST_IO_DISPATCH);
+ CdfsGlobalData->FastIoDispatch.FastIoCheckIfPossible = CdfsFastIoCheckIfPossible;
+ CdfsGlobalData->FastIoDispatch.FastIoRead = CdfsFastIoRead;
+ CdfsGlobalData->FastIoDispatch.FastIoWrite = CdfsFastIoWrite;
+ DriverObject->FastIoDispatch = &CdfsGlobalData->FastIoDispatch;
+
DriverObject->DriverUnload = NULL;
/* Cache manager */
ExReleaseResourceLite(&(Fcb->MainResource));
}
+
+BOOLEAN
+NTAPI
+CdfsFastIoCheckIfPossible(
+ _In_ PFILE_OBJECT FileObject,
+ _In_ PLARGE_INTEGER FileOffset,
+ _In_ ULONG Length,
+ _In_ BOOLEAN Wait,
+ _In_ ULONG LockKey,
+ _In_ BOOLEAN CheckForReadOperation,
+ _Out_ PIO_STATUS_BLOCK IoStatus,
+ _In_ PDEVICE_OBJECT DeviceObject)
+{
+ /* Deny FastIo */
+ UNREFERENCED_PARAMETER(FileObject);
+ UNREFERENCED_PARAMETER(FileOffset);
+ UNREFERENCED_PARAMETER(Length);
+ UNREFERENCED_PARAMETER(Wait);
+ UNREFERENCED_PARAMETER(LockKey);
+ UNREFERENCED_PARAMETER(CheckForReadOperation);
+ UNREFERENCED_PARAMETER(IoStatus);
+ UNREFERENCED_PARAMETER(DeviceObject);
+ return FALSE;
+}
+
+BOOLEAN
+NTAPI
+CdfsFastIoRead(
+ _In_ PFILE_OBJECT FileObject,
+ _In_ PLARGE_INTEGER FileOffset,
+ _In_ ULONG Length,
+ _In_ BOOLEAN Wait,
+ _In_ ULONG LockKey,
+ _Out_ PVOID Buffer,
+ _Out_ PIO_STATUS_BLOCK IoStatus,
+ _In_ PDEVICE_OBJECT DeviceObject)
+{
+ DBG_UNREFERENCED_PARAMETER(FileObject);
+ DBG_UNREFERENCED_PARAMETER(FileOffset);
+ DBG_UNREFERENCED_PARAMETER(Length);
+ DBG_UNREFERENCED_PARAMETER(Wait);
+ DBG_UNREFERENCED_PARAMETER(LockKey);
+ DBG_UNREFERENCED_PARAMETER(Buffer);
+ DBG_UNREFERENCED_PARAMETER(IoStatus);
+ DBG_UNREFERENCED_PARAMETER(DeviceObject);
+ return FALSE;
+}
+
+BOOLEAN
+NTAPI
+CdfsFastIoWrite(
+ _In_ PFILE_OBJECT FileObject,
+ _In_ PLARGE_INTEGER FileOffset,
+ _In_ ULONG Length,
+ _In_ BOOLEAN Wait,
+ _In_ ULONG LockKey,
+ _In_ PVOID Buffer,
+ _Out_ PIO_STATUS_BLOCK IoStatus,
+ _In_ PDEVICE_OBJECT DeviceObject)
+{
+ DBG_UNREFERENCED_PARAMETER(FileObject);
+ DBG_UNREFERENCED_PARAMETER(FileOffset);
+ DBG_UNREFERENCED_PARAMETER(Length);
+ DBG_UNREFERENCED_PARAMETER(Wait);
+ DBG_UNREFERENCED_PARAMETER(LockKey);
+ DBG_UNREFERENCED_PARAMETER(Buffer);
+ DBG_UNREFERENCED_PARAMETER(IoStatus);
+ DBG_UNREFERENCED_PARAMETER(DeviceObject);
+ return FALSE;
+}