- get mpu401, parallel and ramdrv to work on msvc.
[reactos.git] / reactos / drivers / dd / ramdrv / ramdrv.c
index 37be0bb..57f1b7a 100644 (file)
@@ -1,10 +1,10 @@
 #include <ntddk.h>
+#include <ntdddisk.h>
 #include "ramdrv.h"
 #include <debug.h>
-#include <rosrtl/string.h>
 #include "../../lib/bzip2/bzlib.h"
 
-NTSTATUS STDCALL RamdrvDispatchDeviceControl(PDEVICE_OBJECT DeviceObject,
+static NTSTATUS STDCALL RamdrvDispatchDeviceControl(PDEVICE_OBJECT DeviceObject,
                                             PIRP Irp)
 {
    PIO_STACK_LOCATION IrpStack;
@@ -41,11 +41,11 @@ NTSTATUS STDCALL RamdrvDispatchDeviceControl(PDEVICE_OBJECT DeviceObject,
         Status = STATUS_INVALID_DEVICE_REQUEST;
    }
    Irp->IoStatus.Status = Status;
-   IoCompleteRequest(Irp, NT_SUCCESS(Status) ? IO_DISK_INCREMENT : IO_NO_INCREMENT);   
+   IoCompleteRequest(Irp, NT_SUCCESS(Status) ? IO_DISK_INCREMENT : IO_NO_INCREMENT);
    return Status;
 }
 
-NTSTATUS STDCALL RamdrvDispatchReadWrite(PDEVICE_OBJECT DeviceObject,
+static NTSTATUS STDCALL RamdrvDispatchReadWrite(PDEVICE_OBJECT DeviceObject,
                                         PIRP Irp)
 {
   PRAMDRV_DEVICE_EXTENSION devext = (PRAMDRV_DEVICE_EXTENSION)DeviceObject->DeviceExtension;
@@ -63,9 +63,9 @@ NTSTATUS STDCALL RamdrvDispatchReadWrite(PDEVICE_OBJECT DeviceObject,
     Stk->Parameters.Read.Length = devext->Size - Stk->Parameters.Read.ByteOffset.u.LowPart;
   if( Stk->MajorFunction == IRP_MJ_READ )
     RtlCopyMemory( MmGetSystemAddressForMdl( Irp->MdlAddress ),
-                  devext->Buffer + Stk->Parameters.Read.ByteOffset.u.LowPart,
+                  (PVOID)((ULONG_PTR)devext->Buffer + Stk->Parameters.Read.ByteOffset.u.LowPart),
                   Stk->Parameters.Read.Length );
-  else RtlCopyMemory( devext->Buffer + Stk->Parameters.Read.ByteOffset.u.LowPart,
+  else RtlCopyMemory( (PVOID)((ULONG_PTR)devext->Buffer + Stk->Parameters.Read.ByteOffset.u.LowPart),
                      MmGetSystemAddressForMdl( Irp->MdlAddress ),
                      Stk->Parameters.Read.Length );
   Irp->IoStatus.Status = STATUS_SUCCESS;
@@ -74,7 +74,7 @@ NTSTATUS STDCALL RamdrvDispatchReadWrite(PDEVICE_OBJECT DeviceObject,
   return STATUS_SUCCESS;
 }
 
-NTSTATUS STDCALL RamdrvDispatchOpenClose(PDEVICE_OBJECT DeviceObject,
+static NTSTATUS STDCALL RamdrvDispatchOpenClose(PDEVICE_OBJECT DeviceObject,
                                         PIRP Irp)
 {
    DPRINT("RamdrvDispatchOpenClose\n");
@@ -84,11 +84,12 @@ NTSTATUS STDCALL RamdrvDispatchOpenClose(PDEVICE_OBJECT DeviceObject,
 NTSTATUS STDCALL DriverEntry(IN PDRIVER_OBJECT DriverObject,
                             IN PUNICODE_STRING RegistryPath)
 {
-  UNICODE_STRING DeviceName = ROS_STRING_INITIALIZER(L"\\Device\\Ramdisk");
+  UNICODE_STRING DeviceName = RTL_CONSTANT_STRING(L"\\Device\\Ramdisk");
   NTSTATUS Status;
   PDEVICE_OBJECT DeviceObject;
   PRAMDRV_DEVICE_EXTENSION devext;
-  UNICODE_STRING LinkName;
+  UNICODE_STRING LinkName = RTL_CONSTANT_STRING(L"\\??\\Z:");
+  UNICODE_STRING ImageName = RTL_CONSTANT_STRING(L"\\Device\\Floppy0\\ramdisk.bz2");  
   HANDLE file;
   OBJECT_ATTRIBUTES objattr;
   IO_STATUS_BLOCK iosb;
@@ -97,18 +98,18 @@ NTSTATUS STDCALL DriverEntry(IN PDRIVER_OBJECT DriverObject,
   void *tbuff;
   unsigned int dstlen = 1024 * 1440;
   FILE_STANDARD_INFORMATION finfo;
-  DWORD err;
-  
+  ULONG err;
+
   DPRINT("Ramdisk driver\n");
-  
+
   /* Export other driver entry points... */
-  DriverObject->MajorFunction[IRP_MJ_CREATE] = (PDRIVER_DISPATCH)RamdrvDispatchOpenClose;
-  DriverObject->MajorFunction[IRP_MJ_CLOSE] = (PDRIVER_DISPATCH)RamdrvDispatchOpenClose;
-  DriverObject->MajorFunction[IRP_MJ_READ] = (PDRIVER_DISPATCH)RamdrvDispatchReadWrite;
-  DriverObject->MajorFunction[IRP_MJ_WRITE] = (PDRIVER_DISPATCH)RamdrvDispatchReadWrite;
-  DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = (PDRIVER_DISPATCH)RamdrvDispatchDeviceControl;
-  
-  
+  DriverObject->MajorFunction[IRP_MJ_CREATE] = RamdrvDispatchOpenClose;
+  DriverObject->MajorFunction[IRP_MJ_CLOSE] = RamdrvDispatchOpenClose;
+  DriverObject->MajorFunction[IRP_MJ_READ] = RamdrvDispatchReadWrite;
+  DriverObject->MajorFunction[IRP_MJ_WRITE] = RamdrvDispatchReadWrite;
+  DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = RamdrvDispatchDeviceControl;
+
+
   // create device and symbolic link
   Status = IoCreateDevice( DriverObject,
                           sizeof( RAMDRV_DEVICE_EXTENSION ),
@@ -128,18 +129,16 @@ NTSTATUS STDCALL DriverEntry(IN PDRIVER_OBJECT DriverObject,
       Status = STATUS_INSUFFICIENT_RESOURCES;
       goto cleandevice;
     }
-  RtlRosInitUnicodeStringFromLiteral( &LinkName, L"\\??\\Z:" );
   IoCreateSymbolicLink( &LinkName, &DeviceName );
 
-  RtlRosInitUnicodeStringFromLiteral( &LinkName, L"\\Device\\Floppy0\\ramdisk.bz2" );
   InitializeObjectAttributes( &objattr,
-                             &LinkName,
+                             &ImageName,
                              0,
                              0,
                              0 );
   allocsize.u.LowPart = allocsize.u.HighPart = 0;
 
-  Status = NtOpenFile( &file,
+  Status = ZwOpenFile( &file,
                         GENERIC_READ,
                         &objattr,
                         &iosb,
@@ -157,10 +156,10 @@ NTSTATUS STDCALL DriverEntry(IN PDRIVER_OBJECT DriverObject,
                              0,
                              0,
                              0 );
-  Status = NtCreateEvent( &event,
+  Status = ZwCreateEvent( &event,
                          0,
                          &objattr,
-                         TRUE,
+                         NotificationEvent,
                          FALSE );
   if( !NT_SUCCESS( Status ) )
     {
@@ -168,7 +167,7 @@ NTSTATUS STDCALL DriverEntry(IN PDRIVER_OBJECT DriverObject,
       goto cleanfile;
     }
 
-  Status = NtQueryInformationFile( file,
+  Status = ZwQueryInformationFile( file,
                                   &iosb,
                                   &finfo,
                                   sizeof( finfo ),
@@ -187,7 +186,7 @@ NTSTATUS STDCALL DriverEntry(IN PDRIVER_OBJECT DriverObject,
       goto cleanevent;
     }
 
-  Status = NtReadFile( file,
+  Status = ZwReadFile( file,
                       event,
                       0,
                       0,
@@ -202,7 +201,7 @@ NTSTATUS STDCALL DriverEntry(IN PDRIVER_OBJECT DriverObject,
       DPRINT( "Failed to read floppy\n" );
       goto cleantbuff;
     }
-  Status = NtWaitForSingleObject( event, FALSE, 0 );
+  Status = ZwWaitForSingleObject( event, FALSE, 0 );
   if( Status != STATUS_WAIT_0 || !NT_SUCCESS( iosb.Status ) )
     {
       DPRINT( "Failed to read floppy\n" );
@@ -221,16 +220,16 @@ NTSTATUS STDCALL DriverEntry(IN PDRIVER_OBJECT DriverObject,
   }
   else DbgPrint( "RAMDRV: Failed to decomparess image, error: %d\n", err );
   ExFreePool( tbuff );
-  NtClose( file );
-  NtClose( event );
+  ZwClose( file );
+  ZwClose( event );
   return STATUS_SUCCESS;
 
  cleantbuff:
   ExFreePool( tbuff );
  cleanevent:
-  NtClose( event );
+  ZwClose( event );
  cleanfile:
-  NtClose( file );
+  ZwClose( file );
  cleanbuffer:
   ExFreePool( devext->Buffer );