libwinpr-file: added CreateFile/DeleteFile
This commit is contained in:
parent
4937d74c45
commit
0df7bcf632
@ -27,6 +27,82 @@
|
||||
|
||||
#ifndef _WIN32
|
||||
|
||||
#define FILE_READ_DATA 0x0001
|
||||
#define FILE_LIST_DIRECTORY 0x0001
|
||||
#define FILE_WRITE_DATA 0x0002
|
||||
#define FILE_ADD_FILE 0x0002
|
||||
#define FILE_APPEND_DATA 0x0004
|
||||
#define FILE_ADD_SUBDIRECTORY 0x0004
|
||||
#define FILE_CREATE_PIPE_INSTANCE 0x0004
|
||||
#define FILE_READ_EA 0x0008
|
||||
#define FILE_WRITE_EA 0x0010
|
||||
#define FILE_EXECUTE 0x0020
|
||||
#define FILE_TRAVERSE 0x0020
|
||||
#define FILE_DELETE_CHILD 0x0040
|
||||
#define FILE_READ_ATTRIBUTES 0x0080
|
||||
#define FILE_WRITE_ATTRIBUTES 0x0100
|
||||
|
||||
#define FILE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1FF)
|
||||
#define FILE_GENERIC_READ (STANDARD_RIGHTS_READ | FILE_READ_DATA | FILE_READ_ATTRIBUTES | FILE_READ_EA | SYNCHRONIZE)
|
||||
#define FILE_GENERIC_WRITE (STANDARD_RIGHTS_WRITE | FILE_WRITE_DATA | FILE_WRITE_ATTRIBUTES | FILE_WRITE_EA | FILE_APPEND_DATA | SYNCHRONIZE)
|
||||
#define FILE_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE | FILE_READ_ATTRIBUTES | FILE_EXECUTE | SYNCHRONIZE)
|
||||
|
||||
#define FILE_SHARE_READ 0x00000001
|
||||
#define FILE_SHARE_WRITE 0x00000002
|
||||
#define FILE_SHARE_DELETE 0x00000004
|
||||
|
||||
#define FILE_ATTRIBUTE_READONLY 0x00000001
|
||||
#define FILE_ATTRIBUTE_HIDDEN 0x00000002
|
||||
#define FILE_ATTRIBUTE_SYSTEM 0x00000004
|
||||
#define FILE_ATTRIBUTE_DIRECTORY 0x00000010
|
||||
#define FILE_ATTRIBUTE_ARCHIVE 0x00000020
|
||||
#define FILE_ATTRIBUTE_DEVICE 0x00000040
|
||||
#define FILE_ATTRIBUTE_NORMAL 0x00000080
|
||||
#define FILE_ATTRIBUTE_TEMPORARY 0x00000100
|
||||
#define FILE_ATTRIBUTE_SPARSE_FILE 0x00000200
|
||||
#define FILE_ATTRIBUTE_REPARSE_POINT 0x00000400
|
||||
#define FILE_ATTRIBUTE_COMPRESSED 0x00000800
|
||||
#define FILE_ATTRIBUTE_OFFLINE 0x00001000
|
||||
#define FILE_ATTRIBUTE_NOT_CONTENT_INDEXED 0x00002000
|
||||
#define FILE_ATTRIBUTE_ENCRYPTED 0x00004000
|
||||
#define FILE_ATTRIBUTE_VIRTUAL 0x00010000
|
||||
|
||||
#define FILE_NOTIFY_CHANGE_FILE_NAME 0x00000001
|
||||
#define FILE_NOTIFY_CHANGE_DIR_NAME 0x00000002
|
||||
#define FILE_NOTIFY_CHANGE_ATTRIBUTES 0x00000004
|
||||
#define FILE_NOTIFY_CHANGE_SIZE 0x00000008
|
||||
#define FILE_NOTIFY_CHANGE_LAST_WRITE 0x00000010
|
||||
#define FILE_NOTIFY_CHANGE_LAST_ACCESS 0x00000020
|
||||
#define FILE_NOTIFY_CHANGE_CREATION 0x00000040
|
||||
#define FILE_NOTIFY_CHANGE_SECURITY 0x00000100
|
||||
|
||||
#define FILE_ACTION_ADDED 0x00000001
|
||||
#define FILE_ACTION_REMOVED 0x00000002
|
||||
#define FILE_ACTION_MODIFIED 0x00000003
|
||||
#define FILE_ACTION_RENAMED_OLD_NAME 0x00000004
|
||||
#define FILE_ACTION_RENAMED_NEW_NAME 0x00000005
|
||||
|
||||
#define FILE_CASE_SENSITIVE_SEARCH 0x00000001
|
||||
#define FILE_CASE_PRESERVED_NAMES 0x00000002
|
||||
#define FILE_UNICODE_ON_DISK 0x00000004
|
||||
#define FILE_PERSISTENT_ACLS 0x00000008
|
||||
#define FILE_FILE_COMPRESSION 0x00000010
|
||||
#define FILE_VOLUME_QUOTAS 0x00000020
|
||||
#define FILE_SUPPORTS_SPARSE_FILES 0x00000040
|
||||
#define FILE_SUPPORTS_REPARSE_POINTS 0x00000080
|
||||
#define FILE_SUPPORTS_REMOTE_STORAGE 0x00000100
|
||||
#define FILE_VOLUME_IS_COMPRESSED 0x00008000
|
||||
#define FILE_SUPPORTS_OBJECT_IDS 0x00010000
|
||||
#define FILE_SUPPORTS_ENCRYPTION 0x00020000
|
||||
#define FILE_NAMED_STREAMS 0x00040000
|
||||
#define FILE_READ_ONLY_VOLUME 0x00080000
|
||||
#define FILE_SEQUENTIAL_WRITE_ONCE 0x00100000
|
||||
#define FILE_SUPPORTS_TRANSACTIONS 0x00200000
|
||||
#define FILE_SUPPORTS_HARD_LINKS 0x00400000
|
||||
#define FILE_SUPPORTS_EXTENDED_ATTRIBUTES 0x00800000
|
||||
#define FILE_SUPPORTS_OPEN_BY_FILE_ID 0x01000000
|
||||
#define FILE_SUPPORTS_USN_JOURNAL 0x02000000
|
||||
|
||||
#define FILE_FLAG_WRITE_THROUGH 0x80000000
|
||||
#define FILE_FLAG_OVERLAPPED 0x40000000
|
||||
#define FILE_FLAG_NO_BUFFERING 0x20000000
|
||||
@ -39,6 +115,12 @@
|
||||
#define FILE_FLAG_OPEN_NO_RECALL 0x00100000
|
||||
#define FILE_FLAG_FIRST_PIPE_INSTANCE 0x00080000
|
||||
|
||||
#define CREATE_NEW 1
|
||||
#define CREATE_ALWAYS 2
|
||||
#define OPEN_EXISTING 3
|
||||
#define OPEN_ALWAYS 4
|
||||
#define TRUNCATE_EXISTING 5
|
||||
|
||||
typedef union _FILE_SEGMENT_ELEMENT
|
||||
{
|
||||
PVOID64 Buffer;
|
||||
@ -47,6 +129,16 @@ typedef union _FILE_SEGMENT_ELEMENT
|
||||
|
||||
typedef VOID (*LPOVERLAPPED_COMPLETION_ROUTINE)(DWORD dwErrorCode, DWORD dwNumberOfBytesTransfered, LPOVERLAPPED lpOverlapped);
|
||||
|
||||
WINPR_API HANDLE CreateFileA(LPCSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes,
|
||||
DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile);
|
||||
|
||||
WINPR_API HANDLE CreateFileW(LPCWSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes,
|
||||
DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile);
|
||||
|
||||
WINPR_API BOOL DeleteFileA(LPCSTR lpFileName);
|
||||
|
||||
WINPR_API BOOL DeleteFileW(LPCWSTR lpFileName);
|
||||
|
||||
WINPR_API BOOL ReadFile(HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead,
|
||||
LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped);
|
||||
|
||||
@ -87,6 +179,14 @@ WINPR_API BOOL UnlockFile(HANDLE hFile, DWORD dwFileOffsetLow, DWORD dwFileOffse
|
||||
WINPR_API BOOL UnlockFileEx(HANDLE hFile, DWORD dwReserved, DWORD nNumberOfBytesToUnlockLow,
|
||||
DWORD nNumberOfBytesToUnlockHigh, LPOVERLAPPED lpOverlapped);
|
||||
|
||||
#ifdef UNICODE
|
||||
#define CreateFile CreateFileW
|
||||
#define DeleteFile DeleteFileW
|
||||
#else
|
||||
#define CreateFile CreateFileA
|
||||
#define DeleteFile DeleteFileA
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* WINPR_FILE_H */
|
||||
|
@ -32,6 +32,11 @@ set_target_properties(${MODULE_NAME} PROPERTIES VERSION ${WINPR_VERSION_FULL} SO
|
||||
if(WITH_MONOLITHIC_BUILD)
|
||||
|
||||
else()
|
||||
if(NOT WIN32)
|
||||
set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} winpr-handle)
|
||||
endif()
|
||||
|
||||
target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS})
|
||||
install(TARGETS ${MODULE_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||
endif()
|
||||
|
||||
|
@ -26,17 +26,20 @@
|
||||
/**
|
||||
* api-ms-win-core-file-l1-2-0.dll:
|
||||
*
|
||||
* CompareFileTime
|
||||
* CreateDirectoryA
|
||||
* CreateDirectoryW
|
||||
* CreateFile2
|
||||
* CreateFileA
|
||||
* CreateFileW
|
||||
* DefineDosDeviceW
|
||||
* CreateFile2
|
||||
* DeleteFileA
|
||||
* DeleteFileW
|
||||
* CreateDirectoryA
|
||||
* CreateDirectoryW
|
||||
* RemoveDirectoryA
|
||||
* RemoveDirectoryW
|
||||
* CompareFileTime
|
||||
* DefineDosDeviceW
|
||||
* DeleteVolumeMountPointW
|
||||
* FileTimeToLocalFileTime
|
||||
* LocalFileTimeToFileTime
|
||||
* FindClose
|
||||
* FindCloseChangeNotification
|
||||
* FindFirstChangeNotificationA
|
||||
@ -82,10 +85,7 @@
|
||||
* GetVolumeNameForVolumeMountPointW
|
||||
* GetVolumePathNamesForVolumeNameW
|
||||
* GetVolumePathNameW
|
||||
* LocalFileTimeToFileTime
|
||||
* QueryDosDeviceW
|
||||
* RemoveDirectoryA
|
||||
* RemoveDirectoryW
|
||||
* SetFileAttributesA
|
||||
* SetFileAttributesW
|
||||
* SetFileTime
|
||||
@ -109,6 +109,28 @@
|
||||
|
||||
#ifndef _WIN32
|
||||
|
||||
HANDLE CreateFileA(LPCSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes,
|
||||
DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
HANDLE CreateFileW(LPCWSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes,
|
||||
DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
BOOL DeleteFileA(LPCSTR lpFileName)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL DeleteFileW(LPCWSTR lpFileName)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL ReadFile(HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead,
|
||||
LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped)
|
||||
{
|
||||
|
@ -15,10 +15,13 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
set(MODULE_NAME "winpr-synch")
|
||||
set(MODULE_PREFIX "WINPR_SYNCH")
|
||||
|
||||
set(CMAKE_THREAD_PREFER_PTHREAD)
|
||||
find_required_package(Threads)
|
||||
|
||||
set(WINPR_SYNCH_SRCS
|
||||
set(${MODULE_PREFIX}_SRCS
|
||||
address.c
|
||||
barrier.c
|
||||
condition.c
|
||||
@ -35,14 +38,14 @@ set(WINPR_SYNCH_SRCS
|
||||
wait.c)
|
||||
|
||||
if(WITH_MONOLITHIC_BUILD)
|
||||
add_library(winpr-synch OBJECT ${WINPR_SYNCH_SRCS})
|
||||
add_library(${MODULE_NAME} OBJECT ${${MODULE_PREFIX}_SRCS})
|
||||
else()
|
||||
add_library(winpr-synch ${WINPR_SYNCH_SRCS})
|
||||
add_library(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS})
|
||||
endif()
|
||||
|
||||
set_target_properties(winpr-synch PROPERTIES VERSION ${WINPR_VERSION_FULL} SOVERSION ${WINPR_VERSION} PREFIX "lib")
|
||||
|
||||
set(WINPR_SYNCH_LIBS
|
||||
set(${MODULE_PREFIX}_LIBS
|
||||
${CMAKE_THREAD_LIBS_INIT}
|
||||
${CMAKE_DL_LIBS})
|
||||
|
||||
@ -51,13 +54,13 @@ if(${CMAKE_SYSTEM_NAME} MATCHES SunOS)
|
||||
endif()
|
||||
|
||||
if(WITH_MONOLITHIC_BUILD)
|
||||
set(WINPR_LIBS ${WINPR_LIBS} ${WINPR_SYNCH_LIBS} PARENT_SCOPE)
|
||||
set(WINPR_LIBS ${WINPR_LIBS} ${${MODULE_PREFIX}_LIBS} PARENT_SCOPE)
|
||||
else()
|
||||
if(NOT WIN32)
|
||||
set(WINPR_SYNCH_LIBS ${WINPR_SYNCH_LIBS} winpr-handle)
|
||||
set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} winpr-handle)
|
||||
endif()
|
||||
|
||||
target_link_libraries(winpr-synch ${WINPR_SYNCH_LIBS})
|
||||
install(TARGETS winpr-synch DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||
target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS})
|
||||
install(TARGETS ${MODULE_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||
endif()
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user