return STATUS_CANNOT_DELETE;
}
+ vfatAddToStat(DeviceExt, Fat.CreateHits, 1);
+
pFcb = DeviceExt->VolumeFcb;
if (pFcb->OpenHandleCount == 0)
FALSE);
if (!NT_SUCCESS(Status))
{
+ vfatAddToStat(DeviceExt, Fat.FailedCreates, 1);
return Status;
}
}
vfatAttachFCBToFileObject(DeviceExt, pFcb, FileObject);
DeviceExt->OpenHandleCount++;
pFcb->OpenHandleCount++;
+ vfatAddToStat(DeviceExt, Fat.SuccessfulCreates, 1);
Irp->IoStatus.Information = FILE_OPENED;
return STATUS_SUCCESS;
/* Try opening the file. */
if (!OpenTargetDir)
{
+ vfatAddToStat(DeviceExt, Fat.CreateHits, 1);
+
Status = VfatOpenFile(DeviceExt, &PathNameU, FileObject, RequestedDisposition, RequestedOptions, &ParentFcb);
}
else
PVFATFCB TargetFcb;
LONG idx, FileNameLen;
+ vfatAddToStat(DeviceExt, Fat.CreateHits, 1);
+
ParentFcb = (FileObject->RelatedFileObject != NULL) ? FileObject->RelatedFileObject->FsContext : NULL;
if (ParentFcb)
{
if (!NT_SUCCESS(Status))
{
VfatCloseFile(DeviceExt, FileObject);
+ vfatAddToStat(DeviceExt, Fat.FailedCreates, 1);
return Status;
}
}
vfatReleaseFCB(DeviceExt, ParentFcb);
}
+ if (NT_SUCCESS(Status))
+ {
+ vfatAddToStat(DeviceExt, Fat.SuccessfulCreates, 1);
+ }
+ else
+ {
+ vfatAddToStat(DeviceExt, Fat.FailedCreates, 1);
+ }
+
return Status;
}
{
vfatReleaseFCB(DeviceExt, ParentFcb);
}
+ vfatAddToStat(DeviceExt, Fat.FailedCreates, 1);
return Status;
}
if (!NT_SUCCESS(Status) && ParentFcb == NULL)
{
DPRINT1("VfatOpenFile failed for '%wZ', status %x\n", &PathNameU, Status);
+ vfatAddToStat(DeviceExt, Fat.FailedCreates, 1);
return Status;
}
if (TrailingBackslash)
{
vfatReleaseFCB(DeviceExt, ParentFcb);
+ vfatAddToStat(DeviceExt, Fat.FailedCreates, 1);
return STATUS_OBJECT_NAME_INVALID;
}
Attributes |= FILE_ATTRIBUTE_ARCHIVE;
if (!NT_SUCCESS(Status))
{
vfatReleaseFCB(DeviceExt, pFcb);
+ vfatAddToStat(DeviceExt, Fat.FailedCreates, 1);
return Status;
}
}
else
{
+ vfatAddToStat(DeviceExt, Fat.FailedCreates, 1);
return Status;
}
}
else
{
vfatReleaseFCB(DeviceExt, ParentFcb);
+ vfatAddToStat(DeviceExt, Fat.FailedCreates, 1);
return Status;
}
}
VfatCloseFile(DeviceExt, FileObject);
if (TrailingBackslash && !vfatFCBIsDirectory(pFcb))
{
+ vfatAddToStat(DeviceExt, Fat.FailedCreates, 1);
return STATUS_OBJECT_NAME_INVALID;
}
Irp->IoStatus.Information = FILE_EXISTS;
+ vfatAddToStat(DeviceExt, Fat.FailedCreates, 1);
return STATUS_OBJECT_NAME_COLLISION;
}
if (!NT_SUCCESS(Status))
{
VfatCloseFile(DeviceExt, FileObject);
+ vfatAddToStat(DeviceExt, Fat.FailedCreates, 1);
return Status;
}
}
vfatFCBIsDirectory(pFcb))
{
VfatCloseFile (DeviceExt, FileObject);
+ vfatAddToStat(DeviceExt, Fat.FailedCreates, 1);
return STATUS_FILE_IS_A_DIRECTORY;
}
if (BooleanFlagOn(RequestedOptions, FILE_DIRECTORY_FILE) &&
!vfatFCBIsDirectory(pFcb))
{
VfatCloseFile (DeviceExt, FileObject);
+ vfatAddToStat(DeviceExt, Fat.FailedCreates, 1);
return STATUS_NOT_A_DIRECTORY;
}
if (TrailingBackslash && !vfatFCBIsDirectory(pFcb))
{
VfatCloseFile (DeviceExt, FileObject);
+ vfatAddToStat(DeviceExt, Fat.FailedCreates, 1);
return STATUS_OBJECT_NAME_INVALID;
}
#ifndef USE_ROS_CC_AND_FS
DPRINT1("%d %d %d\n", Stack->Parameters.Create.SecurityContext->DesiredAccess & FILE_WRITE_DATA,
RequestedDisposition == FILE_OVERWRITE, RequestedDisposition == FILE_OVERWRITE_IF);
VfatCloseFile (DeviceExt, FileObject);
+ vfatAddToStat(DeviceExt, Fat.FailedCreates, 1);
return (BooleanFlagOn(RequestedOptions, FILE_DELETE_ON_CLOSE)) ? STATUS_CANNOT_DELETE
: STATUS_SHARING_VIOLATION;
}
if(!BooleanFlagOn(pFcb->Flags, FCB_IS_PAGE_FILE))
{
VfatCloseFile(DeviceExt, FileObject);
+ vfatAddToStat(DeviceExt, Fat.FailedCreates, 1);
return STATUS_INVALID_PARAMETER;
}
}
if (BooleanFlagOn(pFcb->Flags, FCB_IS_PAGE_FILE))
{
VfatCloseFile(DeviceExt, FileObject);
+ vfatAddToStat(DeviceExt, Fat.FailedCreates, 1);
return STATUS_INVALID_PARAMETER;
}
}
if (!NT_SUCCESS (Status))
{
VfatCloseFile(DeviceExt, FileObject);
+ vfatAddToStat(DeviceExt, Fat.FailedCreates, 1);
return Status;
}
}
/* FIXME : test write access if requested */
+ if (NT_SUCCESS(Status))
+ {
+ vfatAddToStat(DeviceExt, Fat.SuccessfulCreates, 1);
+ }
+ else
+ {
+ vfatAddToStat(DeviceExt, Fat.FailedCreates, 1);
+ }
+
return Status;
}