1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef BASE_PLATFORM_FILE_H_ 6 #define BASE_PLATFORM_FILE_H_ 7 8 #include "build/build_config.h" 9 #if defined(OS_WIN) 10 #include <windows.h> 11 #endif 12 13 #include <string> 14 15 class FilePath; 16 17 namespace base { 18 19 #if defined(OS_WIN) 20 typedef HANDLE PlatformFile; 21 const PlatformFile kInvalidPlatformFileValue = INVALID_HANDLE_VALUE; 22 #elif defined(OS_POSIX) 23 typedef int PlatformFile; 24 const PlatformFile kInvalidPlatformFileValue = -1; 25 #endif 26 27 enum PlatformFileFlags { 28 PLATFORM_FILE_OPEN = 1, 29 PLATFORM_FILE_CREATE = 2, 30 PLATFORM_FILE_OPEN_ALWAYS = 4, // May create a new file. 31 PLATFORM_FILE_CREATE_ALWAYS = 8, // May overwrite an old file. 32 PLATFORM_FILE_READ = 16, 33 PLATFORM_FILE_WRITE = 32, 34 PLATFORM_FILE_EXCLUSIVE_READ = 64, // EXCLUSIVE is opposite of Windows SHARE 35 PLATFORM_FILE_EXCLUSIVE_WRITE = 128, 36 PLATFORM_FILE_ASYNC = 256, 37 PLATFORM_FILE_TEMPORARY = 512, // Used on Windows only 38 PLATFORM_FILE_HIDDEN = 1024, // Used on Windows only 39 PLATFORM_FILE_DELETE_ON_CLOSE = 2048 40 }; 41 42 // Creates or opens the given file. If PLATFORM_FILE_OPEN_ALWAYS is used, and 43 // |created| is provided, |created| will be set to true if the file was created 44 // or to false in case the file was just opened. 45 PlatformFile CreatePlatformFile(const FilePath& name, 46 int flags, 47 bool* created); 48 // Deprecated. 49 PlatformFile CreatePlatformFile(const std::wstring& name, 50 int flags, 51 bool* created); 52 53 // Closes a file handle 54 bool ClosePlatformFile(PlatformFile file); 55 56 } // namespace base 57 58 #endif // BASE_PLATFORM_FILE_H_ 59