Don't try to create a file, if no parent fcb was found.

svn path=/trunk/; revision=19871
This commit is contained in:
Hartmut Birr 2005-12-04 15:09:07 +00:00
parent 8af0ab71a1
commit 1986a25e6b

View file

@ -439,7 +439,7 @@ VfatCreateFile ( PDEVICE_OBJECT DeviceObject, PIRP Irp )
ULONG RequestedDisposition, RequestedOptions;
PVFATCCB pCcb;
PVFATFCB pFcb = NULL;
PVFATFCB ParentFcb;
PVFATFCB ParentFcb = NULL;
PWCHAR c, last;
BOOLEAN PagingFileCreate = FALSE;
BOOLEAN Dots;
@ -543,8 +543,8 @@ VfatCreateFile ( PDEVICE_OBJECT DeviceObject, PIRP Irp )
* fail immediately
*/
if (Status == STATUS_OBJECT_PATH_NOT_FOUND ||
Status == STATUS_INVALID_PARAMETER ||
Status == STATUS_DELETE_PENDING)
Status == STATUS_INVALID_PARAMETER ||
Status == STATUS_DELETE_PENDING)
{
if (ParentFcb)
{
@ -552,6 +552,11 @@ VfatCreateFile ( PDEVICE_OBJECT DeviceObject, PIRP Irp )
}
return(Status);
}
if (!NT_SUCCESS(Status) && ParentFcb == NULL)
{
DPRINT1("VfatOpenFile faild for '%wZ', status %x\n", &PathNameU, Status);
return Status;
}
/*
* If the file open failed then create the required file
@ -564,11 +569,6 @@ VfatCreateFile ( PDEVICE_OBJECT DeviceObject, PIRP Irp )
RequestedDisposition == FILE_SUPERSEDE)
{
ULONG Attributes;
if (ParentFcb == NULL)
{
ParentFcb = vfatOpenRootFCB (DeviceExt);
ASSERT(ParentFcb != NULL);
}
Attributes = Stack->Parameters.Create.FileAttributes;
vfatSplitPathName(&PathNameU, NULL, &FileNameU);