| Index: chrome_elf/create_file/chrome_create_file.h | 
| 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 0000000000000000000000000000000000000000..dac93af072dcd100b8b17cb7a3143dbceb055c9f | 
| --- /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_ | 
|  |