Fixed a typo.
[reactos.git] / reactos / ntoskrnl / io / create.c
index a942fb4..af9fdd1 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: create.c,v 1.50 2001/11/02 22:22:33 hbirr Exp $
+/* $Id: create.c,v 1.54 2002/04/01 22:18:01 hbirr Exp $
  *
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS kernel
@@ -139,7 +139,7 @@ IopCreateFile(PVOID                 ObjectBody,
                  DPRINT("Status %x\n", Status);
                  if (!NT_SUCCESS(Status))
                    {
-                      CPRINT("Failed to mount storage device (statux %x)\n",
+                      CPRINT("Failed to mount storage device (status %x)\n",
                              Status);
                       return (Status);
                    }
@@ -294,28 +294,28 @@ IoCreateStreamFileObject(PFILE_OBJECT FileObject,
  * 
  */
 NTSTATUS STDCALL
-IoCreateFile(
-       OUT     PHANDLE                 FileHandle,
-       IN      ACCESS_MASK             DesiredAccess,
-       IN      POBJECT_ATTRIBUTES      ObjectAttributes,
-       OUT     PIO_STATUS_BLOCK        IoStatusBlock,
-       IN      PLARGE_INTEGER          AllocationSize          OPTIONAL,
-       IN      ULONG                   FileAttributes,
-       IN      ULONG                   ShareAccess,
-       IN      ULONG                   CreateDisposition,
-       IN      ULONG                   CreateOptions,
-       IN      PVOID                   EaBuffer                OPTIONAL,
-       IN      ULONG                   EaLength,
-       IN      CREATE_FILE_TYPE        CreateFileType,
-       IN      PVOID                   ExtraCreateParameters   OPTIONAL,
-       IN      ULONG                   Options)
+IoCreateFile(OUT       PHANDLE                 FileHandle,
+            IN ACCESS_MASK             DesiredAccess,
+            IN POBJECT_ATTRIBUTES      ObjectAttributes,
+            OUT        PIO_STATUS_BLOCK        IoStatusBlock,
+            IN PLARGE_INTEGER          AllocationSize          OPTIONAL,
+            IN ULONG                   FileAttributes,
+            IN ULONG                   ShareAccess,
+            IN ULONG                   CreateDisposition,
+            IN ULONG                   CreateOptions,
+            IN PVOID                   EaBuffer                OPTIONAL,
+            IN ULONG                   EaLength,
+            IN CREATE_FILE_TYPE        CreateFileType,
+            IN PVOID                   ExtraCreateParameters   OPTIONAL,
+            IN ULONG                   Options)
 {
    PFILE_OBJECT                FileObject;
    NTSTATUS            Status;
    PIRP                        Irp;
-   KEVENT                      Event;
+   KEVENT              Event;
    PIO_STACK_LOCATION  StackLoc;
    IO_STATUS_BLOCK      IoSB;
+   IO_SECURITY_CONTEXT  SecurityContext;
    
    DPRINT("IoCreateFile(FileHandle %x, DesiredAccess %x, "
          "ObjectAttributes %x ObjectAttributes->ObjectName->Buffer %S)\n",
@@ -344,6 +344,15 @@ IoCreateFile(
      {
        FileObject->Flags |= FO_SYNCHRONOUS_IO;
      }
+
+   if( CreateOptions & FILE_NO_INTERMEDIATE_BUFFERING )
+     FileObject->Flags |= FO_NO_INTERMEDIATE_BUFFERING;
+
+   SecurityContext.SecurityQos = NULL; /* ?? */
+   SecurityContext.AccessState = NULL; /* ?? */
+   SecurityContext.DesiredAccess = DesiredAccess;
+   SecurityContext.FullCreateOptions = 0; /* ?? */
+   
    KeInitializeEvent(&FileObject->Lock, NotificationEvent, TRUE);
    KeInitializeEvent(&Event, NotificationEvent, FALSE);
    
@@ -388,12 +397,16 @@ IoCreateFile(
          break;
      }
    StackLoc->MinorFunction = 0;
-   StackLoc->Flags = 0;
+   StackLoc->Flags = Options;
    StackLoc->Control = 0;
    StackLoc->DeviceObject = FileObject->DeviceObject;
    StackLoc->FileObject = FileObject;
+   StackLoc->Parameters.Create.SecurityContext = &SecurityContext;
    StackLoc->Parameters.Create.Options = (CreateOptions & FILE_VALID_OPTION_FLAGS);
    StackLoc->Parameters.Create.Options |= (CreateDisposition << 24);
+   StackLoc->Parameters.Create.FileAttributes = FileAttributes;
+   StackLoc->Parameters.Create.ShareAccess = ShareAccess;
+   StackLoc->Parameters.Create.EaLength = EaLength;
    
    /*
     * Now call the driver and