Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenlfile.c
Go to the documentation of this file.
00001 /* $Id: lfile.c 48475 2010-08-07 05:02:58Z sir_richard $ 00002 * 00003 * COPYRIGHT: See COPYING in the top level directory 00004 * PROJECT: ReactOS system libraries 00005 * FILE: lib/kernel32/file/lfile.c 00006 * PURPOSE: Find functions 00007 * PROGRAMMER: Ariadne ( ariadne@xs4all.nl) 00008 * UPDATE HISTORY: 00009 * Created 01/11/98 00010 */ 00011 00012 #include <k32.h> 00013 #define NDEBUG 00014 #include <debug.h> 00015 00016 /* 00017 * @implemented 00018 */ 00019 long 00020 WINAPI 00021 _hread(HFILE hFile, LPVOID lpBuffer, long lBytes) 00022 { 00023 DWORD NumberOfBytesRead; 00024 00025 if (!ReadFile(LongToHandle(hFile), 00026 lpBuffer, 00027 (DWORD) lBytes, 00028 &NumberOfBytesRead, 00029 NULL)) 00030 { 00031 return HFILE_ERROR; 00032 } 00033 return NumberOfBytesRead; 00034 } 00035 00036 00037 /* 00038 * @implemented 00039 */ 00040 long 00041 WINAPI 00042 _hwrite(HFILE hFile, LPCSTR lpBuffer, long lBytes) 00043 { 00044 DWORD NumberOfBytesWritten; 00045 00046 if (lBytes == 0) 00047 { 00048 if (!SetEndOfFile((HANDLE) hFile)) 00049 { 00050 return HFILE_ERROR; 00051 } 00052 return 0; 00053 } 00054 if (!WriteFile(LongToHandle(hFile), 00055 (LPVOID) lpBuffer, 00056 (DWORD) lBytes, 00057 &NumberOfBytesWritten, 00058 NULL)) 00059 { 00060 return HFILE_ERROR; 00061 } 00062 return NumberOfBytesWritten; 00063 } 00064 00065 00066 /* 00067 * @implemented 00068 */ 00069 HFILE 00070 WINAPI 00071 _lopen(LPCSTR lpPathName, int iReadWrite) 00072 { 00073 DWORD dwAccess, dwSharing, dwCreation; 00074 00075 if (iReadWrite & OF_CREATE) 00076 { 00077 dwCreation = CREATE_ALWAYS; 00078 dwAccess = GENERIC_READ | GENERIC_WRITE; 00079 } 00080 else 00081 { 00082 dwCreation = OPEN_EXISTING; 00083 switch(iReadWrite & 0x03) 00084 { 00085 case OF_READ: dwAccess = GENERIC_READ; break; 00086 case OF_WRITE: dwAccess = GENERIC_WRITE; break; 00087 case OF_READWRITE: dwAccess = GENERIC_READ | GENERIC_WRITE; break; 00088 default: dwAccess = 0; break; 00089 } 00090 } 00091 00092 switch(iReadWrite & 0x70) 00093 { 00094 case OF_SHARE_EXCLUSIVE: dwSharing = 0; break; 00095 case OF_SHARE_DENY_WRITE: dwSharing = FILE_SHARE_READ; break; 00096 case OF_SHARE_DENY_READ: dwSharing = FILE_SHARE_WRITE; break; 00097 case OF_SHARE_DENY_NONE: 00098 case OF_SHARE_COMPAT: 00099 default: dwSharing = FILE_SHARE_READ | FILE_SHARE_WRITE; break; 00100 } 00101 00102 return (HFILE) CreateFileA(lpPathName, 00103 dwAccess, 00104 dwSharing, 00105 NULL, 00106 dwCreation, 00107 FILE_ATTRIBUTE_NORMAL, 00108 NULL); 00109 } 00110 00111 00112 /* 00113 * @implemented 00114 */ 00115 HFILE 00116 WINAPI 00117 _lcreat(LPCSTR lpPathName, int iAttribute) 00118 { 00119 HANDLE hFile; 00120 00121 iAttribute &= FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM; 00122 hFile = CreateFileA(lpPathName, 00123 GENERIC_READ | GENERIC_WRITE, 00124 (FILE_SHARE_READ | FILE_SHARE_WRITE), 00125 NULL, 00126 CREATE_ALWAYS, 00127 iAttribute, 00128 NULL); 00129 00130 return HandleToLong(hFile); 00131 } 00132 00133 00134 /* 00135 * @implemented 00136 */ 00137 int 00138 WINAPI 00139 _lclose(HFILE hFile) 00140 { 00141 return CloseHandle(LongToHandle(hFile)) ? 0 : HFILE_ERROR; 00142 } 00143 00144 00145 /* 00146 * @implemented 00147 */ 00148 LONG 00149 WINAPI 00150 _llseek(HFILE hFile, LONG lOffset, int iOrigin) 00151 { 00152 return SetFilePointer(LongToHandle(hFile), 00153 lOffset, 00154 NULL, 00155 (DWORD) iOrigin); 00156 } 00157 00158 /* EOF */ Generated on Fri May 25 2012 04:22:19 for ReactOS by
1.7.6.1
|