diff options
Diffstat (limited to 'chrome_elf/create_file/chrome_create_file.h')
-rw-r--r-- | chrome_elf/create_file/chrome_create_file.h | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/chrome_elf/create_file/chrome_create_file.h b/chrome_elf/create_file/chrome_create_file.h new file mode 100644 index 0000000..dac93af --- /dev/null +++ b/chrome_elf/create_file/chrome_create_file.h @@ -0,0 +1,38 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_ELF_CREATE_FILE_CHROME_CREATE_FILE_H_ +#define CHROME_ELF_CREATE_FILE_CHROME_CREATE_FILE_H_ + +#include <windows.h> + +#include "chrome_elf/chrome_elf_types.h" + +// A CreateFileW replacement that will call NTCreateFile directly when the +// criteria defined in ShouldBypass() are satisfied for |lp_file_name|. +extern "C" HANDLE WINAPI CreateFileWRedirect( + LPCWSTR file_name, + DWORD desired_access, + DWORD share_mode, + LPSECURITY_ATTRIBUTES security_attributes, + DWORD creation_disposition, + DWORD flags_and_attributes, + HANDLE template_file); + +// Partial reimplementation of kernel32!CreateFile (very partial: only handles +// reading and writing to files in the User Data directory). +HANDLE CreateFileNTDLL( + LPCWSTR file_name, + DWORD desired_access, + DWORD share_mode, + LPSECURITY_ATTRIBUTES security_attributes, + DWORD creation_disposition, + DWORD flags_and_attributes, + HANDLE template_file); + +// Determines whether or not we should use our version of CreateFile, or the +// system version (only uses ours if we're writing to the user data directory). +bool ShouldBypass(LPCWSTR file_name); + +#endif // CHROME_ELF_CREATE_FILE_CHROME_CREATE_FILE_H_ |