mirror of
https://github.com/reactos/reactos.git
synced 2025-07-31 18:22:35 +00:00
Add the SYNCHRONIZE flag to the DesiredAccess parameter when using the flags FILE_SYNCHRONOUS_IO_(NON)ALERT in NtCreateFile or NtOpenFile, even if one uses DesiredAccess == GENERIC_xxx (which should map to some FILE_GENERIC_xxx already containing the SYNCHRONIZE flag).
Indeed, it appears after extended testing that, when calling from user-mode, Windows checks the real presence of the SYNCHRONIZE flag when using FILE_SYNCHRONOUS_IO_(NON)ALERT even if we pass any of the GENERIC_xxx access flags... Otherwise, when using FILE_GENERIC_(READ/WRITE) flags directly, there is no need to add the SYNCHRONIZE flag since it is already incorporated in it. See CORE-7361 for more details. svn path=/trunk/; revision=59514
This commit is contained in:
parent
29dcad6c4e
commit
072209491b
9 changed files with 21 additions and 13 deletions
|
@ -535,11 +535,11 @@ OpenFile(LPCSTR lpFileName,
|
|||
ObjectAttributes.SecurityQualityOfService = NULL;
|
||||
|
||||
errCode = NtOpenFile (&FileHandle,
|
||||
GENERIC_READ|SYNCHRONIZE,
|
||||
GENERIC_READ | SYNCHRONIZE,
|
||||
&ObjectAttributes,
|
||||
&IoStatusBlock,
|
||||
FILE_SHARE_READ,
|
||||
FILE_NON_DIRECTORY_FILE|FILE_SYNCHRONOUS_IO_NONALERT);
|
||||
FILE_NON_DIRECTORY_FILE | FILE_SYNCHRONOUS_IO_NONALERT);
|
||||
|
||||
RtlFreeHeap(RtlGetProcessHeap(), 0, FileNameString.Buffer);
|
||||
|
||||
|
|
|
@ -105,7 +105,7 @@ CreatePipe(PHANDLE hReadPipe,
|
|||
|
||||
/* Now try opening it for write access */
|
||||
Status = NtOpenFile(&WritePipeHandle,
|
||||
FILE_GENERIC_WRITE | SYNCHRONIZE,
|
||||
FILE_GENERIC_WRITE,
|
||||
&ObjectAttributes,
|
||||
&StatusBlock,
|
||||
FILE_SHARE_READ,
|
||||
|
|
|
@ -967,7 +967,7 @@ GetVolumeNameForVolumeMountPointW(
|
|||
|
||||
RtlInitUnicodeString(&NtFileName, L"\\??\\MountPointManager");
|
||||
InitializeObjectAttributes(&ObjectAttributes, &NtFileName, 0, NULL, NULL);
|
||||
Status = NtOpenFile(&FileHandle, FILE_GENERIC_READ | SYNCHRONIZE, &ObjectAttributes,
|
||||
Status = NtOpenFile(&FileHandle, FILE_GENERIC_READ, &ObjectAttributes,
|
||||
&Iosb, FILE_SHARE_READ | FILE_SHARE_WRITE,
|
||||
FILE_SYNCHRONOUS_IO_NONALERT);
|
||||
if (!NT_SUCCESS(Status))
|
||||
|
|
|
@ -887,7 +887,7 @@ AccpOpenNamedObject(LPWSTR pObjectName,
|
|||
NULL);
|
||||
|
||||
Status = NtOpenFile(Handle,
|
||||
DesiredAccess,
|
||||
DesiredAccess /* | SYNCHRONIZE */,
|
||||
&ObjectAttributes,
|
||||
&IoStatusBlock,
|
||||
FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
|
||||
|
|
|
@ -1618,7 +1618,11 @@ static NTSTATUS open_nt_file( HANDLE *handle, UNICODE_STRING *name )
|
|||
attr.ObjectName = name;
|
||||
attr.SecurityDescriptor = NULL;
|
||||
attr.SecurityQualityOfService = NULL;
|
||||
return NtOpenFile( handle, GENERIC_READ, &attr, &io, FILE_SHARE_READ, FILE_SYNCHRONOUS_IO_ALERT );
|
||||
return NtOpenFile(handle,
|
||||
GENERIC_READ | SYNCHRONIZE,
|
||||
&attr, &io,
|
||||
FILE_SHARE_READ,
|
||||
FILE_SYNCHRONOUS_IO_ALERT);
|
||||
}
|
||||
|
||||
static NTSTATUS get_module_filename( HMODULE module, UNICODE_STRING *str, USHORT extra_len )
|
||||
|
@ -1952,8 +1956,11 @@ static NTSTATUS lookup_winsxs(struct actctx_loader* acl, struct assembly_identit
|
|||
attr.SecurityDescriptor = NULL;
|
||||
attr.SecurityQualityOfService = NULL;
|
||||
|
||||
if (!NtOpenFile( &handle, GENERIC_READ, &attr, &io, FILE_SHARE_READ | FILE_SHARE_WRITE,
|
||||
FILE_DIRECTORY_FILE | FILE_SYNCHRONOUS_IO_NONALERT ))
|
||||
if (!NtOpenFile(&handle,
|
||||
GENERIC_READ | SYNCHRONIZE,
|
||||
&attr, &io,
|
||||
FILE_SHARE_READ | FILE_SHARE_WRITE,
|
||||
FILE_DIRECTORY_FILE | FILE_SYNCHRONOUS_IO_NONALERT))
|
||||
{
|
||||
sxs_ai = *ai;
|
||||
file = lookup_manifest_file( handle, &sxs_ai );
|
||||
|
|
|
@ -168,7 +168,7 @@ IopWriteLogFile(PWSTR LogText)
|
|||
NULL);
|
||||
|
||||
Status = ZwCreateFile(&FileHandle,
|
||||
FILE_APPEND_DATA,
|
||||
FILE_APPEND_DATA | SYNCHRONIZE,
|
||||
&ObjectAttributes,
|
||||
&IoStatusBlock,
|
||||
NULL,
|
||||
|
|
|
@ -161,7 +161,7 @@ IopStartRamdisk(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
|
|||
// Open a handle to the driver
|
||||
//
|
||||
Status = ZwOpenFile(&DriverHandle,
|
||||
GENERIC_ALL,
|
||||
GENERIC_ALL | SYNCHRONIZE,
|
||||
&ObjectAttributes,
|
||||
&IoStatusBlock,
|
||||
FILE_SHARE_READ | FILE_SHARE_WRITE,
|
||||
|
|
|
@ -3578,7 +3578,8 @@ KdbpCliInit()
|
|||
InitializeObjectAttributes(&ObjectAttributes, &FileName, 0, NULL, NULL);
|
||||
|
||||
/* Open the file */
|
||||
Status = ZwOpenFile(&hFile, FILE_READ_DATA, &ObjectAttributes, &Iosb, 0,
|
||||
Status = ZwOpenFile(&hFile, FILE_READ_DATA | SYNCHRONIZE,
|
||||
&ObjectAttributes, &Iosb, 0,
|
||||
FILE_NON_DIRECTORY_FILE | FILE_SYNCHRONOUS_IO_NONALERT |
|
||||
FILE_NO_INTERMEDIATE_BUFFERING);
|
||||
if (!NT_SUCCESS(Status))
|
||||
|
|
|
@ -391,10 +391,10 @@ KdbpSymLoadModuleSymbols(
|
|||
DPRINT("Attempting to open image: %wZ\n", FileName);
|
||||
|
||||
Status = ZwOpenFile(&FileHandle,
|
||||
FILE_READ_ACCESS,
|
||||
FILE_READ_ACCESS | SYNCHRONIZE,
|
||||
&ObjectAttributes,
|
||||
&IoStatusBlock,
|
||||
FILE_SHARE_READ|FILE_SHARE_WRITE,
|
||||
FILE_SHARE_READ | FILE_SHARE_WRITE,
|
||||
FILE_SYNCHRONOUS_IO_NONALERT);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue