From b15886585b8e7a7ac7b625543db69135ec0592d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Fri, 19 Jul 2013 14:03:46 +0000 Subject: [PATCH] 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... Part 1/X svn path=/trunk/; revision=59512 --- reactos/base/setup/usetup/bootsup.c | 46 ++++++++++++++-------------- reactos/base/setup/usetup/filesup.c | 4 +-- reactos/base/setup/usetup/inicache.c | 2 +- 3 files changed, 26 insertions(+), 26 deletions(-) diff --git a/reactos/base/setup/usetup/bootsup.c b/reactos/base/setup/usetup/bootsup.c index 17216ab327c..0c05cbb7ec0 100644 --- a/reactos/base/setup/usetup/bootsup.c +++ b/reactos/base/setup/usetup/bootsup.c @@ -683,7 +683,7 @@ SaveCurrentBootSector( NULL); Status = NtOpenFile(&FileHandle, - GENERIC_READ, + GENERIC_READ | SYNCHRONIZE, &ObjectAttributes, &IoStatusBlock, 0, @@ -720,7 +720,7 @@ SaveCurrentBootSector( NULL); Status = NtCreateFile(&FileHandle, - GENERIC_WRITE, + GENERIC_WRITE | SYNCHRONIZE, &ObjectAttributes, &IoStatusBlock, NULL, @@ -783,7 +783,7 @@ InstallFat16BootCodeToFile( NULL); Status = NtOpenFile(&FileHandle, - GENERIC_READ, + GENERIC_READ | SYNCHRONIZE, &ObjectAttributes, &IoStatusBlock, 0, @@ -828,7 +828,7 @@ InstallFat16BootCodeToFile( NULL); Status = NtOpenFile(&FileHandle, - GENERIC_READ, + GENERIC_READ | SYNCHRONIZE, &ObjectAttributes, &IoStatusBlock, 0, @@ -876,7 +876,7 @@ InstallFat16BootCodeToFile( NULL); Status = NtCreateFile(&FileHandle, - GENERIC_WRITE, + GENERIC_WRITE | SYNCHRONIZE, &ObjectAttributes, &IoStatusBlock, NULL, @@ -943,7 +943,7 @@ InstallFat32BootCodeToFile( NULL); Status = NtOpenFile(&FileHandle, - GENERIC_READ, + GENERIC_READ | SYNCHRONIZE, &ObjectAttributes, &IoStatusBlock, 0, @@ -988,7 +988,7 @@ InstallFat32BootCodeToFile( NULL); Status = NtOpenFile(&FileHandle, - GENERIC_READ, + GENERIC_READ | SYNCHRONIZE, &ObjectAttributes, &IoStatusBlock, 0, @@ -1039,7 +1039,7 @@ InstallFat32BootCodeToFile( NULL); Status = NtCreateFile(&FileHandle, - GENERIC_WRITE, + GENERIC_WRITE | SYNCHRONIZE, &ObjectAttributes, &IoStatusBlock, NULL, @@ -1081,7 +1081,7 @@ InstallFat32BootCodeToFile( NULL); Status = NtOpenFile(&FileHandle, - GENERIC_WRITE, + GENERIC_WRITE | SYNCHRONIZE, &ObjectAttributes, &IoStatusBlock, 0, @@ -1145,7 +1145,7 @@ InstallMbrBootCodeToDisk( NULL); Status = NtOpenFile(&FileHandle, - GENERIC_READ, + GENERIC_READ | SYNCHRONIZE, &ObjectAttributes, &IoStatusBlock, 0, @@ -1193,7 +1193,7 @@ InstallMbrBootCodeToDisk( NULL); Status = NtOpenFile(&FileHandle, - GENERIC_READ, + GENERIC_READ | SYNCHRONIZE, &ObjectAttributes, &IoStatusBlock, 0, @@ -1240,7 +1240,7 @@ InstallMbrBootCodeToDisk( NULL); Status = NtOpenFile(&FileHandle, - GENERIC_WRITE, + GENERIC_WRITE | SYNCHRONIZE, &ObjectAttributes, &IoStatusBlock, 0, @@ -1296,7 +1296,7 @@ InstallFat12BootCodeToFloppy(PWSTR SrcPath, NULL); Status = NtOpenFile(&FileHandle, - GENERIC_READ, + GENERIC_READ | SYNCHRONIZE, &ObjectAttributes, &IoStatusBlock, 0, @@ -1344,7 +1344,7 @@ InstallFat12BootCodeToFloppy(PWSTR SrcPath, NULL); Status = NtOpenFile(&FileHandle, - GENERIC_READ, + GENERIC_READ | SYNCHRONIZE, &ObjectAttributes, &IoStatusBlock, 0, @@ -1392,7 +1392,7 @@ InstallFat12BootCodeToFloppy(PWSTR SrcPath, NULL); Status = NtOpenFile(&FileHandle, - GENERIC_WRITE, + GENERIC_WRITE | SYNCHRONIZE, &ObjectAttributes, &IoStatusBlock, 0, @@ -1454,7 +1454,7 @@ InstallFat16BootCodeToDisk( NULL); Status = NtOpenFile(&FileHandle, - GENERIC_READ, + GENERIC_READ | SYNCHRONIZE, &ObjectAttributes, &IoStatusBlock, 0, @@ -1502,7 +1502,7 @@ InstallFat16BootCodeToDisk( NULL); Status = NtOpenFile(&FileHandle, - GENERIC_READ, + GENERIC_READ | SYNCHRONIZE, &ObjectAttributes, &IoStatusBlock, 0, @@ -1553,7 +1553,7 @@ InstallFat16BootCodeToDisk( NULL); Status = NtOpenFile(&FileHandle, - GENERIC_WRITE, + GENERIC_WRITE | SYNCHRONIZE, &ObjectAttributes, &IoStatusBlock, 0, @@ -1617,7 +1617,7 @@ InstallFat32BootCodeToDisk( NULL); Status = NtOpenFile(&FileHandle, - GENERIC_READ, + GENERIC_READ | SYNCHRONIZE, &ObjectAttributes, &IoStatusBlock, 0, @@ -1663,7 +1663,7 @@ InstallFat32BootCodeToDisk( NULL); Status = NtOpenFile(&FileHandle, - GENERIC_READ, + GENERIC_READ | SYNCHRONIZE, &ObjectAttributes, &IoStatusBlock, 0, @@ -1717,7 +1717,7 @@ InstallFat32BootCodeToDisk( NULL); Status = NtOpenFile(&FileHandle, - GENERIC_WRITE, + GENERIC_WRITE | SYNCHRONIZE, &ObjectAttributes, &IoStatusBlock, 0, @@ -1816,7 +1816,7 @@ UnprotectBootIni( NULL); Status = NtOpenFile(&FileHandle, - GENERIC_READ|GENERIC_WRITE, + GENERIC_READ | GENERIC_WRITE | SYNCHRONIZE, &ObjectAttributes, &IoStatusBlock, 0, @@ -1890,7 +1890,7 @@ ProtectBootIni( NULL); Status = NtOpenFile(&FileHandle, - GENERIC_READ|GENERIC_WRITE, + GENERIC_READ | GENERIC_WRITE | SYNCHRONIZE, &ObjectAttributes, &IoStatusBlock, 0, diff --git a/reactos/base/setup/usetup/filesup.c b/reactos/base/setup/usetup/filesup.c index ff80c157c37..030a4ffc394 100644 --- a/reactos/base/setup/usetup/filesup.c +++ b/reactos/base/setup/usetup/filesup.c @@ -198,7 +198,7 @@ SetupCopyFile(PWCHAR SourceFileName, NULL); Status = NtCreateFile(&FileHandleDest, - GENERIC_WRITE, + GENERIC_WRITE | SYNCHRONIZE, &ObjectAttributes, &IoStatusBlock, NULL, @@ -377,7 +377,7 @@ DoesFileExist(PWSTR PathName, NULL); Status = NtOpenFile(&FileHandle, - GENERIC_READ, + GENERIC_READ | SYNCHRONIZE, &ObjectAttributes, &IoStatusBlock, 0, diff --git a/reactos/base/setup/usetup/inicache.c b/reactos/base/setup/usetup/inicache.c index bcff69e1def..fa40dc1c165 100644 --- a/reactos/base/setup/usetup/inicache.c +++ b/reactos/base/setup/usetup/inicache.c @@ -1080,7 +1080,7 @@ IniCacheSave(PINICACHE Cache, NULL); Status = NtCreateFile(&FileHandle, - GENERIC_WRITE, + GENERIC_WRITE | SYNCHRONIZE, &ObjectAttributes, &IoStatusBlock, NULL,