mirror of
https://github.com/TalAloni/SMBLibrary.git
synced 2025-05-15 17:06:59 +02:00
NTDirectoryFileSystem: CreateFile: Workaround for using FILE_NO_INTERMEDIATE_BUFFERING and FILE_APPEND_DATA together
This commit is contained in:
parent
e5eb4e2f81
commit
fdaafdfa9c
1 changed files with 8 additions and 0 deletions
|
@ -161,6 +161,14 @@ namespace SMBLibrary.Win32
|
||||||
createOptions &= ~CreateOptions.FILE_SYNCHRONOUS_IO_NONALERT;
|
createOptions &= ~CreateOptions.FILE_SYNCHRONOUS_IO_NONALERT;
|
||||||
createOptions |= CreateOptions.FILE_SYNCHRONOUS_IO_ALERT;
|
createOptions |= CreateOptions.FILE_SYNCHRONOUS_IO_ALERT;
|
||||||
|
|
||||||
|
if ((createOptions & CreateOptions.FILE_NO_INTERMEDIATE_BUFFERING) > 0 &&
|
||||||
|
(desiredAccess.File & FileAccessMask.FILE_APPEND_DATA) > 0)
|
||||||
|
{
|
||||||
|
// FILE_NO_INTERMEDIATE_BUFFERING is incompatible with FILE_APPEND_DATA
|
||||||
|
// [MS-SMB2] 3.3.5.9 suggests setting FILE_APPEND_DATA to zero in this case.
|
||||||
|
desiredAccess = (AccessMask)((uint)desiredAccess & (uint)~FileAccessMask.FILE_APPEND_DATA);
|
||||||
|
}
|
||||||
|
|
||||||
NTStatus status = CreateFile(out fileHandle, out fileStatus, nativePath, desiredAccess, 0, fileAttributes, shareAccess, createDisposition, createOptions);
|
NTStatus status = CreateFile(out fileHandle, out fileStatus, nativePath, desiredAccess, 0, fileAttributes, shareAccess, createDisposition, createOptions);
|
||||||
handle = fileHandle;
|
handle = fileHandle;
|
||||||
return status;
|
return status;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue