diff --git a/reactos/drivers/fs/ms/create.c b/reactos/drivers/fs/ms/create.c index f9a2765abb5..a464bbb46b5 100644 --- a/reactos/drivers/fs/ms/create.c +++ b/reactos/drivers/fs/ms/create.c @@ -1,4 +1,4 @@ -/* $Id: create.c,v 1.6 2004/11/01 22:54:23 ion Exp $ +/* $Id: create.c,v 1.7 2004/12/23 23:56:33 ekohl Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -122,7 +122,7 @@ MsfsCreateMailslot(PDEVICE_OBJECT DeviceObject, IoStack = IoGetCurrentIrpStackLocation(Irp); DeviceExtension = DeviceObject->DeviceExtension; FileObject = IoStack->FileObject; - Buffer = (PMAILSLOT_CREATE_PARAMETERS)Irp->Tail.Overlay.AuxiliaryBuffer; + Buffer = IoStack->Parameters.CreateMailslot.Parameters; DPRINT("Mailslot name: %wZ\n", &FileObject->FileName); diff --git a/reactos/ntoskrnl/io/create.c b/reactos/ntoskrnl/io/create.c index e091023f111..97550954062 100644 --- a/reactos/ntoskrnl/io/create.c +++ b/reactos/ntoskrnl/io/create.c @@ -1,4 +1,4 @@ -/* $Id: create.c,v 1.75 2004/10/22 20:25:52 ekohl Exp $ +/* $Id: create.c,v 1.76 2004/12/23 23:55:56 ekohl Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -367,7 +367,7 @@ IoCreateFile(OUT PHANDLE FileHandle, if (!NT_SUCCESS(Status)) { DPRINT("ObCreateObject() failed! (Status %lx)\n", Status); - return(Status); + return Status; } RtlMapGenericMask(&DesiredAccess, @@ -383,7 +383,7 @@ IoCreateFile(OUT PHANDLE FileHandle, { DPRINT("ObInsertObject() failed! (Status %lx)\n", Status); ObDereferenceObject (FileObject); - return(Status); + return Status; } if (CreateOptions & FILE_SYNCHRONOUS_IO_ALERT) @@ -395,7 +395,7 @@ IoCreateFile(OUT PHANDLE FileHandle, FileObject->Flags |= FO_SYNCHRONOUS_IO; } - if( CreateOptions & FILE_NO_INTERMEDIATE_BUFFERING ) + if (CreateOptions & FILE_NO_INTERMEDIATE_BUFFERING) FileObject->Flags |= FO_NO_INTERMEDIATE_BUFFERING; SecurityContext.SecurityQos = NULL; /* ?? */ @@ -417,7 +417,7 @@ IoCreateFile(OUT PHANDLE FileHandle, if (Irp == NULL) { ZwClose(*FileHandle); - return (STATUS_UNSUCCESSFUL); + return STATUS_UNSUCCESSFUL; } //trigger FileObject/Event dereferencing @@ -425,7 +425,7 @@ IoCreateFile(OUT PHANDLE FileHandle, Irp->RequestorMode = PreviousMode; Irp->UserIosb = IoStatusBlock; Irp->AssociatedIrp.SystemBuffer = EaBuffer; - Irp->Tail.Overlay.AuxiliaryBuffer = (PCHAR)ExtraCreateParameters; + Irp->Tail.Overlay.AuxiliaryBuffer = NULL; Irp->Tail.Overlay.Thread = PsGetCurrentThread(); Irp->UserEvent = &FileObject->Event; if (AllocationSize) @@ -438,35 +438,46 @@ IoCreateFile(OUT PHANDLE FileHandle, * IRP and prepare it. */ StackLoc = IoGetNextIrpStackLocation(Irp); - switch (CreateFileType) - { - default: - case CreateFileTypeNone: - StackLoc->MajorFunction = IRP_MJ_CREATE; - break; - - case CreateFileTypeNamedPipe: - StackLoc->MajorFunction = IRP_MJ_CREATE_NAMED_PIPE; - break; - - case CreateFileTypeMailslot: - StackLoc->MajorFunction = IRP_MJ_CREATE_MAILSLOT; - break; - } StackLoc->MinorFunction = 0; StackLoc->Flags = (UCHAR)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 = (USHORT)FileAttributes; - StackLoc->Parameters.Create.ShareAccess = (USHORT)ShareAccess; - StackLoc->Parameters.Create.EaLength = EaLength; - + + switch (CreateFileType) + { + default: + case CreateFileTypeNone: + StackLoc->MajorFunction = IRP_MJ_CREATE; + StackLoc->Parameters.Create.SecurityContext = &SecurityContext; + StackLoc->Parameters.Create.Options = (CreateOptions & FILE_VALID_OPTION_FLAGS); + StackLoc->Parameters.Create.Options |= (CreateDisposition << 24); + StackLoc->Parameters.Create.FileAttributes = (USHORT)FileAttributes; + StackLoc->Parameters.Create.ShareAccess = (USHORT)ShareAccess; + StackLoc->Parameters.Create.EaLength = EaLength; + break; + + case CreateFileTypeNamedPipe: + StackLoc->MajorFunction = IRP_MJ_CREATE_NAMED_PIPE; + StackLoc->Parameters.CreatePipe.SecurityContext = &SecurityContext; + StackLoc->Parameters.CreatePipe.Options = (CreateOptions & FILE_VALID_OPTION_FLAGS); + StackLoc->Parameters.CreatePipe.Options |= (CreateDisposition << 24); + StackLoc->Parameters.CreatePipe.ShareAccess = (USHORT)ShareAccess; + StackLoc->Parameters.CreatePipe.Parameters = ExtraCreateParameters; + break; + + case CreateFileTypeMailslot: + StackLoc->MajorFunction = IRP_MJ_CREATE_MAILSLOT; + StackLoc->Parameters.CreateMailslot.SecurityContext = &SecurityContext; + StackLoc->Parameters.CreateMailslot.Options = (CreateOptions & FILE_VALID_OPTION_FLAGS); + StackLoc->Parameters.CreateMailslot.Options |= (CreateDisposition << 24); + StackLoc->Parameters.CreateMailslot.ShareAccess = (USHORT)ShareAccess; + StackLoc->Parameters.CreateMailslot.Parameters = ExtraCreateParameters; + break; + } + /* - * Now call the driver and + * Now call the driver and * possibly wait if it can * not complete the request * immediately. @@ -495,7 +506,7 @@ IoCreateFile(OUT PHANDLE FileHandle, DPRINT("Finished IoCreateFile() (*FileHandle) %x\n", (*FileHandle)); - return (Status); + return Status; }