diff --git a/inc/winfsp/fsctl.h b/inc/winfsp/fsctl.h index 81b314cc..7dcc92e6 100644 --- a/inc/winfsp/fsctl.h +++ b/inc/winfsp/fsctl.h @@ -388,6 +388,7 @@ typedef struct UINT32 GrantedAccess; /* FILE_{READ_DATA,WRITE_DATA,etc.} */ FSP_FSCTL_FILE_INFO FileInfo; FSP_FSCTL_TRANSACT_BUF FileName; + UINT32 DisableCache:1; } Opened; /* IoStatus.Status == STATUS_REPARSE */ struct diff --git a/src/sys/create.c b/src/sys/create.c index 0ab32728..71843c5b 100644 --- a/src/sys/create.c +++ b/src/sys/create.c @@ -843,7 +843,8 @@ NTSTATUS FspFsvolCreateComplete( FileObject->FsContext = FileNode; FileObject->FsContext2 = FileDesc; if (FspTimeoutInfinity32 == FsvolDeviceExtension->VolumeParams.FileInfoTimeout && - !FlagOn(IrpSp->Parameters.Create.Options, FILE_NO_INTERMEDIATE_BUFFERING)) + !FlagOn(IrpSp->Parameters.Create.Options, FILE_NO_INTERMEDIATE_BUFFERING) && + !Response->Rsp.Create.Opened.DisableCache) /* enable caching! */ SetFlag(FileObject->Flags, FO_CACHE_SUPPORTED);